Pic12f629 och Watchdog Timer problem

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Pic12f629 och Watchdog Timer problem

Inlägg av PopUnoNkoK »

Jag har problem med att INTE använda Watchdog timern på en PIC12f629.

Mina configbitar ser ut såhär:

Kod: Markera allt

__config	_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON 
Alltså WatchDog Timer OFF.

Mitt OPTION_REG ser ut så här:

Kod: Markera allt

movlw   b'00000111'
        Banksel OPTION_REG  
        movwf   OPTION_REG 
Alltså 1:256 prescaler som är satt till TMR0 alltså "0" på bit 3 i OPTION_REG:en.

Trots detta så när jag kör MPLABSIM så säger den att programmet stängts av pga WatchDog timern Expired.

Jag antar att det är något enkelt som jag missat men jag kan inte komma på vad.

Någon som har ett förslag.

PS. det är första gången jag testar att programera en annan processor än P16F628A. Ds.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pic12f629 och Watchdog Timer problem

Inlägg av sodjan »

Posta gärna ett litet "test-case" som visar problemet så att fler kan
titta på det (i t.ex MPSIM)...
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Pic12f629 och Watchdog Timer problem

Inlägg av PopUnoNkoK »

Det kan jag absolut fixa. Det får dock vänta tills jag kommer hem i natt.

Jag förstod att jag skulle stöta på lite bekymmer första gången jag bytte processor men detta problem hade jag inte räknat med. Eftersom jag haft problem med MPLAB SIM tidigare så blir jag direkt lur på att det kan vara den. :humm:

Min kod kommer upp efter 12 ikväll.

Ps Är förståss ändå intresserad om någon har något förslag på vad det kan vara trots att jag inte tillhandahållit koden. :) Ds.
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: Pic12f629 och Watchdog Timer problem

Inlägg av v-g »

Du har inte ställt in så att du configurerar CONFIG bitarna i kompilatorn istället för i koden? (Configure/configure bits)
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Pic12f629 och Watchdog Timer problem

Inlägg av PopUnoNkoK »

Då ska vi se...

När jag kollar i "Configure -> Configuration Bits" så ser det ut så här:
Bild

Alltså det visar juh att den är på, men varför den är på kan jag inte förstå. Slår jag av den manuellt i detta fönster och sedan trycker "Build All" så slås den på igen, så det är defenitivt i koden som WD Timern slås på (För att svara på V-g's fråga).

Meddelandet som jag får upp ser ut så här:
Bild
(Säkert helt irellevant för att lösa problemet men när jag ändå tagit en Screenshoot så är det väl lika bra att använda den. :) )

Koden ser ut så här:

Kod: Markera allt

;************************************************************************
;   Processor:     12F629                                              *
;                                                                       *
;************************************************************************

;   							*
;                                                                       *
;                                   *
;                                                                       *
;************************************************************************

       	processor   12f629
  	   	include      <p12f629.inc>

;**** CONFIGURATION
		__config	_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON ;& _LVP_OFF


    errorlevel  -302    ; no "register not in bank 0" warnings 
    errorlevel  -312    ; no "page or bank selection not needed for this device" messages


;=====================================================================
;	File register use
;=====================================================================
		cblock		H'20'
						; variables used for context saving
			cs_W
			cs_STATUS


		endc


;=====================================================================
;  Konstanta värden
;=====================================================================




    
        goto    Start

;=====================================================================
;  INTERRUPT SERVICE ROUTINE
;=====================================================================
ISR     ORG    0004h
        ; save context
        movwf   cs_W            ; save W
        movf    STATUS,w        ; save STATUS
        movwf   cs_STATUS 
        ; service Timer0 interrupt
        bcf     INTCON,T0IF     ; clear interrupt flag


		movlw	b'111111'
		banksel		GPIO
		xorwf		GPIO		



;Första pulsen 
isr_end ; restore context then return
        movf    cs_STATUS,w     ; restore STATUS
        movwf   STATUS      
        swapf   cs_W,f          ; restore W
        swapf   cs_W,w     
        retfie  
        

;***** MAIN PROGRAM
Start   

;---------------------------------------------------------------------
;	Set up I/O 
;---------------------------------------------------------------------
		banksel	GPIO
		clrf 	GPIO 		;Init GPIO
		movlw 	07h 		;Set GP<2:0> to
		movwf 	CMCON 		;digital IO
		bsf 	STATUS,RP0 	;Bank 1
		;clrf 	ANSEL 		;Digital I/O
		movlw 	b'000000'	;Set GP<3:2> as inputs
		movwf 	TRISIO 		;and set GP<5:4,1:0>
							;as outputs


        ; configure Timer0           
        movlw   b'00000111'     ; Prescaler = Ingen
        Banksel OPTION_REG     ; 
        movwf   OPTION_REG      ;   
		banksel		GPIO
