Hallo Leute,
ich habe einen ATmega als Slave und einen Raspberry (RPI) als Master.
Jedoch klappt die Kommunikation noch nicht so wier ich möchte!!!
Das Programm für den (RPI) funktionier einigermassen.
zum Test habe ich nur mal in einer Schleife die Buffer hochzählen
lassen.
Programm des RPI befindet sich aufgrund der Größe im Anhang.
Der Ablauf ist in einer Schleife das ich bestimmte Buffer um 1
Hochzähle--> dem µC sende --> 2 sec warte --> vom µC empfange --> und
die Werte ausgebe.
mit auskommentierte Readfunktion
1 |
|
2 | // i2c_read(SLAVE_ADDRESS , I2C_BUFFER_SIZE , buffer);
|
funktioniert das Programm wie es soll.
Jedoch mit dem Lesen vom µC funktioniert es nicht!!
_*JETZT_MEINE_EIGENTLICHE_FRAGE_!*_
Wie muss ich den µC Configurieren damit er die Werte entgegennimmt
speichert und ich dann diese wieder mit dem RPI richtig abruffen kann?
Meine erster Versuch dazu sieht folgender massen aus!
1 | #include "twislave.h" //Biblotek aus dem Internet welche die twi. h verwendet!
|
2 | #include <avr/io.h>
|
3 | #include <avr/interrupt.h>
|
4 | #include <util/twi.h>
|
5 | #include <avr/pgmspace.h>
|
6 |
|
7 | #define SLAVE_ADRESSE 0x10 // I2C Adresse !! Für Raspberry
|
8 |
|
9 | int main (void)
|
10 | {
|
11 |
|
12 | TWAR |= (1<<TWA4) | (1<<TWGCE); //Adresse Setzen mitteles TWA1 & TWA3 == 0x10
|
13 | TWCR |= (1<<TWEA) | (1<<TWEN); // µC als Slave definieren
|
14 | init_twi_slave(SLAVE_ADRESSE);
|
15 | sei(); //Interrupts einschaltem
|
16 | }
|
17 |
|
18 |
|
19 | return 0;
|
20 | }
|