Hallo CapSob,
schau doch in der Bascom-Hilfe mal nach WriteEeprom und ReadEeprom. Damit ist es ganz einfach.
Hallo Leute!
Ich möchte mit dem Timer0 die Zeit messen zwischen Taster drücken und Taster loslassen.
Hab hier im Forum/Wissensbereich auch schon was gefunden. Sollte kein Problem werden. \/
Controller ist der Mega8 mit internem Takt von 1MHz.
Jetzt aber zu meiner eigentlichen Frage: Ein Programm speicher ich ja im Flash-Speicher. Dann hab ich ja noch den EEPROM-Speicher übrig? Ich will halt kein externen Speicher verwenden, zB ein i2c-EEPROM...
Wenn ich jetzt die Variable nach meiner Zeitmessung habe, wie kann ich die dann zB im EEPROM speichern, dass wenn der uC aus/eingeschaltet wird (Stromlos gemacht) die Variable wieder einliest aus dem Speicher?
Die Zeitmessung und der Schreibvorgang der Variable wird dadurch aktiviert, wenn bevor der uC mit Strom versorgt wird, ein Jumper gesetzt wird. Wenn der Jumper vorher nicht geschlossen wird, sprint der uC gleich zur Hauptroutine.
Hoffe, ihr könnt mir weiterhelfen...
mfg,
René. [/img]
Hallo CapSob,
schau doch in der Bascom-Hilfe mal nach WriteEeprom und ReadEeprom. Damit ist es ganz einfach.
Gruß, Stefan
danke, genau das habe ich gesucht!
kann vllt jemand ein kleines beispiel machen, wenn ich zB den wert 5921 speichern und lesen will? thx!
mfg,
Capsob.
Hallo Capsob,
so wie es in der Hilfe steht:
Code:dim Wert as word 'schreiben: Wert = 5912 writeeeprom Wert, 1 'Wert wird an die ersten Stelle im Eeprom geschrieben 'Achtung: zweite Stelle wird mitbeschrieben, da der Wert ein Word ist und zwei Bytes belegt. 'lesen: readeeprom Wert, 1 'Der Inhalt von Byte 1 und 2 im Eeprom wird in die Variable Wert eingelesen
Gruß, Stefan
danke! so verstehe ichs...
Oder mach es so:
Dim b as ERAM byte
Dann wird die Variable direkt im EEP abgelegt.
Sollte man natürlich nur schreiben, wenn nötig...
Hallo!
Kann man das so schreiben?
vorallem mit dem "disable timer0", etc.?Code:'ATMega8, 1MHz Enable Interrupts Dim GemesseneZeit As Word GemesseneZeit = 1 Dim Gemessen As Bool Gemessen = 0 While TimeSet = 0 'TimeSet aktiv! Jumper wurde gesetzt vor dem Einschalten If BlinkerLinks = 0 Then 'Wenn Taster gedrückt, Timer0 aktivieren Config Timer0 = Timer, Prescale = 8 'Konfiguriere Timer0 bis 255 (8-Bit) Enable Timer0 'schalte den Timer0 ein On Timer0 ErhoehenTimer0 'verzweige bei Timer0 überlauf zu ErhoehenTimer0 Timer0 = 0 'Timer0 startet bei 0 While BlinkerLinks = 0 'Schleife solange, wie BlinkerLinks gedrückt ist Wend Gemessen = 1 'Variable kann geschrieben werden Disable Timer0 'Timer0 deaktivieren End If If Gemessen = 1 Then GemesseneZeit = GemesseneZeit / 4000 'Circa 1000 pro Sekunde = Millisekunden writeeeprom GemesseneZeit, 1 'GemesseneZeit ins EEPROM schreiben Gemessen = 0 'Variable zurücksetzen End If Wend readeeprom GemesseneZeit, 1 Do toggle PORTB.2 wait GemesseneZeit Loop End ErhoehenTimer0: 'ISR von Timer0 GemesseneZeit = GemesseneZeit + 1 'Millisekunden; 3906,26 in der Sekunde Return
please feedback!
mfg,
René.
Lesezeichen