Sida 1 av 3
Hjälp med felsökning av kod till PIC12F683
Postat: 28 februari 2013, 22:05:49
av emilrowland
Hej jag behöver hjälp att hitta vad jag har gjort fel i min kod. jag försöker att lyssna av en knapp som ska aktivera hela programmet när man trycker på den. men jag får inte det att fungerar. utan hela programmet startar utan att jag har tryckt på knappen. kan ni se vad jag har gjort för fel?
Kod: Markera allt
unsigned char x = 0;
void larm(){
int i = 0;
while(i<5){
GPIO.B0 = 1;
Delay_ms(1000);
GPIO.B0 = 0;
Delay_ms(1000);
i++;
}
}
void program(){
GPIO.B5 = 1;
GPIO.B1 = 1;
Delay_ms(10000);
GPIO.B5 = 0;
GPIO.B1 = 0;
larm();
}
void main() {
TRISIO.B0 = 0;
TRISIO.B1 = 0;
TRISIO.B5 = 0;
CMCON0 = 0x07;
ANSEL = 0;
while(1){
x = GPIO.B4;
if(x == 0){}
if(x == 1){program();} //har testat att byta ut x till 0 men den startar även då programmet.
}
}
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 28 februari 2013, 22:08:50
av sodjan
Vad är kopplat till GPIO4 ?
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 28 februari 2013, 22:09:13
av emilrowland
en tryck knapp.
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 28 februari 2013, 22:09:57
av sodjan
Hur?
Enbart det?
Ingen pull up/down?
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 28 februari 2013, 22:12:26
av emilrowland
det sitter en resistor emellan.
men problemet måste sitta i koden. eftersom jag har bytt ut x till 1 och 0 men får samma fel.
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 28 februari 2013, 22:13:59
av sodjan
"Emellan" ???
Skit samma...
EDIT:
Om du inte talar om hur du har kopplat så blir
det lite meningslöst det hela.
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 28 februari 2013, 22:29:05
av emilrowland
jag har kopplat så här till B4 så sitter det en knapp som är kopplat till 5v och så sitter det en resistor på 1kohm till ingången till knappen utgången är direkt kopplat till B4.
men mitt problem är att B5 och B1 som är kopplade till en varsin led börjar lysa. och detta bör inte inträffa eftersom jag kan inte se att de blir anropade någonstans om inte knappen är nedtryckt. men då borde de bara lysa i 10sekunder men de lyser konstant hela tiden. har även testat som sagt att byta ut värdet mot x till 1 respektive 0 men får samma respons. så jag undrar om jag har skrivit fel någonstans i koden eftersom hårdvaran är testad och ska fungera.
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 28 februari 2013, 22:39:01
av Klas-Kenny
Du lämnar ingången flytande när knappen inte är nedtryckt, vilket förmodligen får processorn att feltrigga. För när ingången är flytande så kan processorn se den som 1 eller 0 helt slumpmässigt beroende på 1000 olika faktorer.
Så häng på ett pull-down-motstånd till ingången så fungerar det nog bättre (Du kan ta bort seriemotståndet med).
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 28 februari 2013, 22:45:49
av emilrowland
ok tack.
men när jag har testat runt lite och tagit bort knapp funktionen i min kod och använde bara en if sats så om jag satt värdet där till true så aktiverade den programmet men om jag satt värdet till false så startar inte programmet igång som förväntat men B5 och B1 tänds men det är allt. så jag förstår inte hur det kan inträffa eftersom det enda sättet som jag har förståt att B5 och B1 kan tändas är om programmet startar men då efter 10 sekunder så ska dom slockna men det gör dom inte så det är där som jag får problem.
så länge jag anropar programmet så funkar det men när jag säger åt den att inte anropa då blir allt kaos.
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 28 februari 2013, 22:57:21
av sodjan
> jag har kopplat så här till B4 så sitter det en knapp som är kopplat till 5v och så sitter det en resistor på 1kohm till ingången till knappen utgången är direkt kopplat till B4.
Jag får ingen ordning på det där, det skulle inte förvåna om det saknas
en eller ett par punkter och/eller komman för att få någon mening i det.
Det är samma problem med ditt senaste inlägg, det är skitdålig svenska
och svaren blir ju därefter. Det saknas även konsekvent stor bokstav
där det borde vara det.
Sannolikt har du ingen pull up/down som Klas-Kenny också gissar.
Oavsett hur det nu ser ut, ha *aldrig* öppna ingångar.
Sen så är "program" ett väldigt dåligt namn på en *funktion* i ditt program!
När du säger att "programmet startar inte" så blir det riktigt rörigt.
> ...men då efter 10 sekunder så ska dom slockna
Hur vet du att de *inte* gör det?
Vad tror du händer efter att de har slocknat?
Att du inte hinner se det betyder ju inte att de inte slocknar.
> ...då blir allt kaos
"Kaos" är ingen vidare bra felbeskrivning.
Men som sagt, pull up/down (beroende på hur du vill koppla knappen)
*verkar* vara lösningen, om jag har föstått kopplingen rätt.
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 1 mars 2013, 06:58:56
av emilrowland
Tack för alla svar ska försöka senare att fixa det här.
Jag vet redan att jag har problem med grammatik och stavning. Och har väldigt svårt att förklara hur jag gör.
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 1 mars 2013, 09:15:05
av H.O
Då är mitt förslag att du lägger 5-10 minuter på att rita ett schema och ladda upp det. Om du har kopplingen på breadboard, snygga till den (om det behövs) så man kan SE hur det ÄR kopplat, ta en bild, öppna den i Paint eller liknande och lägg till pilar, förklarande text osv.
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 1 mars 2013, 10:00:05
av floppen
Ta en titt på hur du satt din WDT, Om denna är på så kanske den får dig att tro att programmet går vidare men du kanske får en reset med ca 1sek intervall.
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 1 mars 2013, 10:45:08
av sodjan
När det gäller anslutning av knappar till en PIC pinne så kan du kolla :
http://www.mcuexamples.com/push-buttons ... th-PIC.php
där det finns bra bilder och förklaringar till varför man gör som man gör.
Jag är ganska övertygad om att ditt problem är att det är felkopplat.
Re: Hjälp med felsökning av kod till PIC12F683
Postat: 1 mars 2013, 10:55:20
av emilrowland
Hej nu har jag tagit en bild på min koppling och lagt till lite förklaringar på den.