Hallo, also ich bin relativ neu im PIC-Bereich, habe mir jetzt ein kleines Programm geschreiben mit welchem ich auch schon wunderbar per Taster meine LEDs nach belieben Ein-/Ausschalten. Jetzt wollte ich noch einen Timer einbauen damit sich die LED zB nach 30Sek wieder ausschaltet, leider schaff ich es einfach nicht den TMR0 meines PIC12F519 so einzurichten. hat vlt jemand paar tipps für mich? aus dem datasheet werd ich zZ einfahc nicht schlau, vlt hat jemand ein kleines programm snippet in welchem er den tmr0 richtig konfiguriert hat?! Thx schonmal im voraus!
30 Sekunden sind für einen Mikrocontroller schon eine verdammt lange Zeit. Wenn man davon ausgeht, dass Dein PIC mit 8 MHz getaktet wird, dann werden in den 30 Sekunden 60.000.000 Befehle ausgeführt. Selbst mit einem 1:256 Vorteiler ist der 8-Bit Timer hoffnungslos überfordert und wird ca. 916 Mal überlaufen. Du müsstest also mit einer (16-Bit-)Variable diese Timerüberläufe zählen und die LED nach dem 916. Überlauf abschalten.
danke schonmal für deine antwort! wäre es denn nicht möglich zB einen Timer zu machen, welcher 0,01Sek läuft und diesen dann in einer schleife aufrufen? um dann zB auf sekunden-minuten-stunden usw hochzählen zu können? wichtig wäre mir einfach einen Zähle rzu erhalten der "recht" genau auf ca 9 Stunden hochzählen kann, ob er dann am ende 9,2 Stunden oder 8,8 Stunden gelaufen is is eher nebensächlich, hauptsache ich komme mit bordmittel in etwa auf eine voreingestellte Zeit. Also meine Idee war bisher wie folgt :) zuerst Initialisiere ich mal den TMR0:
1 | Init_Timer: |
2 | clrwdt ;Clear Watchdog and prescaler |
3 | movlw b'11010111' ;Tmr clk intern, Prescaler Tmr0, Prescaler=256 |
4 | option |
5 | retlw 0 |
danach poll ich auf den Timer:
1 | movlw 0x25 |
2 | subwf TMR0,W |
3 | btfsc STATUS,C |
4 | goto Check_Step |
5 | clrw |
6 | movwf TMR0 |
7 | btfss Led1 |
8 | goto nxt |
9 | Led1_OFF |
10 | goto Check_Step |
11 | |
12 | nxt: |
13 | Led1_ON |
14 | goto Check_Step |
muss dazu sagen, das meiste davon hab ich mir iwie zusammengereimt, leidre find eich nirgends iwelche codeschnitzel, mit welchen ich etwas anfangen. Mein Problem is einfach noch das ich mir noch recht schwer mit dem asm code zurecht komme :) komme von der vb-seite, also ganz was anderes... vlt hat ja noch jemand nen tipp für mich?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.