Codevision CodeWizardAVR TWI Probleme

Gast #4324146
Lesenswert?

Hallo Forum,

Ich habe ein Problem mit CodeVisionAVR.

Ich starte ein Projekt mit dem CodeWizardAVR (XMEGA128) und möchte gerne 
auf einen PCF8574A schreiben. Leider funktioniert es nicht so wie ich 
gerne möchte.

Könnt ihr an der Software einen Fehler erkennen?

Danke für eure Hilfe!
Angehängte Dateien:
Gast #4346548
Lesenswert?

Hallo nochmal !

Ich habe das HowTodo von Kampis Elektroecke getestet. Ich bin jetzt 
soweit dass ich am SCL ein Signal sehe aber am SDA ist nichts - immer HI

INIT
void TWI_MasterInit(TWI_t *twi)
 {
   twi->MASTER.BAUD = TWI_BAUDRATE;
   twi->MASTER.CTRLA = TWI_MASTER_ENABLE_bm |
   TWI_MASTER_INTLVL_HI_gc |
   TWI_MASTER_RIEN_bm |
   TWI_MASTER_WIEN_bm;
   twi->MASTER.STATUS = TWI_MASTER_BUSSTATE_IDLE_gc;
 }


PCF-Schreiben
void PCF8574_send_byte(TWI_t *twi, char Adresse, char byte)
 {
   twi->MASTER.ADDR = (Adresse << 1) + 0;
   delay_us(500);
   twi->MASTER.DATA = byte;
 }


Main aufruf
PCF8574_send_byte(&TWIC, 0x38, 0x55);
delay_ms(500);
PCF8574_send_byte(&TWIC, 0x38, 0xAA);
delay_ms(500);


Habe ich wo nen Fehler?
Gast #4350967
Lesenswert?

Hallo!

Ne eben nicht...

Ich habe mein eigenes Init:

#define Taktfreuqenz 32000000
#define Takt_TWI 100000
#define TWI_BAUD(F_SYS, F_TWI) ((F_SYS / (2 * F_TWI)) - 5)
#define TWI_BAUDRATE TWI_BAUD(Taktfreuqenz, Takt_TWI)

void TWI_MasterInit(TWI_t *twi)
 {
   twi->MASTER.BAUD = TWI_BAUDRATE;
   twi->MASTER.CTRLA = TWI_MASTER_ENABLE_bm |
   TWI_MASTER_INTLVL_HI_gc |
   TWI_MASTER_RIEN_bm |
   TWI_MASTER_WIEN_bm;
   twi->MASTER.STATUS = TWI_MASTER_BUSSTATE_IDLE_gc;
 }

lg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren