I2C Übertragungsproblem

Gast #4020556
Lesenswert?
• ▲
▼
Guten abend,

Ich habe folgendes Problem:

Ich habe ein Master slave System aufgebaut. Der slave ist ein attiny45 
mit einer rgb Led. Der Master ein atmega64. Kommunikation über I2C 
funktioniert soweit in folgender Situation:

Atmega sendet via I2C einen rgb farbcode. Slave verarbeitet diesen auch 
richtig.

Nun will ich aber den farbcode senden und erst nach dem senden eines 
enable Codes die led einschalten. Also die led Datenverarbeitung in eine 
if Anweisung gepackt.
Nun mein Problem:

Ich sende vom Master den farbcode Über folgende Funktion:

void rgb_send(uint8_t adr, uint8_t red, uint8_t green, uint8_t blue){

If(!I2C_start((adr+I2C_write))){
I2C_write(0x01); //startbyte
I2C_write(red);
I2C_write(green);
I2C_write(blue);
I2C_stop();}}

Diese Funktion funktioniert auch Wenn der enable Code nicht benutzt wird
Nun sende ich nach dem selben Prinzip der obigen Funktion den enable 
Code in das nullte Byte. Dort schreibe ich zb eine 1 dezimal rein.
In der abfrage wird diese 1 über die if geprüft.

Im master sieht das folgendermaßen aus:

In einer Dauer while :

Status_send(1); //1=slaveadresse
Rgb_send(1,255,2255,255);

Hierbei hängt sich das Programm im Status sind auf. Der statuswert ist 
jedoch übermittelt. Jedoch läuft das Programm nicht mehr weiter somit 
erhält der slave keinen farbcode mehr.

Woran kann das liegen? Kann es eventuell dann liegen das ich nur ein 
Byte sende? Ansonsten sind die beiden sende Funktionen ja gleich.
Gast #4020662
Lesenswert?
• ▲
▼
Kommentar zu den Codes:

Sende ich vom Master einen ein rot also: rgb_send(1,255,0,0);
Hängt sich das Master Programm in diesem Schritt auf.
Sendet man jedoch rgb_send send(1,255,255,0); dann bleibt es nicht 
hängen.
Das selbe bei dem Status Send. Da hängt sich der Master auf wenn ich nur 
ein Byte schicke. Schicke ich jedoch noch 1 farbcode Byte dann bleibt es 
nicht hängen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.