PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Funktionsfähiges Programm?



MelMan
29.05.2008, 10:51
Hi @ all

Habe grad ein kleines Programm entworfen aber leider nicht die Möglichkeit, es am µC zu testen. Jetzt wollte ich fragen ob einer mal eben drüber schauen kann ob das Programm so funktioniert. Also die Funktion ist folgende: Ich Habe an einem MEGA8 eine Port als Input und einen als Output beschaltet. An den Output kommt eine LED. Nun möchte ich dass wenn an dem Input-Port ein "high" Pegel liegt der Zähler die Zeit zählt wie lange der Pegel ansteht. Dieser Wert wird im EEPROM gespeichert. Ist der Pegel des Input-Port "low", soll der Output-Port geschaltet werden. Dabei wird der EEPROM ausgelesen und als "wait" immer zwischen Ein- u. Ausschalten gepackt. Wäre nett wenn ihr mir sagen könnt ob das so in etwa klappt wie ich mir das vorstelle=)

Code:
$regfile = "m8def.dat"
$hwstack = xx
$framesize = xx
$swstack = xx
$crystal = 16000000
$baud = 9600

Dim a As Integer

Config Timer1 = Timer, Prescale = 64
Timer1 = Disable
On Timer1 Isr_von_Timer1
Enable Interrupts
Config PORTC.2 = Output
Config PINC.3 = Input
PORTC.3 = 1



Do
Readeeprom a
If PINC.3 = 1 Then
Timer1 = Enable
Else
Timer1 = Disable
PORTC.2 = 1
Wait a
PORTC.2 = 0
Wait a
End If
Loop

End


Isr_von_Timer1
a = a + 1
Writeeeprom a
Return




Mfg

Jaecko
29.05.2008, 11:16
Hast du mit "Wait a" vor, a Sekunden zu warten? Wenn ja stimmts;
Wäre noch zu prüfen, welchen Wert a hat, wenn das Programm zum ersten Mal startet... wenn der EEPROM "formatiert" ist, sollte das 255 sein. Wenns blöd läuft wärs aber 0 und "Wait 0" bringt nen Fehler.

Hinweis noch: Für Dauerbetrieb evtl öfter mal die EEPROM-Zelle ändern; da diese nur so ein paar 10000x beschreibbar ist.

Vitis
29.05.2008, 11:49
hmmm .... writeeeprom a gefällt mir nicht besonders ...
übersichtlicher wirds mit eram variablen,
sprich dim a as eeprom byte or so.
dann kanste einfach a= 5 z.B.
Ausserdem hat das eeprom nur begrenzte schreibzyklen und
braucht auch noch 5ms fürs beschreiben.

eeprom ist im auslieferungszustand $ff

MelMan
29.05.2008, 11:58
wie kann ich denn die Zeile ändern, die ich beschreiben möchte??
Ansonsten schon mal vielen dank für das feedback und die tips=) ich werds mal ausprobieren

Jaecko
29.05.2008, 12:13
am einfachsten zum wechseln: vor der ERAM-Variable noch ne andere Byte-Variable deklarieren und die einfach nicht verwenden.
Dann wird die erste auf den "alten" Platz gestellt, die eigentliche dann an den dahinter.
Alternativ mit DIM ... as ... AT adresse.
Welche Adressen du da brauchst wüsst ich aber grad nicht so auswendig.

MelMan
29.05.2008, 12:56
ah cool super vielen dank für eure antowrten und tipps=)