Problem att ladda inbyggd ATmega328 (via boot loader)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
RoPa
Inlägg: 630
Blev medlem: 13 januari 2006, 10:32:06

Problem att ladda inbyggd ATmega328 (via boot loader)

Inlägg av RoPa »

Hej,

Jag sliter mitt hår men fattar inte vad som knasar.

Jag har en ATMEGA328 som jag skjutit in en Arduino bootloader i.
Jag kan ladda program till den när den sitter på en breadboard (8MHz internal) men när jag sätter den i målsystemet så vill den inte. Jag har kopplat in målsystemet via breadboarden, så enda skillnaden är i vilken ände av den sista kopplingstråden som 328 kretsen sitter.
TR och RX dioderna flimrar till inledningsvis men den börjar inte överföringen och efter en tid timar Arduion IDE ut.

Det som skiljer breadboarden från målsystemet är att i målmiljön finns det saker anslutet till I/O pinnarna men innan har jag kört med hela "målsystemet" i labb uppkoppling anslutet till en Uno och då var det inget problem att ladda programvaran med I/O pinnarna anslutna (naturligtvis inte, varför skulle det vara det?).

Är det någon som har haft detta problem och kommit på vad det beror på?

Felkoderna från Arduioni IDE är inte så hjälpsamma... dessutom olika från gång till annan...

Kod: Markera allt

Binary sketch size: 1 108 bytes (of a 30 720 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00
eller

Kod: Markera allt

Binary sketch size: 1 108 bytes (of a 30 720 byte maximum)
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x42
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
eller

Kod: Markera allt

Binary sketch size: 1 108 bytes (of a 30 720 byte maximum)

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x41
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x42
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
HJÄLP!

Känns lite surt att behöva ta ur chipet för varje programmering när jag har en seriekontakt på målsystemet...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Problem att ladda inbyggd ATMEGA328 (via boot loader)

Inlägg av sodjan »

> och då var det inget problem att ladda programvaran med I/O pinnarna anslutna (naturligtvis inte, varför skulle det vara det?).

Tja varför? Det är ju ganska klart att det *kan* bli problem, det beror helt på
vad det är som I/O pinnarna för övrigt är anslutna till. Lägg dom till GND så
får du se hur mycket program du kan ladda... _)

Du skriver väldigt lite om hur det hela är kopplat, men i kodrutorna nämns "stk500"
i felmeddelanderna. Du kanske ska beskriva kopplingen bättre.

> ...när jag har en seriekontakt på målsystemet...

RS232? ISP?

Om man googlar "expect=0x14, resp=0x51" så får man en hel del träffar
som diskuterar problem med hanteringen av reset-pinnen.
Användarvisningsbild
Wedge
Inlägg: 1026
Blev medlem: 8 juli 2012, 17:33:33

Re: Problem att ladda inbyggd ATMEGA328 (via boot loader)

Inlägg av Wedge »

En UNO kommunicerar via en 16U2, och jag gissar att du använt nåt annat när det krånglat. En FTDI-kabel, kanske?
Då kan det ju vara en drivrutinsfråga. Men då borde det ju se ungefär lika ut kopplingsmässigt på både målsystem och breadboard...?

Kollat att alla signaler är rätt, dvs jord, RX och TX anslutna, reset via kondensator på DTR, och matningsspänningen på FTDIn INTE ihopkopplad med Atmegans ifall målsystemet har egen strömförsörjning?
Användarvisningsbild
adent
Inlägg: 4245
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Problem att ladda inbyggd ATMEGA328 (via boot loader)

Inlägg av adent »

Jag har experimenterat en del med optiboot. Är reset kopplad till DTR? Annars reseta målsystemet och kör igång laddningen direkt efter, eller kanske t.o.m. starta laddningen och snabbt som attan reset:a målsystemet!

MVH: Mikael
RoPa
Inlägg: 630
Blev medlem: 13 januari 2006, 10:32:06

Re: Problem att ladda inbyggd ATMEGA328 (via boot loader)

Inlägg av RoPa »

