Första försöket med wisp648 och 16f648

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Inlägg av Bosen »

jag menar för att driva min konstruktion....
Mwn igentligen går jag ju händelserna i förväg.... så jag kör på med den första kretsen nu.... så får vi se vad som händer i framtiden...

MEN tillbaka till mitt MCLR problem.

Om jag bara sätter ström till mitt projekt genom min wisp och sätter MCLR:en till en pullup så fungerar det i all evighet.
Detsamma gäller om jag har MCLR:en inkopplad till wispen om jag bara matar direkt. Men problemet uppkommer efter att jag har programmerat pic:en med wispen. efter det kan jag inte ha MCLR inkopplad för då dör pic:en efter ungefär 2 minuter. Men den funkar med ett pullup på MCLR.
Om jag bryter strömmen till wispen och startar om den så kan jag ha MCLR inkopplad och Pic:en funkar hur länge som helst.

Jaja... det är väl inget att bry sig om innan jag har skaffat sakerna till min 5V stab-krets.... (é ju nybörjare så jag har inte så mycket liggandes på hyllorna :) )[/list]
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Oavsett om du har Wispen inkopplad eller inte så finns det ingen
anledning att *inte* ha en 10 k pullup på MCLR. Jag ser inte det
som ett riktigt "problem"...
Eller missförstog jag något ?
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg av AndersG »

Du kan ju inte ha pinnarna flytande i allafall...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Som sagt, sätt dit en 10 k pullup så slipper vi denna diskusion... :-)
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Inlägg av Bosen »

ok.... då ska du slippa diskusionen :)
eller... jag har bara en fråga till om just detta:
Om jag har satt pinnarna till utgångar så behöver jag väl ingen pullup utan dom baehöver väl inte vara anslutna va?

ehh... jag menar dom andra pinnarna då... inte bara MCLR
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

En utgång kan vara "öppen".
(En ingång ska *aldrig* lämnas "öppen".)
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Inlägg av Bosen »

Nu kommer jag med en mattefråga :)
Jag tänkte att jag skulle köra timer0 eller timer1 (den som är mest lämpad till detta, tips?) så jag får ett interupt ungefär var 10:e ms.
Jag kör forfarande med intern kristall 4Mhz.
Hur räknar jag ut vilken prescaler jag ska köra??
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Det finns formler i databladet för det.

Timer0 är ganska olämplig för att ställa till en viss tid mellan interrupt, vissa vill påstå att man bara kan "ladda om" den men det är FORTFARANDE ETT DÅLIGT SÄTT!

Timer1 är egentligen inget bra på det heller, samma grej som med Timer0.

Ska du ha en ställbar hastighet är det Timer2 som gäller.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

En liten rättning bara, Bosen. Det finns ingen intern kristall utan det är en intern oscillator. Det är i princip en vältrimmad RC-oscillator så den har asolut inte den exakthet som en kristalloscillator. Men i många fall behöver man inte det och då är den interna oscillatorn utmärkt i många avseenden.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg av AndersG »

Jag tänkte att jag skulle köra timer0 eller timer1 (den som är mest lämpad till detta, tips?) så jag får ett interupt ungefär var 10:e ms.
Jag kör forfarande med intern kristall 4Mhz.
Hur räknar jag ut vilken prescaler jag ska köra??
Det beror på? Dvs var kör du för klockfrekvens. Om du kör 4MHz så räknar räknarna en fjärdedel, dvs 1MHz, dvs 1us. Skall du ha var 10nde ms så måste du dividera med 10000 och då behöver du en 16-bitars räknare, dvs Timer1.

Här har du ett exempel:

Kod: Markera allt

; ***********************************************************************************
; START OF CODE to initialize Timer 1

; Set up Timer 1 to generate interrupts approx every 500ms.

	banksel	tmr1l
	CLRF    TMR1L            	; Clear Timer1 register
	CLRF	TMR1H

	banksel	intcon
	bsf     INTCON,PEIE     	; Enable peripheral interrupts
	banksel	pie1
	CLRF    PIE1            	; Mask all peripheral interrupts except
	bsf     PIE1,TMR1IE     	; the timer 1 interrupts.

	banksel	pir1
	CLRF    PIR1            	; Clear peripheral interrupts Flags
	movlw   B'00110000'     	; Set  Prescale = 8

	movwf   T1CON
	BSF     T1CON,TMR1ON    	; Timer1 starts to increment
;***********************************************************************************
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

4 MHh -> Tcyc = 1 us. Det är den som "matar" TMR0 prescaler.

Om man då väljer prescale 1:32 och TMR0 "freerunnng" så får man
256x32 us eller ca 8 ms intervall.

Beroende på vad det ska användas till så kan 8 ms vara lika bra som 10 ms.
T.ex för avstudsning av knappar eller liknande. Om 8 ms inte passar riktigt,
så kan t.ex köra med prescaler 1:4 och få nästan exakt 1 ms istället. Sedan
räknar man upp ett lämpligt antal av dessa interrupt så att man kan
köra vissa saker varje ms, andra kanske varje 10 ms o.s.v. Man får alltså
en "tidbas" i applikationen på 1 ms som man kan utgå från.

TMR0 fungerar helt OK till detta när man kör den "frerunning".
TMR1 har andra funktioner ("counter" o.s.v) som man kanske vill använda den till.
TMR2 har t.ex PWM funktioner så den är också synd att använda till en enkel tidbas.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg av AndersG »

TMR1 har andra funktioner ("counter" o.s.v) som man kanske vill använda den till.
Jo, sist och slutligen beror det hela på vad man behöver i övrigt. I mitt fall använder jag inte timers till någonting (i detta fall) så därför kan jag sno TMR1 som annars kan användas till en massa annat skoj.

Nu får TMR1 uppdatera displayen ca 2ggr/s samt (via en räknare) köra en rutin som körs en gång/minut (för att subtrahera självurladdning)
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Inlägg av Bosen »

sodjan verkar ha fattat att det är avstudsning av knappar det handlar om! :)
Tack både AndersG och Sodjan för svaren... nå ska jag testa mig fram lite mera...

Vfr:
Helt rätt av dig... jag visste faktiskt att det va en oscillator men jag kallade den kristall... fel av mig... jag ska tänka på detta i fortsättningen
:wink:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Avskanning av knappar är ganska vanlig, men det kan vara mycket annat
som är praktiskt att köra med ett jämt intervall. Så en "systemklocka" som
ligger som ett interrupt och tickar i bakgrunden är ofta praktiskt.
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Inlägg av Bosen »

hej... nu é jag tillbaka med en fråga igen :)

Vad betyder peripheral interrupt???
Jag tänker givetvis på INTCON, PIE

ordet "peripheral" är något nytt för mig...
Skriv svar