Also, ich konnte mir nun ein wenig selbst weiterhelfen (nach längerem testen...)
Zur Info noch mal ich verwende RN-Control, USB-AVR-Progger von Robotikhardware und ftdi Board für seriell 5V-Pegel
Das ist der Code:
Code:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 200
$swstack = 200
$framesize = 400
Config Portd.7 = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Waitms 10
'TWI konfigurieren
Config Sda = Portc.1
Config Scl = Portc.0
Config Twi = 100000
Dim X As Byte
Dim A As Byte
Dim B As Byte
Dim Lesen As Byte
Dim W As Word
Dim Inpu As Byte
Sound Portd.7 , 400 , 450
Sound Portd.7 , 400 , 250
Sound Portd.7 , 400 , 450
Wait 2
I2cinit
Waitms 10
Input "1 = schreiben und 0 = lesen" , Inpu
Select Case Inpu
Case 1
'---- schreibe in EEprom ----
For A = 1 To 10
W = Getadc(6) 'Messwert
Print W
X = W / 4 'damit der Speicher reicht
Print "Durch 4 geteilt: " ; X
Waitms 200
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
Print
Print
Waitms 500
Next A
Sound Portd.7 , 400 , 450 'damit ich weiß, wann er fertig ist
Waitms 40
Sound Portd.7 , 400 , 450
Case 0
'--- 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
Sound Portd.7 , 400 , 450 'damit ich weiß, wann er fertig ist
Waitms 40
Sound Portd.7 , 400 , 450
Next B
End Select
End
Und jetzt haltet euch gut fest ! Der Code (leicht verändert) funktioniert auch, aber was anderes ist ganz komisch:
Als ich es jetzt getestet hatte habe ich erst das Programm geproggt, seriell angesteckt, lesen oder schreiben gedrückt, den M32 machen lassen, dann ausgeschaltet, seriell abgesteckt, wieder angesteckt, wieder angeschaltet, und wieder einen Taster gedrückt.............
So hat der Code funktioniert. Wenn ich aber den seriellen Anschluss dran lasse und dann direkt wieder anschaltet funktioniert gar nichts mehr. ????
Meine Vermutung (die hört sich ein wenig blöde an): Es muss irgendwie die Leitung beim seriellen Kram "verstopft" sein oder irgend sowas ?????
Lesezeichen