Sida 1 av 7
PIC, varför inte... går det....?
Postat: 2 april 2015, 20:30:23
av Erik M
Tjo!
Finn fem, eller sex, fel...
Denna snutt borde resultera i att:
Om PORTA,0 är låg så tänds PORTC,0 och PORTC,1 släcks etc.
Eller?
PORTA [0-6] är uppdragna med 4k7Ω. Dvs höga (?) som standard.
PORTC [0-6] har varsin LED, anod på port, katod på noll. (Inklusive motstånd etc.)
(Alla status, trisa, porta etc är versaler, egentligen.)
Varför händer det typ ingenting?
Kör jag simulering i Pic Simulator 2.0 så funkar allt som det är tänkt...
Kod: Markera allt
include "p16f690.inc"
org 0
bsf status,rp0
movlw b'00111111'
movwf trisa
movlw b'11000000'
movwf trisc
bcf status,rp0
goto main
main:
btfsc porta,0
goto not0
bsf portc,0
bcf portc,1
not0:
btfsc porta,1
goto not1
bsf portc,1
bcf portc,2
not1:
btfsc porta,2
goto not2
bsf portc,2
bcf portc,3
not2:
btfsc porta,3
goto not3
bsf portc,3
bcf portc,4
not3:
btfsc porta,4
goto not4
bsf portc,4
bcf portc,5
not4:
btfsc porta,5
goto not5
bsf portc,5
bcf portc,0
not5:
goto main
end
Re: PIC, varför inte... går det....?
Postat: 2 april 2015, 20:39:32
av Icecap
Har du stängd av alla analoga funktioner? Kolla efter ADSEL.
Re: PIC, varför inte... går det....?
Postat: 2 april 2015, 21:57:04
av CosSinSum
Precis som Icecap säger så måste du nog stänga av de adc'n. Vill mig minnas att 16F690an kräver det.

Re: PIC, varför inte... går det....?
Postat: 2 april 2015, 22:11:11
av Klas-Kenny
Inte nödvändigtvis stänga av ADC'n, men att konfigurera ingångarna till digitala, de är analoga som standard.
Registerna du söker heter ANSEL och ANSELH.
Re: PIC, varför inte... går det....?
Postat: 2 april 2015, 23:05:58
av sodjan
> Kör jag simulering i Pic Simulator 2.0 så funkar allt som det är tänkt...
Inte en susning om vad det är för något. Fungerar det i MPSIM?
Vad utvecklar du i? MPLAB/XC8? MikroC? Något annat?
Men ganska självklart så är problemet att pinnarna står som analoga I/O...
Re: PIC, varför inte... går det....?
Postat: 3 april 2015, 12:07:59
av Erik M
Pic Simulator 2.0 är en rakt på app till Android.
Den tar dessvärre inte sådant som cblock eller #define, så lite bökig.
PIC16F690 är den som kommer med PICkit 2 Starter Kit.
...och jag tycker inte jag gjort mer än lagt till input portar på PORTA och output portar på PORTC, på samma vis som introduktionslektionerna gör...
Men går jag ett steg till bland lektionerna så dyker, lite omotiverat och plötsligt, just ADCON(1) och ANSEL upp...
Kod: Markera allt
bsf STATUS,RP0 ; select Register Page 1
movlw 0xFF
movwf TRISA ; Make PortA all input
clrf TRISC ; Make PortC all output
movlw 0x10 ; A2D Clock Fosc/8
movwf ADCON1
bcf STATUS,RP0 ; back to Register Page 0
bcf STATUS,RP0 ; address Register Page 2
bsf STATUS,RP1
movlw 0xFF ; we want all Port A pins Analoga
movwf ANSEL
bcf STATUS,RP0 ; address Register Page 0
bcf STATUS,RP1
...och tycker de ska vara med.
Även om det i tidigare lektioner inte förefallit nödvändigt.
Så frågan som dyker upp blir - vad är det för skillnad på analog och digital input...?
Och då menar jag input av typen High/Low, inte av typ "Vin versus Vref".
Re: PIC, varför inte... går det....?
Postat: 3 april 2015, 12:13:25
av Glenn
Grejen är ju att du måste tala om ifall du ska använda pinnen som analog eller digital, OM just den pinnen har båda funktionerna på just den PIC'en du tänker använda.
Ofta skippar man detta i början (på tutorials osv) och använder heldigitala pinnar, vilket längre fram blir lite förvirrande.
Men var inte ledsen för att du missade det, det är ett EXTREMT vanligt misstag, oavsett vilket språk du kodar i så kommer du att kunna googla fram en massa exempel på folk som gjort samma misstag
På PBP-forumet har nån gjort en include man kan använda som heter nåt i stil med "alldigital" som helt enkelt kollar vilken PIC det är, och sedan ställer in alla pinnar till digital, så kan folk om inte annat inkludera den som felsökning, men man vill ju vanligen ställa in manuellt så man vet hur det är satt.
Re: PIC, varför inte... går det....?
Postat: 3 april 2015, 12:19:49
av Erik M
Tack.
Men vad är den egentliga skillnaden mellan analog och digital?
Alltså om signalen är hög (≥4V) ELLER låg (≤1V).
Och det där med fåniga misstag...
I Pic Simulator måste ju alla variabler anges.
Och jag skrev tjugo stycken "ecu", istället för "equ"... Det var besvärligt. o_O
Re: PIC, varför inte... går det....?
Postat: 3 april 2015, 12:24:47
av Glenn
Ja, en digital pinna är antingen hög eller låg, en analog kan vara vad som helst, normalt sett går alla pinnat att använda som digitala, medans vissa även fungerar analogt.
Om du tex vill använda en tempsensor som ger kanske 1-2.5V ut beroende på temp så kan du ju mäda den via en analog pinne.
Re: PIC, varför inte... går det....?
Postat: 3 april 2015, 13:23:05
av Erik M
Min hustru försöker oxå förklara.
...och lyckas ungefär lika bra.
Vad jag känner är att en digital port som får över 4V borde därmed vara hög.
Och samma port med under 1V blir då oxå låg.
Och bryr sig inte om den exakta spänningen som sådan.

