Ich grüße euch,
habe vor kurzem mit Microcontrollern angefangen, leider verstehe ich
noch sehr wenig davon und habe einige Fragen...
Bevor ich anfange, arbeite mit einem PIC16F872 und mein Takt liegt (je
nach vorhanden Bauteilen zwischen 4-10 MHZ. Arbeite in Assembler
Habe auch schon das DATA SHEET gewälzt, aber werde nicht ganz so schlau
draus
Was möchte ich:
Mein Pic solle alle x Sekunden eine bestimmte aktion ausführen = port
löschen ( habe ich bis jetz über warte routinen gemacht), da mein pic
aber in der zwischenzeit weiterarbeiten und genug anderes zu erledigen
erkennen und bearbeitet hat, wollte ich das über nen timer und nen
interrupt machen. Grundüberlegung so machbar oder falsche
herangehensweise?
wo ist der unterschied der Timer0-2, ist es egal, welchen timer ich für
diese operation nehme?
gilt der prescaler nur den jeweiligen timer oder für alle oder
verlangsamt der den ganzen pic dann? Was genau bedeutet oscillator mode
und sync control bei timer 1? bzw rbpu und intedg bei timer 0?
was muss ich bei dem interrupt beachten?
wie sollte so etwas überhaupt aufgebaut sein (ein interrupt)?
reicht gie enable und t0ie enable im intcon?
woher weiß er welchen interrupt er ausführen soll? wie teste ich das,
muss ich doch testen oder?
reicht
1 | MOVWF W_TEMP
|
2 | SWAPF STATUS,W
|
3 | CLRF STATUS
|
4 | MOVWF STATUS_TEMP
|
5 | MOVF PCLATH, W
|
6 | MOVWF PCLATH_TEMP
|
7 | CLRF PCLATH ; Bank 0
|
8 |
|
9 | ;meine aktionen
|
10 |
|
11 | MOVF PCLATH_TEMP, W
|
12 | MOVWF PCLATH
|
13 | SWAPF STATUS_TEMP,W
|
14 | MOVWF STATUS
|
15 | SWAPF W_TEMP,F
|
16 | SWAPF W_TEMP,W
|
17 | retfie
|
reicht es wenn ich einfach im interrupt eine variable hochzähle bei
jeder ausführung und dann teste wie weit er gezählt hat und bei
bestimmter menge dann meine aktion ausführe?(so könnte ich meine
mehreren sekunden hin bekommen oder?)