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 »

vad tror ni om detta så?:

Kod: Markera allt

start
; remaining code goes here

		banksel	cmcon			
		movlw	b'00000111'		;stäng av komparatorerna
		movwf	cmcon							
		banksel	trisb		
		clrf	trisb			;sätt hela portb till utgångar
		banksel trisa
		clrf	trisa			;sätt hela porta till utgångar
		bsf 	trisa, 0		;sätt RA0 till digital ingång
		banksel portb
test		
		movlw	b'01010101'
		movwf	portb			;sätt RB0 RB2 RB4 RB6 höga och resten låga
test1        
		btfss 	porta, 0		;kolla om RA0 är hög
		goto 	test1           ;gå till test 1 om RA0 är låg
                movlw 	b'10101010'		
		movwf	portb			;Sätt RB1 RB3 RB5 RB7 höga och resten låga
test2
		btfsc	porta, 0		;kolla om RA0 är hög
		goto	test2			;gå till test2 om RA0 är hög
		goto	test			;gå till test om RA0 är låg
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

tror å tror... :-)
Fungerar det inte ?
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Inlägg av Bosen »

jag har inte testat än..... har bara små små stunder på mig att exprimentera när man ska ta hand om ungarna :)

Jag tänkte mest på kommentarer och liknande...
Och jag tror jag fick koll på cmcom.... eller iallafall så mycket att jag förstod hur jag skulle stänga av komperatorerna... jag hadde väl kanske inte behövt stänga av alla, men det kan ju inte göra något att jag stänger av alla?!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Om du inte använder komparatorerna så är det lika bra att stänga av dom.
Det spar (lite) ström och du får inga problem med läsning av PORTA.
Det är ju inte så vanligt att man använder dom, så att sätta CMCON = h'07'
sitter i ryggraden när man håller på med just den processor serien.

Det gäller generellt för alla analoga funktioner, om
man i alla fall inte använder dom...

Din första kod (med komparatorera på) fungerade hur som helst inte alls.

Men spontant så ser det väl bra ut...
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Inlägg av Bosen »

Hurra, hurra.... jag é så glad... koden funkade!!! :)
MEN..... efter ungefär 2 minuter så stängs pic:en av verkar det som!!??

Jag har två LED inkopplade. en på RB2 och en på RB3. Ett motstånd som håller RA0 hög mot + och en knapp som kan sätta RA0 rätt mot -.
LED som är inkopplad på RB3 lyser hela tiden tills RA0 blir låg för då börjar LED på RB2 lysa istället. men efter ungefär 2 minuter så slocknar båda LED:en och det händer inget om jag försöker göra RA0 hög.

Bryter jag strömmen så startar programmet om igen.

Varför händer detta?? vad är det jag bör läsa på??

Jag har ingen separat matning till mitt expriment utan jag matar det genom Wispen från en 12v väggvårta.

EDIT:
Jag kom på en fråga till:
PortB har ju weak-pullups så man kanske skulle tänka sig att det hadde varit bättre att använda en pinne på PortB som ingång.... MEN dom pinnarna har ju så många andra funktioner så jag misstänker att där är fler saker att stänga av för att man skall va säker på att det funkar med PortB... har jag fel?
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Har du kollat så det finns spänning över PIC:en när det slocknar?

Förutom Low voltage serial programming-funktionen som regleras med en Config bit tror jag inte det behövs stängas av något på PORTB innan den används.
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Inlägg av Bosen »

JA, det finns spänning över pic-en när den slockanr.
MEN, jag har upptäckt att om jag tar bort MCLR sladden (gul) som kommer från wispen så fungerar programmet. om jag sätter tillbaka den så dör den igen. Kan det vara någon funktion från wispen som jag har missat?
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Inlägg av Bosen »

efter lite mer exprimenterande så har jag ju stött på problemet med kontaktstuds.
Jag har läst lite om detta att man ska vänta lite efter att pinnen har blivit låg och sedan läsa den igen.... men hur länge bör man vänta... räcker det med ett par "nop" eller blir det aldeles för många??? vad är det enklaste sättet?

Jag kör med den interna kristallen 4Mhz
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Ett par nop räcker nog inte, 10ms eller så brukar jag lägga in och det funkar med de brytare jag testat.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

När det gäller kontaktstudsar...

Just i ditt fall så testar ju koden I/O-pinnen hela tiden, så det enda
som kan hända är att LED'arna blinkar lite snabbt fram och tillbaka
just i själva omslaget. Sannolilkt för snabbt för att du ska hinna se
det. Så i just detta fall så borde inte kontaktstudsar vara något problem.

I en "riktig" applikation så har man sannolikt en rutin som ligger och
kör, säg, med 10 ms intervall, eller liknande. I denna lägger man
lämpligen in avkänning av knappar. Först om knappen har ändrat läge
så noterar man det i någon flagga. Sedan under nästa "varv" 10 ms senare,
och om knappen fortfarande har kvar samma läge, så noterar men det
som ett riktigt läge på knappen. Annars struntar man bara i det.

> räcker det med ett par "nop"...

Notera att varje NOP tar 1 us vid 4 MHz. Du hinner med 10.000 NOP's
på 10 ms.... :-) Så processorn är *mycket* snabbare än tryckknappen...

Stannar det hela även om du inte rör knappen alls ?
Är det alltid efter i princip exakt samma tid ?

> MEN dom pinnarna [PORTB...] har ju så många andra funktioner

Generellt är det så att det är de *analoga* funktionerna (komparatorer
och ADC) som är "på" efter en reset. *Digitala* funktioner (PWM, USART,
I2C, SPI o.s.v) är normalt avstängda efter reset. Så det är normalt inte
mer jobb att konfigurera PORTB, så länge man bara ska köra den som
vanliga I/O pinnar.

> Jag har ingen separat matning till mitt expriment utan jag matar det genom Wispen från en 12v väggvårta.

Hm, det borde fungera. Men vanligare är kanske att mata sin koppling
direkt, och sedan låta Wisp'en ta sin matning därifrån. Om inte annat
så blir det enklare att koppla bort Wisp'en...
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Inlägg av Bosen »

I just detta fallet så är inte kontaktstudsarna något som är ett problem, men jag märker av det, därför blev jag nyfiken på hur man löser det. Jag gjorde om koden lite och gjorde så att jag bytade pinnarna med "comf" och lät dom ligga kvar tills jag tryckte på knappen igen... det va så jag la märke till kontaktstudsarna.

>Stannar det hela även om du inte rör knappen alls ?
Ja

>Är det alltid efter i princip exakt samma tid ?
Det är jag faktiskt inte helt säker på. Jag har bara tagit tiden en gång, men det verkar inte alltid som det är samma längd på tiden innan det stannar...

>Hm, det borde fungera. Men vanligare är kanske att mata sin koppling
>direkt, och sedan låta Wisp'en ta sin matning därifrån. Om inte annat
>så blir det enklare att koppla bort Wisp'en...
Jag har lagt en LED så den lyser hela tiden jag har ström från wispen och den slocknar aldrig så jag är tveksam till att det är strömförsörjningen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> så att jag bytade pinnarna med "comf"

OK, det hade du väl kunnat tala om... !?

Med COMF så blir det ju lite vad som helst, beroende på
hur många "studsar" det blir varje gång. Alla mekaniska
kontakter (knappar, reläer o.s.v) studsar mer eller mindre.

> så jag är tveksam till att det är strömförsörjningen.

Stannar det även om du matar kretsen direkt ?
D.v.s så som man kanske bör göra...
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Inlägg av Bosen »

>OK, det hade du väl kunnat tala om... !?

Jag skrev: efter lite mer exprimenterande så har jag ju stött på problemet med kontaktstuds.
Men jag erkänner att det va lite väl otydligt. Jag bara blev nyfiken.

jag har ingen separat 5v stab att använda för att mata kretsen separat. Det är därför jag matar genom wispen....

EDIT:
Jag har ju ingen separat 5v stab eftersom du har slutat sälja sådana sodjan :lol: :D
Senast redigerad av Bosen 20 september 2008, 23:13:27, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK.

Om du matar via Wisp'en, men kopplar bort den gula MCLR kabeln,
rullar det på då utan avbrott/stopp ? Med en pullup för MCLR
i din krets, så klart...

Det låter lite märkligt, som om firmware i Wisp648'an skulle
skulle strula med MCLR kabeln...

Men du borde hur som helst fixa en separat 5V matning, det är
ju lie besvärligt att tvingas ha Wisp648'an inkopplad hela tiden.

EDIT :

> Jag skrev: efter lite mer exprimenterande.....

Exakt. Det är det jag menar.
Det är av viss vikt att veta vad du har gjort... :-)
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Inlägg av Bosen »

jaja.. fel av mig... jag ska vara lite mer exaktare om vad jag har gjort i forsätningen.
Hur f-n orkar du med sådana som mig sodjan???? :D

Jag vet att det é många som trackar lite ner på ditt sätt att lära när du inte säger rent ut hur det skall vara... men jag tycker det är helt rätt... om du bara vid mina frågor lycka styra in mig på vad jag behöver läsa på mera så vet jag att jag lär mig på det bästa sättet.
Skriv svar