-
-
Neuer Benutzer
Öfters hier
Zählen mit PIC? aaaaaaarg!?
Hi Leute hab hier ein kleines Problem:
Ich möchte (um es endlich zu kapieren) mit einem Taster an RA4 und einer LED auf RB0 an
einem PIC 16F84 einen Zähler bis 10 (mit dem Timer 0) zum laufen bekommen.
Ich dachte eigentlich, dass ich das mit dem Code hier hinbekomme.
Aber ich find wohl den Fehler nicht.
Code:
list p=16f84
#include <P16f84.INC>
;************************************************* ********
; bis 4 MHz: Power on Timer, kein Watchdog, XT-Oscillator*
__CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC
;************************************************* ********
Ini_con Equ B'00000000' ; TMR0 -> Intetupt disable
Ini_opt Equ B'00000010'
;************************************************* *********
Init bsf STATUS, RP0 ; Bank 1
movlw Ini_opt ; pull-up on
movwf OPTION_REG
movlw B'11111000' ; RA0 .. RA2 outputs, RA3, RA4 input
movwf TRISA ;
movlw B'00000000' ; PortB alle outputs
movwf TRISB
bcf STATUS, RP0 ; Bank 0
clrf PORTA
clrf PORTB
movlw Ini_con ; Interupt disable
movwf INTCON
;************************************************* *********
bsf STATUS, RP0 ; Bank 1
bsf OPTION_REG, T0CS; RA4-Takt zum Timer0
bsf OPTION_REG, PSA ; noch ohne Vorteiler
bcf STATUS, RP0 ; Bank 0
main
bcf INTCON, T0IF
movlw D'245' <hier versuch ich
movwf TMR0 <den Zähler ab245
movlw B'00000000' <zählen zu lassen
movwf PORTB
BTFSC INTCON, T0IF
goto main
led movlw B'1111111'
movwf PORTB
end
Also wenn von euch einer ne Ahnung hat woran es liegen könnte dann
bitte gebt mir Bescheid.
Weitere Infos:
der Pic liegt (richtig gepolt) an +5V
ich habe mit dem Oszi meine saubere Schwingung vom Quarz an Osz1
der Taster ist mit einem Pulldown an RA4 angeschlossen (10k)
Reset liegt über 1k auf +5V
Mfg
Christian
-
Erfahrener Benutzer
Roboter-Spezialist
Mmhhh,
dein Taster wird mit Sicherheit prellen. Zählen sollte der Timer aber trotzdem. Nach dem Anschalten der LED "rennt" der PIC aber den Rest des Programmspeichers durch und fängt irgendwann wieder von vorn an und schaltet die LED wieder aus.
BlackBox
-
Hi
also muss ich den Taster mit (z.B.nem Flipflop) entprellen und nochmal testen?
mfg
Christian
PS:
Dann müsst ich doch eigentlich mitm Oszi zumindest einen Nadelimpuls auf PortB feststellen können wenn ich den Taster mal betätige???
-
Hallo,
also ich sehe folgendes:
main
bcf INTCON, T0IF <<<<< hier clearst Du das INT-Flag
movlw D'245' <hier versuch ich
movwf TMR0 <den Zähler ab245
movlw B'00000000' <zählen zu lassen
movwf PORTB
BTFSC INTCON, T0IF <<<<< hier wird geskipt
goto main
led movlw B'1111111' <<<<< HI ausgeben
movwf PORTB
end <<<<<<<<< UND DANN ???????
Dein Programm läuft also genau einmal und anschliessend befindet sich der PIC im Nirwana. Bei END ist das Programm zu ende. Es wird nicht wieder von vorne gestartet!
Andreas
-
Erfahrener Benutzer
Roboter-Spezialist
@Andreas,
doch, wird es wenn der PC am Ende des Programmspeichers angekommen ist. Sollte man aber nicht machen (hab ich oben doch schon geschrieben).
-
@BlackBox
Es ist aber nicht sichergestellt, das der PC am Ende ankommt. Das kommt schliesslich darauf an, was nach dem Programm im Speicher steht. Und das können auch Reste eines alten Programmes sein.
Andreas
-
Erfahrener Benutzer
Roboter-Spezialist
@Andreas,
normalerweise wird der Flash komplett gelöscht, also mit NOPs ausgefüllt.
Wenn das aber nicht der Fall ist (evtl. bei Eigenbauprogrammern) dann hast Du damit Recht.
-
Neuer Benutzer
Öfters hier
@Andreas also eins versteh ich jetzt nicht ich habe nochmal nachgemessen
Es gibt beit betätigung des Tasters (auch wenn er prellt) ja in meinem Programm einen Punkt wo der Ausgang irgendwann hi werden würde
=> Es gibt aber mit dem Oszi keinen einzigen Impuls beim starten des PIC auch nach einem Reset nicht
=> Auch wenn der PIC nur einmal das Programm abarbeitet müsste er ja ein hi an PortB irgendwann bringen
thx
Christian
-
Neuer Benutzer
Öfters hier
Ich mal mal die Beschaltung auf
Christian
-
Erfahrener Benutzer
Roboter-Spezialist
Dein OPTION-Register stimmt nicht.
Der Timer zählt mit internem Takt und Vorteiler 1:4.
BlackBox
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen