Forum: Mikrocontroller und Digitale Elektronik Bascom Atmega 8A i2c EEprom


von Otto (Gast)


Lesenswert?

Hallo Zusammen,

ich da noch ziemlicher Neuling was das Bascom programmieren angeht.
Ich habe da etwas mit einem I2C eeprom experimentiert und wenn ich 
gezielt
eine Adresse beschreibe oder lese, klappt das auch. Wenn ich aber nun 
aus einer Schleife lesen oder schreiben will, bekomme ich viele falsche 
Werte zurück. Wie kommt das zu stande?

Gruß Otto

von Julian B. (julinho)


Lesenswert?

Ich denke an Deiner Software liegt es nicht, ich vermute eher ein 
Compiler-Fehler oder ein Bug im Controller!

von Otto (Gast)


Lesenswert?

Ich habe hier mal den Code:
PS Nutze Atmega 8A, 24C128, Pollin Evalutionsboard, MySmartUSB light




$regfile = "m8adef.dat"
$crystal = 8000000
$baud = 9600



'SDA und SCL definieren
Config Sda = Portc.4                                        'I2C-Pins 
definieren
Config Scl = Portc.5
I2cinit

Dim X As Byte
Dim A As Byte
Dim B As Byte
Dim Lesen As Byte

Cls
Do
'---- schreibe in EEprom ----
For A = 1 To 10
Incr X                                                      '1 bis 
Überlauf zählen

I2cstart                                                    'Start I2C
I2cwbyte &HA0                                               'Sende Slave 
Adresse
I2cwbyte A                                                  'Sende 
Speicheradresse
I2cwbyte X                                                  'Sende Wert
I2cstop                                                     'Stop I2C
Waitms 10                                                   'warte 10ms


Print "ins EEprom = " ; X ; "  "                            ' Ausgabe 
der geschriebenen Werte am LCD
Waitms 500
Next A


'--- lesen vom EEprom ----
For B = 1 To 10

I2cstart                                                    'Start I2C
I2cwbyte &HA0                                               'sende Slave 
Adresse
I2cwbyte B                                                  'sende 
Speicheradresse

I2cstart                                                    'Start I2C
I2cwbyte &HA1                                               'sende Slave 
Adresse +1 für Lesen
I2crbyte Lesen , Nack                                       'lese 
Adresse vom EEprom
I2cstop                                                     'Stop I2C

Print "Lese  EEprom= " ; Lesen ; "  "                       'Ausgabe der 
EEprom Werte
Waitms 500
Next B

Loop
End

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.