;---------------------------------------------------------------------
;	Initialize memory
;---------------------------------------------------------------------

        ; configure interrupts
		bsf INTCON, GIE
		bsf INTCON, T0IE
		bsf INTCON, PEIE

loop
		goto	loop





		nop
        END
Jag gissar att det blir fel någonstans så att inte min __config inställning blir rätt men jag lyckas inte "debugga". Alltså jag hittar inte så att jag kan se vilket värde Config registret har när jag kört igång koden. Hittar inte adress 2007h i "File Registers" fönstret eller så att jag kan lägga till det i "Watch" fönstret. Skulle vilja se det binära talet för att kunna jämföra med bitarna i manualen på sidan 52 (eller 54 beroende på om man tittar på PDF numreringen eller sidnumreringen längst ner på sidan).

Alla tips tas tacksamt emot.

MVH Peter F
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Pic12f629 och Watchdog Timer problem

Inlägg av bearing »

Är rätt modell vald för projektet?
Configure -> Select Device
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pic12f629 och Watchdog Timer problem

Inlägg av sodjan »

Testkört u.a.
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Pic12f629 och Watchdog Timer problem

Inlägg av PopUnoNkoK »

Nix, rätt modell för Projektet var INTE vald. :(

Jag har lärt mig sätta upp Projekt i MpLab från någon guide som jag inte har tillhands nu och jag har inget minne av att jag någonsin ställt in vilken pic jag använt, har förvisso bara använt en typ av pic men i alla fall.
Jag trodde verkligen att det räckte med att ändra i början av koden, alltså:

Kod: Markera allt

       	processor   12f629
Men men, nu blinkar i alla fall dioden även på min lilla 8benta Pic. :)

Tack för hjälpen.

MVH Peter F
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pic12f629 och Watchdog Timer problem

Inlägg av sodjan »

Väldigt märkligt...
Jag får alltid nedanstående om jag väljer fel processor.
Som sagt, väldigt märkligt att du inte fick det...

Kod: Markera allt

Warning[215] C:\DATA\PROJ\TEST\UNTITLED.ASM 12 : Processor superseded by command line.  Verify processor symbol.
Message[301] C:\PROGRAM\MICROCHIP\MPASM SUITE\P12F629.INC 36 : MESSAGE: (Processor-header file mismatch.  Verify selected processor.)
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Pic12f629 och Watchdog Timer problem

Inlägg av PopUnoNkoK »

Sodjan: Jag fick säkert det där meddelandet. Jag har varit så nöjd så länge det inte varit något error medelande. :oops:

Får hålla bättre koll i framtiden.

Tack för svaren.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pic12f629 och Watchdog Timer problem

Inlägg av sodjan »

> Får hålla bättre koll i framtiden.

På denna punkt är vi helt överens. :-)

Men jag håller med om att det skulle kunna bli ett "Error" och avbrytas...
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: Pic12f629 och Watchdog Timer problem

Inlägg av v-g »

Händer även mig att jag glömmer ställa in allt i MPLAB. Det är inte lätt att komma ihåg allt direkt från start heller men det brukar gå att lösa mha felmeddelandena. Jag ser det som självklart att det inte ska vara några warnings när något är kompilerat.

En sak jag upptäckt som är smidig att utgå från är de färdiga template (=mallarna) som finns i c:\Program\Microchip\MPASM Suite\Template\Object\ finns för alla modeller.
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Pic12f629 och Watchdog Timer problem

Inlägg av PopUnoNkoK »

Ok, ska kolla in de mallarna, det låter mycket smidigt.

Kan bara meddela att jag nu lyckats att stänga av och på en diod med hjälp av en signal från en R/C mottagare. Alltså samma typ av signal som behövs för att styra ett servo.

Just nu är det bara i två lägen, alltså när motagar signalen som går in i picen har en Duty cycle som är längre än 1,5mSec så är dioden tänd och när den är kortare än 1,5mSec så är den släckt. Känns riktigt bra. :) Dioden har dock lite blink/flimmer om signalen är precis i mitten alltså precis 1,5mSec. Detta tar juh bort en del av den sköna känslan men för den applikation som detta är tänkt kommer det inte att spela någon roll. Signalen kommer bara att vara i ändlägena.

Tack för all hjälp.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pic12f629 och Watchdog Timer problem

Inlägg av sodjan »

> ...om signalen är precis i mitten alltså precis 1,5mSec.

Alltså är den inte "precis" 1.5 ms, och den kommer aldrig att vara det heller.

Enklast är att bygga in lite hysteres, d.v.s att om lysdioden just har tänts så
sänker du gränsen lite, t.ex t-ex till 1.4 ms, och när den har släckts så höjer
du till t.ex 1.6 ms. Eller tvärtom...
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Pic12f629 och Watchdog Timer problem

Inlägg av PopUnoNkoK »

Det låter som en bra ide Sodjan, jag får (eventuellt) titta på det när jag kommer hem. Som sagt, för den aplikation som jag har tänkt detta så funkar det bra nu.

Tack för alla svar.
Skriv svar