Forum: Mikrocontroller und Digitale Elektronik XMEGA A3BU über I²C zu BMA180


von Fussi (Gast)


Lesenswert?

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
}

von Fussi (Gast)


Lesenswert?

Ich habe &twi mit &TWI_MASTER ersetzt, duch das durcheinander hing er. 
Nun bekomme ich ein I/O-Error.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.