ATMega16 tappar huvudet efter kodsnutt.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

ATMega16 tappar huvudet efter kodsnutt.

Inlägg av Fagge »

Jag har precis lött ihop ett testkort med en Mega16 för att för andra gången lära mig AVRns assembler språk, vilket skiljer en del från HC11an som jag tidigare har jobbat med.
Hur som helst, så är alla I/O pinnar utdragna till stiftlister med lysdioder i serie med 1K motstånd till Vcc. En 16MHz kristall med tillhörande kondningar är monterade & lika så en MAX232 krets.

Kortet funkar fint det lilla jag har testat hitintills.
I går när jag började knappla lite, så fick jag inte subbrutiner att köras. Detta berodde på att jag hade glömt att ange startadressen för stackpekaren till RAMEND.
Så ut på nätet & högg första bästa kodsnutt & klistrade in den i mitt lilla blink program.
Efter att ha laddat ner koden i processorn så ballade µcn ur så pass att jag inte kan programmera om den.
Ponyprog säger DeviceMissing.
Efter att ha kliat hål i huvudet, så bytte jag kretsen i hopp om att det var ESDn som hade tagit kretsen. Men efter att ha laddat ner samma mjukvara i den nya kretsen så blev den också helt hjärn död.

Jag har inte rört några fusebitar.

Är det någon som har några idér om vad fasen det är som händer?.

Det är kodsnutten nedan som ställer till det. & den är tänkt att blinka växelvis mellan Port C & D i väldigt snabb takt.


.include "m16def.inc"

.def Temp = R16 ;Gives "Defines" Register R16 the name Temp

//--- Interrupt Vector -------------------------------------------------
.org 0x0000
RJMP MAIN

MAIN:

ldi r16, low(RAMEND)
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16

//--- Init --------------------------------------------------------------
Init_PORTC:
ldi r16, 0b11111111 ; Sätt Port C & D som utgång
out DDRC, r16
out DDRD, r16
//--- Main --------------------------------------------------------------

LOOP1:

ldi r16, 0xFF ; Ladda R16 med talet FF Och mata ut det till
out PORTC, r16 ; PORTC
rcall delay
ldi r16, 0xFF ; Ladda R16 med talet FF Och mata ut det till
out PORTD, r16 ; PORTD
rcall delay
ldi r16, 0x00 ; Ladda R16 med talet 00 Och mata ut det till
out PORTC, r16 ; PORTC
rcall delay
ldi r16, 0x00 ; Ladda R16 med talet 00 Och mata ut det till
out PORTD, r16 ; PORTD
rcall delay
rjmp Loop1


//----DELAY---

DELAY:


ldi R16, 255
DELAY_MS1: ;
dec R16
brne DELAY_MS1
ret
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

Inlägg av Fagge »

Alltså är det ens möjligt programmera sönder en krets, under förutsättning att man inte har något aktivt kopplat mot I/O pinnarna?.
Och direkt efter en reset så ska väll datorn kunna komma åt booten & ta över via SPI.? Den funktionen ska man väll inte kunna råka programmera bort av misstag, såvida man inte pillar på fuse bitarna?.

Programsnutten har jag stegat mig igenom i AVRstudio & det verkar ju inte vara något fel på den.

Föresten µcn ska väll köra med sin egen RC klocka, såvida man inte har angett något annat, trots att man har en extern kristall kopplad till µcn?
Den externt monterade kristallen stör väll inte den inbyggda RC oscilatorn?

Ett par bilder på eländet…

Bild
Bild
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Det intressanta är nog att hur programmeringsinterfacet är kopplat. ISP, JTAG ?
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

Inlägg av Fagge »

SPI Programeringsinterfacet är (AVR ISP with SI-Prog) den under STK200/300 & PonyProg som överförings program.
http://www.lancos.com/prog.html
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

Inlägg av Fagge »

Efter att ha läst runt på diverse forum, så verkar som att det är en bugg i senare versioner av ponyprog, & den fibblar ibland till fusebitarna & skrotar kretsen = Jävligt kul :evil:

Så efter att ha bytt krets igen & installerat V2,05 av PP, så verkar det fungera…
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Kanske detta då http://ponyprog.sourceforge.net/phorum/read.php?2,558

Kanske inte ens går att rädda med en "riktig" programmerare då alla fusebitar verkar bli satta.
bos
Inlägg: 2308
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Inlägg av bos »

Fagge skrev:den fibblar ibland till fusebitarna & skrotar kretsen = Jävligt kul :evil:
Urk.

Jag är glad att jag fortfarande kör THT och socklar...
Användarvisningsbild
Icecap
Inlägg: 26622
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Och jag trivs med att bara behöva en serieport och att det finns inbyggd bootloader i Renesas, ingen fusebits eller skit, bara ett 56 bit lösenord som inte används till att börja med.
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

Inlägg av Fagge »

Någon som har en ”riktig programmerare”, dit jag skulle kunna skicka dom 2 kretsarna. Så kan ni testa att låsa upp dom. Skulle det funka så kan jag bjuda på den ena!. :)

Föresten Jtag interfacet verkar vara akivt, eftersom jtagens pinnar är dragna med dom interna pullupp motstånden, ser jag på lysdioderna. Så det kanske finns lite hopp?.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Skicka hit dom du alternativt du lånar en programmerare. Jag har både JTAGICE mkII, AVRISP mkII, AVR Dragon och STK200. Om inte något av detta funkar så är det nog kört...
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

Inlägg av Fagge »

Härligt, PMa mig din adress så postar jag dom på måndag!.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

thepirateboy: Eftersom fuse-bitarna verkar ha blivit helt fel satta så kommer nog inte ISP-programmering fungera. Parallellprogrammering är väl den metod som har störst chans att fungera. Fixar någon av dina programmerare det?

Fast det är möjligt att JTAG kan fungera också.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Dragonen ska klara PP enligt specen. Tänkte börja att testa med JTAG annars får det väl bli PP även om det är lite bökigt.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Fusebitarna var mycket riktigt satta till 0x00 0x00. Det gick dock att få kontakt och läsa Device signature med JTAG. Fusebitarna gick inte att programmera, utan var låsta till 0x00 0x00. Jag gjorde då en erase av kretsen och sedan var det inga problem. Gjorde ett litet program som blinkar en diod för verkligen kolla att kretsen funkar. Ska kolla den andra kretsen imorrn.

Bild
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

Inlägg av Fagge »

Härligt, stort tack till thepirateboy, som orkar krabba med sånt!.
Skriv svar