Jag använder Uno'n för att ladda ner programmet med hjälp av boot strap koden jag bränt in.
Följer instruktionerna på arduino.cc till punkt och pricka och det fungerar utmärkt i breadboarden men inte när jag flyttar kretsen till målsystemet och förlänger kablarna från breadboard till målsystemet ellr om jag ansluter målsystemet direkt.
Det funkar däremot om målsystemet är anslutet till breadboarden men att kretsen sitter kvar i breadboarden så det är inte något som är fel anslutet till de fem pinnarna som behövs: Reset, Tx, Rx, VCC och VDD.
Har använt sketchen blink som test (liten enkel och laddar snabbt) och kretsen funkar i målsystemet, den "blinkar" med pinne 19 som den ska och trycker jag på reset på Uno'n (med kretsen i målsystemet) så går reseten fram och blinket avstannar och så startar den om. (Bilden togs med "blink på" röda dioden).

Både Tx, och Rx dioderna blinkar till när uploaden ska börja men den kommer inte vidare och drar igång laddningen.

Bifogar en bild där det syns att kretsen sitter i målsystemet och att breadboarden sitter mellan Uno'n och målsystemet.
Om jag flyttar kretsen från målsystemet till breadboarden och låter alla sladdar sitta där de sitter så fungerar det...
På bilden matar jag målsystemet med egen 5V (GND sammankopplade) men det blir samma resultat om jag tar 5V från Uno'n.
328 i målsystemet.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
RoPa
Inlägg: 630
Blev medlem: 13 januari 2006, 10:32:06

Re: Problem att ladda inbyggd ATMEGA328 (via boot loader)

Inlägg av RoPa »

Ok, nu begränsar vi felmöjligheterna.
Gick ett steg till och kopplade ut pinnarna från målsystemet till en andra breadboard.
AGDN - AGND (p22)
GDN - GND (p8)
AVCC - AVCC (p20)
VCC - VCC (p7)
RESET - RESET (p1)
RX - RX (p2)
TX -TX (p3)

Då funkar det att ladda upp programvaran... :eh:
Vad kan det vara för fel på de andra pinnarna som gör att det inte gör att ladda upp program? :wall:
Jag har AREF kopplad till VCC men resten är bara vanliga I/O????
328 i breadboard efter målsystemet.jpg
Ska prova att koppla i pinne efter pinne och se när det slutar fungera (alla trial and errors moder)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Problem att ladda inbyggd ATMEGA328 (via boot loader)

Inlägg av sodjan »

Dålig kontakt i IC hållaren? Något av de flata benen på
ICn glappar med de runda pinnarna på sladdarna ger kontakt?
Användarvisningsbild
Icecap
Inlägg: 26648
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Problem att ladda inbyggd ATMEGA328 (via boot loader)

Inlägg av Icecap »

Dom ledningar i den IC-sockel kommer att skada sockeln! Detta ger glappkontakt och det kan ge alla sorters problem. Och skadan har redan skett.
RoPa
Inlägg: 630
Blev medlem: 13 januari 2006, 10:32:06

Re: Problem att ladda inbyggd ATMEGA328 (via boot loader)

Inlägg av RoPa »

Tack för tipsen!

@Icecap, ja nu är den sockeln helt körd, den måsta jag löda loss och byta till en ny.
Jag hade däremot inte satt några testpinnar i orginla sockeln innan jag satte i kretsen (då hade jag VETAT vad felet var...).

Kan även meddela att jag gjorde idiot övningen och kopplade in pinne för pinne (tur jag har många kopplingstrådar) och det funkar hela tiden så Sodjans förslag om att en pinne på kretsen inte fick kontakt i sockeln är den nu mest troliga. Lite oväntat i en helt ny sockel dock men konstigare saker har hänt.
328 i breadboard efter målsystemet fullt ansluten.jpg
@Sodjan, naturligtvis samma labbkoppling som målsystem anslutet till pinnarna. Ville verifiera att koden fungerade med de pin val jag gjorde för layuten innan jag tillverkade kortet. Mn jag förstår inte varför man inte skulle få sätta I/O pinnar till jord? Före initialisering är de alla input och skadas/skadar inte.
Däremot kan det gå illa om de i programmet initieras till output High... diod blink pinnen (p19) är i målsystemet oansluten...
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av RoPa 25 mars 2014, 22:58:45, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Problem att ladda inbyggd ATMEGA328 (via boot loader)

Inlägg av sodjan »

När det gäller "I/O pinnar" så kanske det är lite missförstånd. :-)

Jag antog att det gäller just dom pinnar som även används för prorammeringen
(Nu så vet jag inte säkert om det är ISP eller bootloader som används...)
Det går ju att använda dessa till annat om man tänker sig för.

