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