Hjälp med input i c

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Hjälp med input i c

Inlägg av Pajn »

Får ett märkligt fel, jag har en lysdiod kopplad till RA2 som styrs med pwm. Om jag slumpar fram ett värde eller anger ett fast till pwm funktionen funkar det utan problem så den är alltså utesluten.

Kod: Markera allt

if (PORTA.F0 == 0) { Diod += 5; }
if (PORTA.F1 == 0) { Diod -= 5; }
Problemet är att den börjar med att lysa (startvärdet är 70) men dimmas snabbt nedåt, även om RA1 är hög eller låg. Om jag kommenterar bort raden med RA1 så dimmas lysdioden istället upp till max, oavsett om RA0 är hög eller låg.
Jag initierar PORTA med

Kod: Markera allt

TRISA = 0b00000011;
PORTA = 0x00;
och på hårdvarusidan har jag kopplat två motstånd (10K) ett från RA0 till +5V och ett från RA1 till +5V.

Vad gör jag för fel?
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: Hjälp med input i c

Inlägg av victor_passe »

Finns det analoga funktioner på PORTA?
Dessa måste du slå av först.
Jag brukar slänga in:
CMCON=7;
ANSEL=0;
ANSELH=0;
Och ta bort de rader man får fel på.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: Hjälp med input i c

Inlägg av Pajn »

Så dum jag känner mig nu :oops:
Brukar precis som du slänga in hela klabbet, men tydligen hade jag råkat ta bort fel :doh:

Tack för hjälpen iaf.

Man kanske skulle kunna tycka att det är lite märkligt med absolut inga analoga funktioner på en 16f648A, men tydligen inte :?
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Hjälp med input i c

Inlägg av vfr »

Visst finns det analoga funktioner på 648:an. Visserligen inte A/D-omvandlare, men däremot analoga komparatorer.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med input i c

Inlägg av sodjan »

> Jag brukar slänga in:
> CMCON=7;
> ANSEL=0;
> ANSELH=0;
> Och ta bort de rader man får fel på.

Ganska korkad metod. Rätt metod är naturligtsvis att kolla de exempel
som så gott som alltid finns i PORT kapitlet i databladet och göra rätt
från början.

Sen så är det ju uppenbart att 648A har analoga funktioner, det finns
ju ingen anledning att tveka om det. Jag såg också det där om "lite märkligt
med absolut inga analoga funktioner på en 16f648A", men jag viste inte hur det
skulle tolkas. Jag tänkte inte på att någon kanske trodde att 648A *saknade*
analoga funktioner...
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: Hjälp med input i c

Inlägg av Pajn »

Om jag hade tänkt efter lite hade jag ju förstått att 16F648A har analoga funktioner men igår trodde jag inte det eftersom jag råkade ta bort CMCOM och fick fortfarande fel så jag tog bort klabbet och tänkte "tydligen inte".

@Sodjan visst borde jag ha kollat i databladet, men tyckte felet var så märkligt. Har aldrig glömt detta tidigare så visste inte vad effekterna av det var.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med input i c

Inlägg av sodjan »

Effekten av att behålla analoga funktionen påslagen och läsa porten
digitalt är alltid samma, porten läses som "0" oavsett vad man gör
med pinnen. Alltså just det du såg i ditt program.
Skriv svar