bart
18.07.2007, 20:39
Hallo,
ich bin gerade etwas am verzweifeln, möchte ein Avisaro Wlan Modul per I2c ansprechen.
Ich benutze die I2C Bibliothek in TWI Form von P. Fleury
Ich kann problemlos auf einen PCF8574 verbinden.
Problem ist ich bekomme keine Verbindung. Ich habe über ein LED-Blinken herausbekommen, dass ich bis zum absenden der I2C-Adresse komme und dann gehts nicht weiter :-(
Bitte um Hilfe
Hier mein Code:
char buffi[20];
int main(void) {
DDRC = 0xFF;
PORTC = 0x00;
i2c_init();
Delay(4000);
I2cRead(73, 5);
// I2cSend(73, 5);
}
// *** Kommunikationsfunktion ***
uint8_t I2cRead(uint8_t device, uint16_t how_much) {
uint16_t size;
uint8_t w = 0;
// *** LED blinken lassen ***
PORTD |= (1<<DDD2);
Delay(1000);
PORTD &= ~(1<<DDD2);
i2c_start(device<<1 | 1);
// *** LED blinken lassen ***
Delay(400);
PORTD |= (1<<DDD2);
Delay(100);
PORTD &= ~(1<<DDD2);
Delay(400);
// -> Bis hier hin gehts size = i2c_readAck(); läuft sich tot
size = i2c_readAck();
// *** LED blinken lassen ***
Delay(400);
PORTD |= (1<<DDD2);
Delay(100);
PORTD &= ~(1<<DDD2);
Delay(400);
size <<= 8;
size |= i2c_readAck();
// *** LED blinken lassen ***
Delay(400);
PORTD |= (1<<DDD2);
Delay(100);
PORTD &= ~(1<<DDD2);
Delay(400);
if (size == 0 || size == 0xffff) {
} else {
while (size && how_much){
if (size == 1 || how_much == 1) {
buffi[w] = (uint8_t) i2c_readNak;
} else {
buffi[w] = (uint8_t) i2c_readAck;
}
// Alle Zähler und Pointer weiterzählen
w++;
cnt++;
size--;
how_much--;
}
}
i2c_stop();
return 0;
}
uint8_t I2cSend(uint8_t device, uint8_t data) {
...
}
ich bin gerade etwas am verzweifeln, möchte ein Avisaro Wlan Modul per I2c ansprechen.
Ich benutze die I2C Bibliothek in TWI Form von P. Fleury
Ich kann problemlos auf einen PCF8574 verbinden.
Problem ist ich bekomme keine Verbindung. Ich habe über ein LED-Blinken herausbekommen, dass ich bis zum absenden der I2C-Adresse komme und dann gehts nicht weiter :-(
Bitte um Hilfe
Hier mein Code:
char buffi[20];
int main(void) {
DDRC = 0xFF;
PORTC = 0x00;
i2c_init();
Delay(4000);
I2cRead(73, 5);
// I2cSend(73, 5);
}
// *** Kommunikationsfunktion ***
uint8_t I2cRead(uint8_t device, uint16_t how_much) {
uint16_t size;
uint8_t w = 0;
// *** LED blinken lassen ***
PORTD |= (1<<DDD2);
Delay(1000);
PORTD &= ~(1<<DDD2);
i2c_start(device<<1 | 1);
// *** LED blinken lassen ***
Delay(400);
PORTD |= (1<<DDD2);
Delay(100);
PORTD &= ~(1<<DDD2);
Delay(400);
// -> Bis hier hin gehts size = i2c_readAck(); läuft sich tot
size = i2c_readAck();
// *** LED blinken lassen ***
Delay(400);
PORTD |= (1<<DDD2);
Delay(100);
PORTD &= ~(1<<DDD2);
Delay(400);
size <<= 8;
size |= i2c_readAck();
// *** LED blinken lassen ***
Delay(400);
PORTD |= (1<<DDD2);
Delay(100);
PORTD &= ~(1<<DDD2);
Delay(400);
if (size == 0 || size == 0xffff) {
} else {
while (size && how_much){
if (size == 1 || how_much == 1) {
buffi[w] = (uint8_t) i2c_readNak;
} else {
buffi[w] = (uint8_t) i2c_readAck;
}
// Alle Zähler und Pointer weiterzählen
w++;
cnt++;
size--;
how_much--;
}
}
i2c_stop();
return 0;
}
uint8_t I2cSend(uint8_t device, uint8_t data) {
...
}