bei denen ein Port z.B. sowohl eine LED treiben als auch (zeitversetzt !) einen Schalter lesen soll. Dann gilt das Gesagte zum expliziten H-setzen.
Und das wollte ich ja nicht
So, ich habe jetzt mal mit dem 24C16 einen kleinen Datenlogger für LDR Messwerte gebaut.
Das Aufnehmen der Messwerte klappt auch schon, doch kann ich sie weder abspielen, noch, wenn ich den Conroller wieder einschalte neu beschreiben. Also ich kann es nur einmal beschreiben. Danach wird irgendwie der Controller dumm (beim wiederanschalten gibt es keinen Summerklang mehr und ich bekomme nichts mehr auf der seriellen Schnittstelle angezeigt )
Woran liegt es ??
Code:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 200
$swstack = 200
$framesize = 400
Config Portd.7 = Output
Config Pind.6 = Input
Pind.6 = 1
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
Sound Portd.7 , 400 , 450
Sound Portd.7 , 400 , 250
Sound Portd.7 , 400 , 450
Wait 2
If Pind.6 = 0 Then 'Taster für Moduswahl
'---- 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
Print
Print
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
Waitms 500
Next A
Sound Portd.7 , 400 , 450 'damit ich weiß, wann er fertig ist
Waitms 40
Sound Portd.7 , 400 , 450
Else
'--- 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
End If
End
Lesezeichen