PIC programmera på labplattan.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Även om knappen inte är tryckt längre så får jag fortfarande PORTA.4 hög?

Vad är det som gör att RA4 blir "låg" ?

> Ska jag nollställa den på något sätt innan jag kollar igen?

Nej.
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

Inlägg av Christoffer »

Jag trodde att den blev låg eftersom knappen inte längre är tryckt. Knappen skickar 5 volt till PORTA.4

Nu funkar det. Jag gjorde en sub funktion och allt gick bra.

sub function TestButton as byte
if Button(PORTA, 4, 1, 0) then
result = false
else
result = true
end if
end sub
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

sodjan menade nog vad det är som ser till att port A4 blir låg när du _inte_ trycker på knappen. Den blir ju inte låg bara för att knappen inte längre matar 5V till den. Något måste dra den till noll annars ligger den och "flyter".
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

Inlägg av Christoffer »

Jag gav den värdet PORTA.4 = 0 innan jag kollade igen om knappen fortfarande var tryckt. Det är säkert helt fel, men verkar funka. Hur ska man göra? Säkert ska man jorda den med ett motstånd eller något liknande. Som sagt jag har inte full koll på vad jag gör, men den som testar och frågar lär sig så småningom. Man kan ju också läsa sig till allt, men då måste man veta vart man ska leta och vad det man läser betyder.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Du är på helt rätt spår. Den ska lämpligen jordas via ett motstånd. Utan det så förstår jag om du har fått problem. :P

Sedan är det så att man vanligen lägger motståndet till plus och knappen till nollan istället för tvärtom. Då kan man t.ex utnyttja den interna pullupen som finns i PIC:ar istället för externa motstånd.

Att sätta portpinnen till 0 hjälper inte ett dugg eftersom det bara påverkar pinnen när den är satt som utgång. Det skulle ju rimligen aldrig kunnat fungera på det sättet. Vem skulle haft kontroll över pinnen isåfall? Knappen på utsidan eller utgången? Tänk dig att du tryckte på knappen samtidigt som utången sattes till 0. Det skulle isåfall blivit kortslutning. Nej, den varianten glömmer vi fort! :wink:
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Jag gav den värdet PORTA.4 = 0 innan jag kollade igen om knappen fortfarande var tryckt.

Som jag svarade tidigare, du ska inte göra så.

Och helt korrekt, jag frågade vad det var som gjorde pinnen "låg"
när du *inte* tryckte på knappen, den blir ju inte "låg" av sig själv,
så att säga. .-)

"Öppna" *ingångar* (d.v.s ingångar som inte är anslutna någonstans) är
för övrigt definitivt förbjudet om man inte vill få otrevliga överraskningar... :-)

Alla *oanvända* pinnar ska *antingen* sättas som utgångar (enklast)
*eller* kopplas till 5V eller jord. De ska absolut inte lämnas som ingångar
*och* helt oanslutna.

För övrigt har du fått ett antal helt korrekta svar, så det bör inte vara
något problem längre.

Sen, inom parentes, så kan man väl tilläga att det *finns* metoder där
man flippar en pinnen mellan utgång och ingång. Och genom att mäta
upp/ur laddningstiden på en kondensator så kan man avgöra vilken av
ett antal olika knappar (anslutna via olika motstånd) som är intryckt.
Helst ska man använda en pinne som är "komparator" när den är ingång,
så att man får en väldefinierad omslagspunkt.
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

Inlägg av Christoffer »

OK, tack för tipset. Gör ett nytt försök imorgon. Även om den fungerar bra redan nu. Jag håller in knappen hela tiden medans port A4 blir 0 flera gånger.
Men rätt ska vara rätt. Man vill ju att timern ska hålla ett tag.
Kan jag använda ett 10K motstånd?
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Allt mellan 10-100 k är sannolikt helt perfekt.

Mindre motstånd -> mindre känslighet för störningar men högre strömförbrukning när du trycker på knappen.
Större motstånd -> tvärtom...

Strömförbrukninger är sannolikt totalt ointressant om du kör från nätet,
men väldigt intressant vid batterimatning.

Kontrollfråga,
är pinnen (via TRISA) satt som *utgång* när du sätter pinnen till "0" ??

Det är inte alls "bra" för processorn att kortsluta pinnen på det där sättet.
I värsta fall står du med en "bränd" utgång och en kass processor, men
PIC'arna tål ganska mycket misshandel...
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

Inlägg av Christoffer »

Nu har jag gjort ändringarna och kopplat motståndet till plus och när jag trycker på knappen kollar jag om pinnen är låg.
Det är inga problem med tomma pinnar. Jag har klämt in så många dioder som det bara går. Sedan är alla output, utom port A4 där knappen sitter. Det blev totalt 11 dioder på slutversionen eftersom jag behövde en knapp och en högtalare.
Provade att filma timern med mobilen, men kvaliten är inte så bra.
Bild på timern
Kort film tagen med mobilen.
Tack för all hjälp.
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

Inlägg av Christoffer »

Nu när allt funkar så ska jag göra klart kretskortet och designen. Sedan kanske nästa projekt blir att få det att funka i assembler.
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

Inlägg av Christoffer »

Nu är min timer i princip klar. Den funkar som den ska, men en sista fråga.
När jag kopplar till en högtalare så behövde jag ju en pinne, den är sedan kopplad via en vridpot till 5v. Kommer högtalaren då att dra ström hela tiden, eller endast när den skickar ut toner? Timern kan ju stå på under max en timma så det är bra om jag jan minska strömförbrukningen.

Bild
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> den är sedan kopplad via en vridpot till 5v.

Hur då ?

> Kommer högtalaren då att dra ström hela tiden...

Beror på hur det är kopplat...
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

Inlägg av Christoffer »

Pinne A3 -> till motstånd (vridpot 10K) -> till högtalare -> till 5v på kortet.

Sedan startas ljudet med:

Sound_Init(PORTA, 3)
Sound_Play(80, 100 ' flera stycken olika i loop

Man kanske skulle koppla den till ytterligare en pinne i stället för 5v. och sätta den till hög när det var dax att få fram ljudet.
Var hittar jag någon besktivning på hur jag kopplar en högtalare på rätt sätt till PIC16F628?
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Man kan använda en port + en transistor också. Vill man kan man styra volymen via denna transistor så spar man en trimpotentiometer och kan ställa volymen i mjukvaran.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Pinne A3 -> till motstånd (vridpot 10K) -> till högtalare -> till 5v på kortet.

Är alltså två pinnar på potten hopkopplade ?

Om PIC pinnen är hög, så kan det ju inte gå någon ström någonstans.
Så håll den hög när det ska vara "tyst".
(Det kommer också att vara tyst om du håller den låg, men då
kommer det att gå en likström genom högtalaren.)

Du kan också sätta en stor (10-100 uF) konding i serie
så kan du hålla pinnen hur du vill, någon likström kan det
i alla fall inte gå.

> Var hittar jag någon besktivning på hur jag kopplar en högtalare på rätt sätt till PIC16F628?

*Här* kanske ?
Skriv svar