ATmega8 + avrdude + glad amatör = frustrerad amatör [LÖST
ATmega8 + avrdude + glad amatör = frustrerad amatör [LÖST
Hade tänkt använda en AVR i mitt klockprojekt, men lyckas inte få över min fina kod till den.
Preconditions:
8MHz ATmega8 i ett labbdäck. Kopplat in VCC, AVCC (efter rek. från databladet) och båda GND'arna.
Byggde en enkel parallellportskabel enligt instruktionerna på avrdude-sidan, med 1k-motstånd på SCK, MISO, MOSI samt SCK. Kopplade in den och försökte
avrdude säger "AVR device not responding" och "initialization failed, rc=-1"
Har dubbel och trippelkollat anslutningarna enligt ovan. Även testat med en pullup på RESET efter rekommendation på någon webbsida.
Letar lite mer på nätet och hittar en förbättrad version av den enkla parallellportsprogrammeraren med en 74HC244 och RC-filter på MISO, MOSI och SCK. Har ingen 74HC244, men väl en hederlig 4050. Testar med den och RC-filtren, men ingen skillnad. Jo, SCK-signalen ser lite snyggare ut efter att ha passerat 4050'n, även om det var lite svårt att se med oscilloskopet.
Kabeln med 1k-motstånden var en ~70cm lång CAT5 TP-kabel. Den "långa" CAT5'an kanske var problemet tänkte jag, och gjorde en ny 10cm lång kabel. Denna gång utan motstånd, och dessutom använde jag nu andra pinnar i parallellporten utifall någon av de pinnar som användes i avrdude-kabeln skulle pajat. Gjorde ett nytt entry i configfilen till avrdude för denna kabel, men ingen skillnad alls.
Har även provat med parallellporten i EPP-läge (var i ECP). No go.
Har även provat med en annan likadan ATmega8. No go.
Har även provat med en annan dator (förvisso en laptop då). No go.
Har även provat med ponyprog på en Windows-dator. No go.
Har även provat med extern kristalloscillator på ATmega8'n, även om de ska vara fabriksinställda för att använda den interna RC-oscillatorn. No go.
Byggde i min frustration även en enkel serieportsprogrammerare enligt en ritning jag hittade på Olimex. Hade dock inga zenerdioder så även här fick 4050'n rycka in. No go.
Håller på att bli vansinnig på detta. Gör förmodligen något trivialt nybörjarfel, men jag kan inte begripa vad det skulle vara.
Funderar på att kasta pengar på problemet och köpa en STK500, men samtidigt känns det lite bittert då "alla andra" får dessa enkla kablar att fungera.
Tacksam för alla förslag på vad jag kan göra för fel.
Preconditions:
8MHz ATmega8 i ett labbdäck. Kopplat in VCC, AVCC (efter rek. från databladet) och båda GND'arna.
Byggde en enkel parallellportskabel enligt instruktionerna på avrdude-sidan, med 1k-motstånd på SCK, MISO, MOSI samt SCK. Kopplade in den och försökte
avrdude säger "AVR device not responding" och "initialization failed, rc=-1"
Har dubbel och trippelkollat anslutningarna enligt ovan. Även testat med en pullup på RESET efter rekommendation på någon webbsida.
Letar lite mer på nätet och hittar en förbättrad version av den enkla parallellportsprogrammeraren med en 74HC244 och RC-filter på MISO, MOSI och SCK. Har ingen 74HC244, men väl en hederlig 4050. Testar med den och RC-filtren, men ingen skillnad. Jo, SCK-signalen ser lite snyggare ut efter att ha passerat 4050'n, även om det var lite svårt att se med oscilloskopet.
Kabeln med 1k-motstånden var en ~70cm lång CAT5 TP-kabel. Den "långa" CAT5'an kanske var problemet tänkte jag, och gjorde en ny 10cm lång kabel. Denna gång utan motstånd, och dessutom använde jag nu andra pinnar i parallellporten utifall någon av de pinnar som användes i avrdude-kabeln skulle pajat. Gjorde ett nytt entry i configfilen till avrdude för denna kabel, men ingen skillnad alls.
Har även provat med parallellporten i EPP-läge (var i ECP). No go.
Har även provat med en annan likadan ATmega8. No go.
Har även provat med en annan dator (förvisso en laptop då). No go.
Har även provat med ponyprog på en Windows-dator. No go.
Har även provat med extern kristalloscillator på ATmega8'n, även om de ska vara fabriksinställda för att använda den interna RC-oscillatorn. No go.
Byggde i min frustration även en enkel serieportsprogrammerare enligt en ritning jag hittade på Olimex. Hade dock inga zenerdioder så även här fick 4050'n rycka in. No go.
Håller på att bli vansinnig på detta. Gör förmodligen något trivialt nybörjarfel, men jag kan inte begripa vad det skulle vara.
Funderar på att kasta pengar på problemet och köpa en STK500, men samtidigt känns det lite bittert då "alla andra" får dessa enkla kablar att fungera.
Tacksam för alla förslag på vad jag kan göra för fel.
Senast redigerad av gibbles 28 maj 2006, 16:06:29, redigerad totalt 1 gång.
Välkommen till forumet!
Du verkar onekligen ha provat det mesta redan. Så det borde inte vara alltför svårt att lokalisera felet nu.
Vilket OS kör du? Har användaren rätt att komma åt parallellporten?
Kan du prova att mäta spänningarna på MOSI, SCK och RESET på AVR:en för olika värden på parallellporten? Då försäkrar du dig om att porten fungerar och att signalerna når fram.
Du verkar onekligen ha provat det mesta redan. Så det borde inte vara alltför svårt att lokalisera felet nu.
Vilket OS kör du? Har användaren rätt att komma åt parallellporten?
Kan du prova att mäta spänningarna på MOSI, SCK och RESET på AVR:en för olika värden på parallellporten? Då försäkrar du dig om att porten fungerar och att signalerna når fram.
Zyxel615: Den sitter "i botten", ja. Har en 0.1uF avkopplingskonding i varje strömförsörjningsskena på kanten så att säga (vet inte vad de heter, de där långa tvärsgående skenorna på labbdäcket.) Dessa sitter ganska nära AVR'en.
Har även testat lite med en annan AVR, en 16MHz mega8. Men inte lika utförligt som med denna.
Jag laddade ner makefilen från electrons.psychogenic och ändrade i den där det skulle ändras. 'make writeflash' kör då
...vilket verkar i sin ordning.
Har tidigare (för några år sedan) meckat lite med PIC, också med en hembyggd programmerare. En av anledningarna till att jag gav upp det var att själva programmerandet var så villkorligt. Det fungerade en dag, men inte nästa (ja, nästan så illa iaf.). Kanske ska köpa mig nåt "riktigt" nu ändå, så man slipper joxa.
Edit: Tog bort citeringarna. Kom på att det inte var kosher här.
Har även testat lite med en annan AVR, en 16MHz mega8. Men inte lika utförligt som med denna.
Jag laddade ner makefilen från electrons.psychogenic och ändrade i den där det skulle ändras. 'make writeflash' kör då
Kod: Markera allt
avrdude -c bsd -p m8 -P /dev/ppi0 -e -U flash:w:flash.hex
Har tidigare (för några år sedan) meckat lite med PIC, också med en hembyggd programmerare. En av anledningarna till att jag gav upp det var att själva programmerandet var så villkorligt. Det fungerade en dag, men inte nästa (ja, nästan så illa iaf.). Kanske ska köpa mig nåt "riktigt" nu ändå, så man slipper joxa.
Edit: Tog bort citeringarna. Kom på att det inte var kosher här.

Ja dessa programmerare är verkligen bara strul. För mig funkade det att bränna små program (oftast). Om det var större program blev det FLASH ERROR överallt...
Sen la den bara av. Dessutom är USB trevligt, nu kan jag programmera AVR ifrån min Mac
Kommer inte på vad det skulle kunna vara... jo... något jag ofta tycker är besvärligt är pin-numren till kontakterna. Vissa säger "pin 6" men talar inte om från vilket håll man ska titta. Det kanske bara är jag som tycker detta är jobbigt, men titta efter tjugotvå extra gånger så du har gjort rätt där.
Sen la den bara av. Dessutom är USB trevligt, nu kan jag programmera AVR ifrån min Mac

Kommer inte på vad det skulle kunna vara... jo... något jag ofta tycker är besvärligt är pin-numren till kontakterna. Vissa säger "pin 6" men talar inte om från vilket håll man ska titta. Det kanske bara är jag som tycker detta är jobbigt, men titta efter tjugotvå extra gånger så du har gjort rätt där.
cykze: Tack och bock.
Jag kör FreeBSD, och jag har satt o+rw på /dev/ppi0. (Det är det inte som standard f.ö., men avrdude påpekade det så snällt vid första försöket.)
Utan programmeraren inkopplad har jag 4V (inte 5(!)) på RESET och 0V på MOSI, SCK och MISO.
Med programmeraren inkopplad (men utan att köra avrdude) dras RESET låg, vilket nog är i sin ordning. MOSI och SCK förblir låga, medan MISO dras hög. Kanske skall vara så? (Efter en körning med avrdude förblir även MISO låg i idle...)
Kör jag sedan avrdude och mäter lite direkt på AVR'en med oscilloskopet så flashar RESET till väldigt kort, hinner inte trigga det. SCK, MISO samt MOSI går höga en kort stund. Den puls jag ser är 15-20ms. Den som ändå hade haft en logikanalysator för att se i vilken ordning vad dras högt osv.
Provade nu att koppla ur MISO och mäta och den går hög ändå, så det är AVR'en som "svarar". Den pulsen kommer inte från parallellporten.
Allt ovan med den "långa" ~70cm CAT5-kabeln, eftersom jag byggde den så snyggt med krympslang och kontaktstift till kopplingsdäcket och allt.
Jag kör FreeBSD, och jag har satt o+rw på /dev/ppi0. (Det är det inte som standard f.ö., men avrdude påpekade det så snällt vid första försöket.)
Utan programmeraren inkopplad har jag 4V (inte 5(!)) på RESET och 0V på MOSI, SCK och MISO.
Med programmeraren inkopplad (men utan att köra avrdude) dras RESET låg, vilket nog är i sin ordning. MOSI och SCK förblir låga, medan MISO dras hög. Kanske skall vara så? (Efter en körning med avrdude förblir även MISO låg i idle...)
Kör jag sedan avrdude och mäter lite direkt på AVR'en med oscilloskopet så flashar RESET till väldigt kort, hinner inte trigga det. SCK, MISO samt MOSI går höga en kort stund. Den puls jag ser är 15-20ms. Den som ändå hade haft en logikanalysator för att se i vilken ordning vad dras högt osv.

Provade nu att koppla ur MISO och mäta och den går hög ändå, så det är AVR'en som "svarar". Den pulsen kommer inte från parallellporten.
Allt ovan med den "långa" ~70cm CAT5-kabeln, eftersom jag byggde den så snyggt med krympslang och kontaktstift till kopplingsdäcket och allt.
Ett försök till innan jag ger upp helt, tänkte jag.
Lödde ny kort kabel (<15cm) av fin mjuk flertrådig kabel. Denna kopplade jag (utan skyddsmotstånd) rakt på en 4050 för uppsnyggning av signalen, och vidare till AVR'en. Flyttade också AVR'en till andra sidan av labbdäcket, just in case. Dubbelkollade allt noggrant och kopplade sedan in det, utan större förhoppningar.
Men tro på f*n, det funkade direkt.
Bild på kopplingen:

Lite opraktiskt med så kort kabel, så jag testade med en ~1,5 meter lång parallellkabelskarv, och även med den fungerade det nu.
Synd nästan. Jag hade ställt in mig på att beställa en STK500, men nu kan jag ju lägga de pengarna på något annat.
Tack för hjälpen iaf! Bara det faktum att det trillade in lite förslag gjorde att inspirationen återkom.
Lödde ny kort kabel (<15cm) av fin mjuk flertrådig kabel. Denna kopplade jag (utan skyddsmotstånd) rakt på en 4050 för uppsnyggning av signalen, och vidare till AVR'en. Flyttade också AVR'en till andra sidan av labbdäcket, just in case. Dubbelkollade allt noggrant och kopplade sedan in det, utan större förhoppningar.
Men tro på f*n, det funkade direkt.

Bild på kopplingen:

Lite opraktiskt med så kort kabel, så jag testade med en ~1,5 meter lång parallellkabelskarv, och även med den fungerade det nu.
Synd nästan. Jag hade ställt in mig på att beställa en STK500, men nu kan jag ju lägga de pengarna på något annat.

Tack för hjälpen iaf! Bara det faktum att det trillade in lite förslag gjorde att inspirationen återkom.