Re: PIC, varför inte... går det....?
Postat: 3 april 2015, 13:33:31
av Mr Andersson
Ja, om du använder en digital port fungerar det så.
Problemet kommer när du använder en port som kan vara antingen digital eller analog. Om den är inställd i analogt läge finns det inget hög/låg. Det finns bara ett analogt värde.
Re: PIC, varför inte... går det....?
Postat: 3 april 2015, 13:34:59
av Swech
Se på det hela så här:
Den digitala delen av porten är fysikt/ elektriskt bortkopplad då benet är
konfigurerat som analog pinne in. Så även om det kommer in en digital "1"a så
når den inte ända in i systemet
Swech
Re: PIC, varför inte... går det....?
Postat: 3 april 2015, 19:27:08
av Erik M
Thank you Mr Andersen, that was the one nailing it.
Jag förstår vad du menar Swech, men det är en pinne som är kopplad för digital jag tittar på.
Åtminstone tror och tänker att jag tittar på en sådan.
En analogt ställd port tar emot en analog signal (för klassificering till digitalt värde).
Japp, lugnt.
Men om jag
inte går via ADCON1 & ANSEL, då borde allt som kommer in och är fyra, eller mer, volt vara en "etta"... Exempelvis:
V^ = 15V
V° = 0V
V^ - [1kΩ] - [22kΩ] - [
PORTA,n] - [1kΩ] - V°≈0.6V ⇨ ≤1 ⇨ "0"
V^ - [1kΩ] - [
PORTA,n] - [22kΩ] - [1kΩ] - V°≈14V ⇨ ≥4 ⇨ "1"
Borde...
Re: PIC, varför inte... går det....?
Postat: 3 april 2015, 21:18:41
av jako
Är pinnen "kopplad" digitalt inuti mikroprocessorn också? d.v.s har du initierat processorn innan ditt program går igång?
Läs databladet 3-10 ggr. så ska du se att du börjar förstå hur alla pinnar/portar beter sig vid power up / reset
mvh

Re: PIC, varför inte... går det....?
Postat: 4 april 2015, 10:51:13
av Erik M
Databladen säger b0 om d1.
Därtill är det koden här, en bit ovanför i början, som gör just det, initierar och definierar.
__CONFIG... gör diverse ovan det, mest stänger av saker.
Nå, jag startar min Åkerman å RRF & RLF vidare.
Vroooom....