Sida 1 av 1
Hjälp med input i c
Postat: 17 augusti 2009, 23:10:02
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
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?
Re: Hjälp med input i c
Postat: 17 augusti 2009, 23:27:06
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å.
Re: Hjälp med input i c
Postat: 17 augusti 2009, 23:35:26
av Pajn
Så dum jag känner mig nu
Brukar precis som du slänga in hela klabbet, men tydligen hade jag råkat ta bort fel
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

Re: Hjälp med input i c
Postat: 18 augusti 2009, 09:19:43
av vfr
Visst finns det analoga funktioner på 648:an. Visserligen inte A/D-omvandlare, men däremot analoga komparatorer.
Re: Hjälp med input i c
Postat: 18 augusti 2009, 09:27:11
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...
Re: Hjälp med input i c
Postat: 18 augusti 2009, 09:57:44
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.
Re: Hjälp med input i c
Postat: 18 augusti 2009, 10:16:56
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.