PIC, varför inte... går det....?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

PIC, varför inte... går det....?

Inlägg 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...

:wall:

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
Användarvisningsbild
Icecap
Inlägg: 26645
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: PIC, varför inte... går det....?

Inlägg av Icecap »

Har du stängd av alla analoga funktioner? Kolla efter ADSEL.
CosSinSum
Inlägg: 47
Blev medlem: 11 februari 2015, 21:01:27

Re: PIC, varför inte... går det....?

Inlägg 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. :)
Användarvisningsbild
Klas-Kenny
Inlägg: 11838
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: PIC, varför inte... går det....?

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC, varför inte... går det....?

Inlägg 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...
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: PIC, varför inte... går det....?

Inlägg 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. :humm:

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".
Användarvisningsbild
Glenn
Inlägg: 36690
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: PIC, varför inte... går det....?

Inlägg 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.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: PIC, varför inte... går det....?

Inlägg 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
Användarvisningsbild
Glenn
Inlägg: 36690
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: PIC, varför inte... går det....?

Inlägg 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.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: PIC, varför inte... går det....?

Inlägg av Erik M »

:humm:

Min hustru försöker oxå förklara.
...och lyckas ungefär lika bra. :vissla:

:P

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.

:shock:
Mr Andersson
Inlägg: 1409
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: PIC, varför inte... går det....?

Inlägg 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.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: PIC, varför inte... går det....?

Inlägg 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
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: PIC, varför inte... går det....?

Inlägg av Erik M »

Thank you Mr Andersen, that was the one nailing it. :tumupp:

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. :tumupp:

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...
jako
Inlägg: 337
Blev medlem: 26 oktober 2006, 18:32:35
Ort: Sandviken

Re: PIC, varför inte... går det....?

Inlägg 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 :)
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: PIC, varför inte... går det....?

Inlägg 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....
Skriv svar