När det gäller I/O pinnar rent generellt, så ska de normalt inte lämnas (ja,
aldrig faktiskt) "öppna", d.v.s som oanslutning ingångar. Det kan
ge upphov till alla möjliga underliga och svårdiagnostiserade problem.
Om det är en bootloader som används så kör ju processorn då helt
normalt och ingångar bör inte lämnas öppna.

Onavända I/O pinnar ska antingen sättas som utgångar i koden (enklast) eller
kopplas med motstånd till någon känd/fast nivå (pullup eller pulldown).

Hur som, du har alltså nu lyckats med programmering i din "trestags" uppkoppling?
Hm, ja nästa steg är ju en ny sockel så får vi se då... :-)
RoPa
Inlägg: 630
Blev medlem: 13 januari 2006, 10:32:06

Re: Problem att ladda inbyggd ATMEGA328 (via boot loader)

Inlägg av RoPa »

Helt rätt Sodjan, jag har dock tagit en risk med att lämna XTAL pinnarna flytande eftersom jag inte har en kristall.
Borde knyta dem till GND via ett motstånd, ett litet ytmotstånd mellan pinne och jordplan kommer att fungera.

ISP pinnarna är samma som för SD-kortet så via den headern kan jag komma åt ISP om jag skulle behöva.
TX/RX pinnarna är de jag använder för programmeringen då jag har en ARDUINO boat loader i kretsen, TX/RX vill jag även gärna ha "fria" så jag kan ha de för debug/log.

Har hämtat upp en orginal ARDUION USB2SERIAL på Kjell&Co idag, får se om den kommer till nytta.

Ska prova en ny sockel, galet pinsamt om det var så enkelt (men det är ju oftast de "för" enkla felen som är svårast)...
Tidigare inlägg uppdaterat med bild på kabelhärvan...
RoPa
Inlägg: 630
Blev medlem: 13 januari 2006, 10:32:06

Re: Problem att ladda inbyggd ATMEGA328 (via boot loader)

Inlägg av RoPa »

Så, åter med 328 i målsystemet (ej bytt sockel) med en DIP-CLIP på sig, funkar? Nehej, inte det heller... :wall:
328 i målsystem med DIP-CLIP.jpg
Bara i en DIP-CLIP, funkar? Jo men visst funkar det då! :eek2:
328 naken i DIP-CLIP.jpg
Varför hatar den mitt målsystem? :verysad:

Ska löda in en ny sockel nu men jag har inte stora förhoppningar längre. Ska ge den ett försök med USB2SERIAL sen ger jag upp. Så jobbigt är det inte att programmera den vid sidan om.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Icecap
Inlägg: 26648
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Problem att ladda inbyggd ATmega328 (via boot loader)

Inlägg av Icecap »

Då du är mycket sparsam i en del saker är detta bara ett skott i dimman:
Hur spänningsmatas målsystemet under programmeringen?
RoPa
Inlägg: 630
Blev medlem: 13 januari 2006, 10:32:06

Re: Problem att ladda inbyggd ATmega328 (via boot loader)

Inlägg av RoPa »

@Icecap
På bilden matar jag målsystemet med egen 5V (GND sammankopplade) men det blir samma resultat om jag tar 5V från Uno'n.
Kan lägga upp schema och mönster om det kan hjälpa.

Från Arduino kommer ca 4,75V så jag har kopplat in egen 5V till kretsen (ligger på 5,08V).
Men det påverkade inte hur bra eller dåligt det fungerar, får samma resultat oavsett.
All programmering går bra om kretsen inte sitter i målsystemet, i Breadboard före eller efter eller direkt i en DIP-CLIP går bra.

Provade med USB2SERIAL men med den fungerar det inte alls (kommer dock en bit in i programmeringen med den innan det stannar).
Läste om att vissa haft problem med bufferten i Boot loadern på Atiny328 (kräver en extern USB/serie omv.) och löst det genom att ändra koden i bootloadern innan den bränts in, ökat från 64B till 128B. En Atiny328 är i stort samma som en Uno fast ytad, så felet kan vara gemensamt. Det ligger nära till hands att jag ska prova det.
Ska även ta fram skåpet och mäta signalkvaliten på Reset, Tx och Rx signalerna.

Ja, mönsterkortet är mätt och inspekterat med lupp.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Problem att ladda inbyggd ATmega328 (via boot loader)

Inlägg av sodjan »

> Varför hatar den mitt målsystem?

Jag minns inte om vi har sett schemat, men det verkar ju som
att det är något där som stör programmeringen.
Skriv svar