Instabil Pic18F458
Instabil Pic18F458
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.
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.
- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56
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
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
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.
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.
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
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
