Sida 1 av 4
Instabil Pic18F458
Postat: 23 juni 2005, 19:30:02
av Chribbe76
Nu har jag stött på ett problem som är skumt.
Jag förstår inte vad som gör att picen startar om hela tiden.
Om jag ändrar små saker i programmet (tex fler nop:ar) så kan jag få allt att bli stabilt.
Jag har testat med 2st picar och den ena är mer instabil än den andra.
Det jag vill göra nu är att fråga Microchip men det kan vara bra att posta här innan jag blandar in dom.
Här är Projektet i MPLAB V7.11
http://ake.myftp.org/forum/Bugg_med_Pic18F458.rar
Programmet gör föjande:
* Vänta tills PORTD,0 = 1
* Blinka med en lysdiod på PORTD,1
Det som är inkopplat är:
* Matning 5V
* kristal 10Mhz.
* Pull up på MCLR
* Pull down på PORTD,0
* Lysdiod + motstånd på PORTD,1
Om du vill hjälpa mig så kan du komma med förslag på fel eller koppla in det som jag har gjort, så får vi reda på om du får samma resultat.
Koppla in matningen och dutta med +5V på PORTD,0
Lysdioden blinkar, om den slutar blinka har picen startat om eller löpt amok.
Tack.
Postat: 23 juni 2005, 19:42:10
av Schnegelwerfer
Har du satt en avkopplingskonding på spänningsmatningen på PIC:en? 100nF så nära kretsen som möjligt är aldrig fel...
Postat: 23 juni 2005, 19:48:10
av Chribbe76
Ja, det har jag.
Jag har provat med och utan och i alla tänkbara storlekar, ingen skillnad.
Postat: 23 juni 2005, 20:59:05
av macgyver
har du kollat igenom dinna macron ordentligt?
t.ex. i macrot Time_ som används via Delay står det:
if (TimE_==.2)
goto $ + 4
exitm
endif
eftersom goto ligger inuti ett macro så läggs ju "goto $+4" in i koden
dvs i Delay innan "goto Igen" kommer ett "goto $+4" vilket leder till att programmet går ur loopen och därmed flippar ur
Igen:
bsf Led
Delay .1000000
bcf Led
Delay .1000000
goto Igen
Postat: 23 juni 2005, 21:19:11
av Chribbe76
goto $ + 4
blir ett goto som pekar på nästa instruktion för en goto inst. tar 4byte.
Jag testade i simulatorn och det verkar vara OK.
Postat: 23 juni 2005, 21:25:28
av macgyver
aha okej, ja isåfall så verkar det ju inte vara nåt fel på koden
har du kollat att oscillatorn fungerar riktigt? t.ex. du kan ju testa att köra med intern osc och se om det blir nån skillnad
Postat: 23 juni 2005, 21:37:49
av Chribbe76
Den här picen har tyvärr ingen intern oscillator men jag ska nog testa att dribbla lite med oscillatorn och se vad som händer.
Men jag tror inte att felet ligger där.
Tack för dina ide'er, om du kommer på något mer så skriv.
Postat: 23 juni 2005, 21:45:25
av cykze
Har du provat med konding mellan Reset-pinnen och jord?
Postat: 23 juni 2005, 21:48:55
av Chribbe76
Nej, varför ska man ha det?
Vilket värde ska den ha?
Nu har jag har testat med 100nF mellan reset och jord.
Samma resultat.
Postat: 23 juni 2005, 22:09:31
av cykze
Jag hade problem med att en AVR resetades då jag körde med ett gammalt dåligt nätagg. Speciellt var det då man rörde på någon pinne eller "dutta med +5V på PORTD,0" som du skriver. En konding mellan Reset och jord hjälpte då.
Postat: 23 juni 2005, 22:17:18
av Chribbe76
"dutta med +5V på PORTD,0" är för att den ska gå förbi väntgrejen innan lysdioden ska börja blinka, det har inget med felet att göra.
Om jag lägger till 12 nopar i den stora "nop-hopen" så blir picen stabil.
Jag kan ta på alla pinnar utan att picen flippar ur.
Postat: 24 juni 2005, 00:06:45
av frejo
Jag har haft problem när jag programmerat avr:er, programmet har flera gånger buggat ur om jag försökt programmera med auto: erase, open file, write. Det verkar som att den behöver lite tid mellan erase och write av någon anledning. Så nu får jag trycka erase manuellt och sen write så går det finfint.
Glömmer jag erase blir det som sagt strul, jag antar att det beror på att det ligger skräp kvar i flash. Det kan bli de mest konstiga fel,från att en sträng som skrivs ut till uarten tappar nån bokstav till att hela alltet hänger sig.
Postat: 24 juni 2005, 09:48:07
av Chribbe76
När jag programmerar med MPLAB och PicStartPlus så måste jag trycka erase flash device först annars får jag verifieringsfel överallt så jag antar att MPLAB inte raderar minnet alls.
Nu har jag testat att byta kristall (hittar inga andra än 10Mhz tyvärr) och kondingar till olika värden. Ingen skillnad.
Jag testade att programmera hela flashminnet (snark) i den pic som funkade bäst och då fungerade den ännu bättre, efter en dutt på PORTD,0 så blinkade lysdioden 30sek. En dutt till och den blev hur stabil som helst.
Nu kan jag inte få den att flippa ur längre.
Samma behandling av den sämsta picen gav inget resultat.
Om jag stänger av PLL:en i picen så fungerar det perfekt med båda picarna, så den interna klockfrekvensen verkar påverka.
Nästa test: Samma program i en Pic18F452 men då tog jag naturligtvis bort
movlw .7
movwf CMCON
Det funkade bra men så tänkte jag att små ändringar i programmet kan ju ändra på resultatet så jag la in 2 st nopar istället och då fick jag samma resultat som Med Pic18F458.
Va fan...... Jag blir galen

Postat: 24 juni 2005, 10:35:55
av cyr
Hur ser kopplingen ut? Sitter den på en experimentplatta eller? Hur är jordningen osv?
Postat: 24 juni 2005, 10:48:35
av Chribbe76