seriell avr programerare

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

seriell avr programerare

Inlägg av mullemeck »

Hej!

I en kurs jag läser just nu ska vi bygga ett återkopplat system med avr-processorer.
Att programerar processorer har jag gjort länge så det är inte några problem, dock är det specificerat att vi måste använda oss av ett färdig interface för all kommunikation från datorn. Det betyder att programeringen måste göras genom att bitbanga serieporten.

Då det bara finns möjlighet till två output och två input så har jag skrivit om en del i avrdude så att man drar Reset låg manuellt när programmet säger till en.

Detta funkar perfekt på en atmega88 med orginalinställningarna, 1mhz intern klocka. Men om man ändrar till 8mhz intern klocka eller extern kristall så tvärvägrar det.

Istället för att skicka tillbaka vettig data får man bara ett eko på det som skickas till processorn en byte senare.

Använder i vanliga fall en stk200 klon som fungerar utmärkt med processorn i fråga under alla konfigurationer.

Någon som har nån teori om vad felet kan vara? Måste man programera en processor snabbare när den har högre klockfrekvens?
Just nu programeras den i ganska långsamt tempo då där sitter optokopplare i interfacet som inte klarar av höga hastigheter.

/Mullemeck
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Jag tycker du ska satsa på en bootloader istället. Då kan du köra vanlig UART, med två trådar, mellan dator och AVR. Du slipper dessutom det där med att behöva dra Reset låg manuellt.

> Istället för att skicka tillbaka vettig data får man bara ett eko på det som skickas till processorn en byte senare.

Har du gjort så att avrdude skriver ut mottagna bytes, eller hur vet du att du får ett eko?

> Måste man programera en processor snabbare när den har högre klockfrekvens?

Jag har inte läst något i databladet som tyder på att det inte går att programmera hur långsamt som helst.
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

Bootloader har jag tänkt på, har dock inte tid att få igång det nu. Tror det beror på att programmeraren inte får köra med reset själv, ska försöka få igenom den också via ett annant bord.

Avrdude kan skriva ut det den skickar och tar emot om man lägger till flaggan -vv

Det är inte hastigheten som ställer till det, testade slöa ner koden till stk200 och då funkade det utmärkt.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Har du läst i databladet om vad som står om seriell programmering, så att du vet precis hur det fungerar?

Prova med transistorer istället för optokopplare.

Det finns en tidsgräns för maximal stig- och falltid för klocksignalen (SCK). Gränsen ligger vid 1.6 µs enligt databladet, vilket kan bli lite tajt med en optokopplare. Jag är inte säker på att gränsen gäller för programmering, det kanske bara är för vanlig SPI. Men det kan vara värt att kolla upp iaf.

> Tror det beror på att programmeraren inte får köra med reset själv, ska försöka få igenom den också via ett annant bord.

Det skulle kunna ha med det att göra. Kolla efter dom ställen i koden som gör en reset under initieringen av AVR:en och gör så att du även där får göra reset:en manuellt.

Fast jag tycker nog att det vore enklare att använda bootloader ändå. Du kan säkert hitta något färdig på AVRfreaks, om du inte orkar/hinner göra det själv.
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

Har byggt ett optokort till så att även reset styrs av datorn, dock utan några större framgångar fortfarande samma problem.

Det du sa om man stigtid kan vara något, dock funkar det ju att programera när man kör på lägre klocka än 1Mhz, kan ju vara att den tiden förändras med klockhastigheten.

Har läst igenom i databladet för en Mega88 och alla steg är rätt, där står dock inget om nångon lägsta tid man får programera i.
Ska försöka hitta nån appnote där det kanske står mer.

Det luriga är att en anna som läser kursen och kör via en annan sorts programerare men via optokopplarna säger att han har fått det att funka. Väldigt lurigt dethär.

Nu lutar det åt att bygga en extra klockgenerator-krets som kan byglas så klockan delas ner när den ska programeras.

/mullemeck
Användarvisningsbild
chille
Inlägg: 2469
Blev medlem: 25 juni 2003, 20:54:41
Ort: Stockholm
Kontakt:

Inlägg av chille »

Bara så du vet så har Atmel exempelkod för att programmera seriellt via UART. Och bara så du vet är den koden kompatibel med AVR Studio, så du kan programmera och programmera (:lol:) med samma program.

Varför krångla till det när man kan göra det enkelt? Har du Flash-minne så det räcker, så är det ju bara att trycka in Atmels färdiga bootloader.
Användarvisningsbild
Icecap
Inlägg: 26685
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Grejen är väl att få dit bootloadern först eller hur?

Om man inte kan programmera kretsen till att börja med är en bootloader ju totalt överflödig. Att den sedan är mycket bra är ju en annan sak.
Användarvisningsbild
chille
Inlägg: 2469
Blev medlem: 25 juni 2003, 20:54:41
Ort: Stockholm
Kontakt:

Inlägg av chille »

Jo, det är sant. Har förståss inte läst hela tråden, kanske borde gjort det innan. Men mullemeck måste väl ändå ha en vanlig ISP-programmerare han kan använda för att få in bootloadern!?

Jag tycker nästan Atmel borde skicka sina kretsar med bootloader som standard. 8)
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

hehe jo kan bli lite moment 22 där med bootloader ifall man inte har nån isp programerare.

Jag löste detta problemet på det enkla sättet, helt enkelt byta till en lägre kristall när jag skulle programera och sen byta tillbaka till 20Mhz

Även om det finns färdig kod osv så brukar det alltid strula till sig har jag märkt, hade inte riktigt tid att sitta och meka med det då jag ändå satt till 5 på mogonen dagen innan det skulle redovisas för att få klart de sista detaljerna.

Nu är den kursen och det projektet över, kommer inte använda mig av den programeraren längre. Använde den egentligen bara en gång när projektet redovisades då man var tvungen att använda den. Under utvecklingen körde jag på en stk200 klon för att få upp hastigheten lite i programeringen.
Skriv svar