Forum: Mikrocontroller und Digitale Elektronik I²C Übertragungsproblem


von CJ (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen.
Ich wage mich gerade an das Thema I²C. Doch es scheitert schon an 
Kleinigkeiten.

Gebe ich meinem Master die Variable 1
uint8_t    master_byte=1;
>schickt er diese zum Slave und er gibt sie auf PortD aus.

Wenn ich jedoch eine andere Variable nehme:
uint8_t    master_byte=2; oder 3
>dann kommt totale Gülle am PortD raus.

woran kann das liegen.?

Schonmal danke :)

von Jörg E. (jackfritt)


Lesenswert?

An der relativen Mondfeuchtigkeit?

Mal im Ernst "kompletten" Code posten?

von CJ (Gast)


Angehängte Dateien:

Lesenswert?

Ich dachte der Fehler ist so leicht zu beheben, dass das Stück Code 
gereicht hätte :)

von Matz (Gast)


Lesenswert?

hallo,

in TWImaster.c hab ich folgendes gefunden:
1
uint8_t TWIM_Write (uint8_t byte){
2
  uint8_t   twst;
3
/*
4
** Send data to the previously addressed device
5
*/
6
  TWDR = byte;
7
  TWCR = (1<<TWINT)|(1<<TWEN);
8
/*
9
** Wait until transmission completed
10
*/
11
//   while (!(TWCR & (1<<TWINT)))
12
//   PORTD|= (1<<PD3);
13
/*
14
** Check value of TWI Status Register. Mask prescaler bits
15
*/
16
  twst = TWSR & 0xF8;
17
  if (twst != TWI_MTX_DATA_ACK) return 1;
18
  return 0;
19
  }

sind die auskommentierten Zeilen nach ** Wait until transmission 
completed beabsichtigt? hier sollte doch der Master solange warten bis 
das byte gesendet wurde und auf das ACK / NACK vom Slave warten...

Gruß

von CJ (Gast)


Lesenswert?

Oh ja. Das wars.

Frag mich echt, wie ich das übersehen konnte.
Vielen Dank .!

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.