Forum: Mikrocontroller und Digitale Elektronik AVR I²C ATmega 88 (Salve) mit Raspberry PI (Master) Probleme beim µC


von Theater s. (kosti)


Angehängte Dateien:

Lesenswert?

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
}

von Theater s. (kosti)


Lesenswert?

Habe den Fehler gefunden
1
write(deviceHandle, 0x00, 0);
in der Redfunktion deshalb sidn die Werte um 1 versetzt!!

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.