Hallo ich versuche die Kommunikation zwischen dem XMEGA A3BU Board und
einem BMA über I²C herzustellen.
Ich hoffe mir kann jemand helfen ich sitze schon seit 2 Tagen dran und
habe so langsam keine Idee mehr. Ich benutze die ASF standard
funktionen, daher habe ich den Quellcode einfach mal angehangen. Das
programm bleibt bei der ersten write Funktion hängen. Über sämtliche
Ideen und Fragen würde ich mich freuen.
Viele Grüße und bester Dank im vorraus.
1 | /**
|
2 | * \file
|
3 | *
|
4 | * \brief Empty user application template
|
5 | *
|
6 | */
|
7 |
|
8 | /*
|
9 | * Include header files for all drivers that have been imported from
|
10 | * Atmel Software Framework (ASF).
|
11 | */
|
12 | #include <asf.h>
|
13 |
|
14 | #define TWI_MASTER TWIC
|
15 | #define TWI_MASTER_PORT PORTC
|
16 | #define TWI_SPEED 100000
|
17 | #define TWI_SLAVE_ADDR 0x80
|
18 | #define TWIS_SEND_BUFFER_SIZE 10
|
19 |
|
20 | int main (void)
|
21 | {
|
22 | board_init();
|
23 | sysclk_init();
|
24 | gfx_mono_init();
|
25 |
|
26 |
|
27 | twi_options_t twi_opt;
|
28 | twi_opt.speed=TWI_SPEED;
|
29 | twi_opt.chip=0x00;
|
30 | twi_opt.speed_reg=TWI_BAUD(sysclk_get_cpu_hz(), TWI_SPEED);
|
31 |
|
32 |
|
33 | TWI_t twi;
|
34 | char data[TWIS_SEND_BUFFER_SIZE];
|
35 |
|
36 | twi_package_t packet = {
|
37 | .addr_length = 1,
|
38 | .addr = TWI_SLAVE_ADDR,
|
39 | .chip = 0x01,
|
40 | .buffer = (void *)data,
|
41 | .length = TWIS_SEND_BUFFER_SIZE,
|
42 | .no_wait = false
|
43 | };
|
44 |
|
45 |
|
46 | TWI_MASTER_PORT.PIN0CTRL = PORT_OPC_WIREDANDPULL_gc;
|
47 | TWI_MASTER_PORT.PIN1CTRL = PORT_OPC_WIREDANDPULL_gc;
|
48 |
|
49 | sysclk_enable_peripheral_clock(&TWI_MASTER);
|
50 | twi_master_init(&twi,&twi_opt);
|
51 | twi_master_enable(&twi);
|
52 |
|
53 | ioport_set_pin_high(LCD_BACKLIGHT_ENABLE_PIN);
|
54 |
|
55 | for (int i = 0; i < TWIS_SEND_BUFFER_SIZE; i++) {
|
56 | data[i]=0;
|
57 | }
|
58 |
|
59 | while(1){
|
60 | gfx_mono_draw_string(data, 0, 0, &sysfont);
|
61 | twi_master_write(&TWI_MASTER,&packet);
|
62 | gfx_mono_draw_string(data, 0, 0, &sysfont);
|
63 | twi_master_read(&TWI_MASTER,&packet);
|
64 | }
|
65 | }
|