PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme beim Pin Abfragen



paul-stanley
07.03.2008, 20:50
hallo zusammen,
nachdem ich nun über 1000 zeilen spagetticode reingehackt habe, stehe ich vor einem problem und ich weis absolut nicht an was das liegt.
ich muss meine ausgangszustände im eeprom sichern und nach dem neustart wieder einlesen. das geht auch soweit. da man offensichtlich kein bit sondern nur ein byte im eeprom ablegen kann, hab ich so angefangen:

Dim Test1 As Byte
$eeprom
Label1:
Data 1
$data

in der variable test soll eigentlich nur ne 0 oder ne 1 hinterlegt werden.
diesen zustand möchte ich nach dem neustart wieder einem ausgang zuordnen. Und da fängt das problem an. Wenn ich von Hand PINA.1=0 setze, leuchtet mein Ausgang (da gegen Masse geschaltet).
Wenn ich allerdings PINA.1= Test1 schreibe, gehen alle Ausgänge an. Auch die Logik der Abfrage läuft genau anders rum.
Komme hier nicht mehr weiter.

Do
Pina.1 = Test1

Convert_strg = Str(test1)
Call Lcd_print(convert_strg , 5 , 70 , 2 , 1 , 1 , Yellow , Black)


Debounce Ping.0 , 0 , Schalter1 , Sub
Debounce Pind.7 , 0 , Eepromschreiben , Sub

If Pina.1 = 0 Then
Call Lcd_print( " " , 128 , 1 , 2 , 1 , 1 , White , Black)
Call Lcd_print( "Laut" , 138 , 1 , 2 , 1 , 1 , White , Black)
Test1 = 0
End If

If Pina.1 = 1 Then
Call Lcd_print( "Leise" , 128 , 1 , 2 , 1 , 1 , White , Black)
Test1 = 1
End If
Loop


Schalter1:
Toggle Porta.1
Return

Eepromschreiben:
Writeeeprom Test1 , Label1
Return

paul-stanley
07.03.2008, 21:21
hab den fehler gefunden. hatte versehentlich die zuweisung von pina.1 in der do loop schleife :-)

Dirk
07.03.2008, 21:21
Hallo paul-stanley,

also, ich weiß nicht so ganz genau, was du da machen willst.
PA1 scheint einmal ein Eingang, dann wieder Ausgang zu sein, zumindest in deinem Code-Fragment.

Aber zu deiner eigentlichen Frage:
Das Speichern von Werten (z.B. in Test1) im EEPROM geht ja in Bascom leicht:
Dim Eeprom_test1 as Eram Byte
Dim Test1 As Byte

Am Programmanfang:
Test1 = Eeprom_test1
If Test1 = 255 Then 'EEPROM leer: Standardwerte annehmen!
Test1 = Standardwert
Eeprom_test1 = Standardwert
End If

Am Programmende bzw. da, wo Test1 gesichert werden soll:
Eeprom_test1 = Test1

Gruß Dirk

paul-stanley
07.03.2008, 21:30
hallo dirk,

danke für deine antwort. ich hab es gelöst bekommen und wir haben gleichzeitig gepostet :-)
sinn der sache war, den zustand vom PA1 im eprom zu sichern und beim neustart wieder herzustellen.
das war eine ganz schön geburt. aber nun weis ich wie der befehl toggle funktioniert und wie man werte ins eeprom schreibt und wieder ausliest.
wie mache ich es denn wenn ich zwischen 3 werten auf einem taster springen will ?
gruss martin

paul-stanley
07.03.2008, 21:56
..hab gerade mal in die eep datei geschaut....da steht ja gar kein wert drin..obwohl alles funktioniert.wie bekomme ich denn dann das erstemal meine werte rein wenn man da nichts editieren kann????