00001
00081
00082 #include <avr32/io.h>
00083 #include "compiler.h"
00084 #include "print_funcs.h"
00085 #include "board.h"
00086 #include "power_clocks_lib.h"
00087 #include "twim.h"
00088 #include "flashc.h"
00089 #include "gpio.h"
00090 #include "cycle_counter.h"
00091 #include "intc.h"
00092 #include "at24cxx.h"
00093 #include "conf_at24cxx.h"
00094 #include <stdio.h>
00095
00096 #define FCPU_HZ 60000000
00097 #define FPBA_HZ 60000000
00098
00101
00102 static pcl_freq_param_t pcl_freq_param =
00103 {
00104 .cpu_f = FCPU_HZ,
00105 .pba_f = FPBA_HZ,
00106 .osc0_f = FOSC0,
00107 .osc0_startup = OSC0_STARTUP
00108 };
00110
00113 static void init_sys_clocks(void)
00114 {
00115 if (pcl_configure_clocks(&pcl_freq_param) != PASS)
00116 while(1);
00117 }
00118
00120 static void twi_init(void)
00121 {
00122 const gpio_map_t AT24CXX_TWI_GPIO_MAP =
00123 {
00124 {AT24CXX_TWI_SCL_PIN, AT24CXX_TWI_SCL_FUNCTION},
00125 {AT24CXX_TWI_SDA_PIN, AT24CXX_TWI_SDA_FUNCTION}
00126 };
00127
00128 const twi_options_t AT24CXX_TWI_OPTIONS =
00129 {
00130 .pba_hz = FPBA_HZ,
00131 .speed = AT24CXX_TWI_MASTER_SPEED,
00132 .chip = AT24CXX_TWI_ADDRESS,
00133 .smbus = FALSE,
00134 };
00135
00136
00137 gpio_enable_module(AT24CXX_TWI_GPIO_MAP,
00138 sizeof(AT24CXX_TWI_GPIO_MAP) / sizeof(AT24CXX_TWI_GPIO_MAP[0]));
00139
00140 twi_master_init(AT24CXX_TWI, &AT24CXX_TWI_OPTIONS);
00141 }
00142
00143
00144 int main(void) {
00145 init_sys_clocks();
00146 init_dbg_rs232(FPBA_HZ);
00147 print_dbg("AT24CXX Example\n");
00148
00149 INTC_init_interrupts();
00150
00151
00152 gpio_set_gpio_pin(LED0_GPIO);
00153 gpio_set_gpio_pin(LED1_GPIO);
00154 gpio_set_gpio_pin(LED2_GPIO);
00155 gpio_set_gpio_pin(LED3_GPIO);
00156 twi_init();
00157
00158
00159
00160
00161
00162 cpu_delay_ms(230, FCPU_HZ);
00163
00164 at24cxx_init(FCPU_HZ);
00165 print_dbg("Write @0: 0x55 - @1: 0xAA");
00166 at24cxx_write_byte(0,0x55);
00167 at24cxx_write_byte(1,0xaa);
00168 print_dbg("- Done\n");
00169
00170 U8 tmp1,tmp2;
00171 tmp1 = at24cxx_read_byte(0);
00172 tmp2 = at24cxx_read_byte(1);
00173 print_dbg("Read @0: 0x");
00174 print_dbg_hex(tmp1);
00175 print_dbg("- @1: 0x");
00176 print_dbg_hex(tmp2);
00177 while(TRUE);
00178 }