Hallo zusammen,
ich weis es gibt schon viele fertige Programmbeispiele, zum Thema aber irgendwie steig ich da nicht so sehr durch. Ich möchte gern 2 Bytes (Werte von 0...255) von einem ATMega16 auf einen ATMega8 übertragen. Das ganze soll über TWI/I²C geschehen. Jetzt weis ich nicht so recht, wie ich dass programmieren soll. Schön wäre, wenn jemand mal ein Bespiel hätte, bei dem an einem µC eine Taste gredrückt wird und an einem anderen ne LED leuchtet. Die Programmierung für Master und Slave in C und so simple wie möglich gehalten. Ich denke sowas als Tutorial wäre echt hilfreich für viele User.
MFG Benny
So hab mal nach der Anleitung 2 Programme geschrieben. Der Master sendet beim ersten Byte 255 wenn Taster gedrückt wurde. Am Slave wird wenn dieses Byte übertragen wurde eine LED an PORTC angeschalten. ISt das so richtig?
init_twi_slave(1100000);
Du übergibst die Adresse als dezimale Konstante. Das wären also 1,1 Millionen!
Wenn du die Adresse als Binärzahl angeben willst, musst du sie mit 0b als solche kennzeichnen:
0b011000000
Im Master wird übrigends die Konstante SLAVE_ADRESSE 0x50 als Adresse genutzt, und nicht deine SLA_W = 11000001; (<<wieder fehlt das 0b)
Da also unterschiedliche Adressen benutzt werden, kann es gar nicht klappen.
PS: hab mal nen Beispielprogramm für den Slave mit ins Wiki gepackt. Da müsstest du nur sämlichen UART-Befahle rausschmeißen und in die while-Schleife deine Pin-Ausgabe packen.
Lesezeichen