Ska programmera Atmega, behöver begreppsförklaringar
Re: Ska programmera Atmega, behöver begreppsförklaringar
Alltså, när man programmerar med en "vanlig" programmerare (som t.ex AVRISP
eller liknande) så är det normala att varje programmering inleds med en
"Erase All". D.v.s att *hela* programminnet, inkl bootloadern!, raderas.
Det är fullständigt normalt.
Om du vill köra med bootloader så använder du bara AVRISP för den initiala
ladningen, d.v.a för att få in bootloader i processorn. All senare programmering
sker via den andra (serie-) kanalen mot bootloadern. Du kan inte använda en
vanlig programmerare igen, utan att också ladda om bootloadern varje gång.
*Om* man använder en vanlig programmerare som t.ex AVRISP så har
bootlodern ingen som helst funktion, den är bara "i vägen", så att säga.
Men OK, jag ville ha det tydligt. Nu *låter* det ju som att det ändå
är ungefär så du försöker göra. Kan du göra "3" flera gånger upprepat
direkt efter varandra utan att gära någonting mellan?
> 5. Jag kör på nytt över ett program från Arduino IDEn mha ovan nämnda USB/rs232-adapter.
Ett program vilket som helst eller samma program som i steg "3" ??
Sen så, som Jesse påpekar, så körs bara bootloadern under ett par sekunder efter
reset av processorn, det är enbart just *då* som du kan köra via USB/RS232 adaptern.
Det framgår inte av din beskrivning vad du faktriskt gör, så det går inte att
säga mer om det.
eller liknande) så är det normala att varje programmering inleds med en
"Erase All". D.v.s att *hela* programminnet, inkl bootloadern!, raderas.
Det är fullständigt normalt.
Om du vill köra med bootloader så använder du bara AVRISP för den initiala
ladningen, d.v.a för att få in bootloader i processorn. All senare programmering
sker via den andra (serie-) kanalen mot bootloadern. Du kan inte använda en
vanlig programmerare igen, utan att också ladda om bootloadern varje gång.
*Om* man använder en vanlig programmerare som t.ex AVRISP så har
bootlodern ingen som helst funktion, den är bara "i vägen", så att säga.
Men OK, jag ville ha det tydligt. Nu *låter* det ju som att det ändå
är ungefär så du försöker göra. Kan du göra "3" flera gånger upprepat
direkt efter varandra utan att gära någonting mellan?
> 5. Jag kör på nytt över ett program från Arduino IDEn mha ovan nämnda USB/rs232-adapter.
Ett program vilket som helst eller samma program som i steg "3" ??
Sen så, som Jesse påpekar, så körs bara bootloadern under ett par sekunder efter
reset av processorn, det är enbart just *då* som du kan köra via USB/RS232 adaptern.
Det framgår inte av din beskrivning vad du faktriskt gör, så det går inte att
säga mer om det.
Re: Ska programmera Atmega, behöver begreppsförklaringar
Varför ska de "prata" samtidigt? Du kan väl ändå bara programmera en sak åt gången? Vad är det jag inte förstår?mattswe skrev:Ok, Så just nu kan jag få både Arduino IDEn och Studio 6 att prata med avrisp mkii men INTE samtidigt. Det verkar inte som att det finns någon lösning för det.
Re: Ska programmera Atmega, behöver begreppsförklaringar
Och dessutom behövs det enbart *EN* gång per AVR, d.v.s när bootloadern
ska in initialt. Efter det så kör man ju via bootloadern och behöver inte
AVRISP'en längre... Nej, det är något som är konstigt här...
*Eller* så kör man *inte* bootloader och kör AVRISP hela tiden, och då
får man välja att använda Arduníno IDE'n *eller* Studio.
ska in initialt. Efter det så kör man ju via bootloadern och behöver inte
AVRISP'en längre... Nej, det är något som är konstigt här...

*Eller* så kör man *inte* bootloader och kör AVRISP hela tiden, och då
får man välja att använda Arduníno IDE'n *eller* Studio.
Re: Ska programmera Atmega, behöver begreppsförklaringar
Detta är jag helt med på.Alltså, när man programmerar med en "vanlig" programmerare (som t.ex AVRISP
eller liknande) så är det normala att varje programmering inleds med en
"Erase All". D.v.s att *hela* programminnet, inkl bootloadern!, raderas.
Det är fullständigt normalt.
Om du vill köra med bootloader så använder du bara AVRISP för den initiala
ladningen, d.v.a för att få in bootloader i processorn. All senare programmering
sker via den andra (serie-) kanalen mot bootloadern. Du kan inte använda en
vanlig programmerare igen, utan att också ladda om bootloadern varje gång.
Nej, det var precis det jag försökte förklara med steg 5. steg 5 är en repetition av steg 3, samma program med någon mindre modifiering. När jag repeterar steg 3 (5Kan du göra "3" flera gånger upprepat
direkt efter varandra utan att gära någonting mellan?

Ja, men det är ju precis det som inte fungerar.Och dessutom behövs det enbart *EN* gång per AVR, d.v.s när bootloadern
ska in initialt. Efter det så kör man ju via bootloadern och behöver inte
AVRISP'en längre...
De ska naturligtvis inte "prata" samtidigt. Men det hade varit fint att kunna ha både Arduino IDE och Studio 6 installerade och fungerande på datorn samtidigt. Nu måste jag byta windowsdrivrutin för programmeraren varje gång jag byter program.Varför ska de "prata" samtidigt? Du kan väl ändå bara programmera en sak åt gången? Vad är det jag inte förstår?
Jag håller alltså på att utforska två tillvägagångssätt samtidigt här. Dels utifrån Arduino IDE, dels utifrån Studio 6. Detta pga. att jag i början av den här diskussionen inte var säker på vilken lösning som var bäst. Helst skulle jag bara använda Studio men med Arduino-kod, vilket jag tror är möjligt, jag har ett fungerande Studio-projekt som inkluderar Arduino-corelibbet, och som går igenom kompilatorn. Men om jag ska installera programmet i mcun från Studio (vilket ju måste ske med programmeraren) så finns det ingen större vits med att installera Arduino-bootloadern, eller hur?
Re: Ska programmera Atmega, behöver begreppsförklaringar
Alltså...
Arduino's primära fördel är just enkelhet.
Det hela fungerar "out-of-the-box".
Vill man inte köra så som Ardunio konstruktörerna har tänkt det,
så vet i fan varför man ska köra Ardunio delar över huvudtaget.
Jag har väldigt svårt att tro att Arduino libbarna är så mycket
bättre än vad som finns tillgängligt till AVR från andra platser.
Dessutom kan du köra vilken AVR som helst, inte bara de som råkar
stödjas från Arduino libbarna.
Arduino's primära fördel är just enkelhet.
Det hela fungerar "out-of-the-box".
Vill man inte köra så som Ardunio konstruktörerna har tänkt det,
så vet i fan varför man ska köra Ardunio delar över huvudtaget.
Jag har väldigt svårt att tro att Arduino libbarna är så mycket
bättre än vad som finns tillgängligt till AVR från andra platser.
Dessutom kan du köra vilken AVR som helst, inte bara de som råkar
stödjas från Arduino libbarna.
Re: Ska programmera Atmega, behöver begreppsförklaringar
Kanhända har du rätt. Ska vidga vyerna lite på google.Jag har väldigt svårt att tro att Arduino libbarna är så mycket
bättre än vad som finns tillgängligt till AVR från andra platser.
Fördelen med Arduino-funktionerna var att det tog mig (gammal C++programmerare) ingen tid alls att lära mig funktionsbiblioteket.
Ok, ok, då borde det inte vara så svårt att lära sig programmera direkt i Studio heller, jag fattar.
Fast just nu behöver mitt egentliga projekt, som ligger här på skrivbordet, en mcu och koden till den har jag skrivit i arduino IDE.
Re: Ska programmera Atmega, behöver begreppsförklaringar
Om libbet är anpassat till någon specifik shield är det väl OK att använda det men samtidig är det en av dessa lösningar som i slutändan kan ge problem. Har man inte källkoden till lib'et kan man inte säkra sig att det är bästa lösningen - men den kan vara snabb och enkel.
Jag ser ingen fördel med Arduinon alls, jag har sedan också en viss erfarenhet med att bygga µc-lösningar. Min första bildator (trippmätare modell värre) byggde jag på ett testkretskort med bara lödöar, det blev MÅNGA ledningar och ja, det tog tid att bygga den. Men jag visste exakt vad som fanns med, jag fick med allt jag behövde och allt fungerade direkt.
Och behöver du specialfunktioner är det bara att skriva dom! Skriv dom i egna filer, då kan man sedan inkludera dom i alla projekt där man behöver dom, något jag använder mycket. Då har jag källkod och väl testade moduler, inte att förakta!
Jag ser ingen fördel med Arduinon alls, jag har sedan också en viss erfarenhet med att bygga µc-lösningar. Min första bildator (trippmätare modell värre) byggde jag på ett testkretskort med bara lödöar, det blev MÅNGA ledningar och ja, det tog tid att bygga den. Men jag visste exakt vad som fanns med, jag fick med allt jag behövde och allt fungerade direkt.
Och behöver du specialfunktioner är det bara att skriva dom! Skriv dom i egna filer, då kan man sedan inkludera dom i alla projekt där man behöver dom, något jag använder mycket. Då har jag källkod och väl testade moduler, inte att förakta!
Re: Ska programmera Atmega, behöver begreppsförklaringar
KISS, kör Arduino IDE och den vanliga kommunikationen.
Eventuellt, om inget annat fungerar, programmera på Arduino
hårdvaran och flytta den programmerade processorn till "driftmiljön".
Har du en fungerade "ren" Arduino miljö ?
Eventuellt, om inget annat fungerar, programmera på Arduino
hårdvaran och flytta den programmerade processorn till "driftmiljön".
Har du en fungerade "ren" Arduino miljö ?
Re: Ska programmera Atmega, behöver begreppsförklaringar
Ja, det har jag. En Arduino Nano, det var det de hade hemma när jag skulle handla, så den mcun går inte att flytta. Men i och med att jag nu fick igång programmeraren mot Arduino IDEn så kan jag nog programmera den mcu som jag behöver för mitt projekt från Arduino IDEn.Har du en fungerade "ren" Arduino miljö ?
Sedan, på lite längre sikt, kanske jag får ta mig tid och lära mig Studio på allvar och skrota Arduino...
Re: Ska programmera Atmega, behöver begreppsförklaringar
Jag har tyvärr inte hunnit labba med AVR Studio. Men det går att köra Arduino biblioteken i den.
När jag testade att programmer Attiny85 (utan bootloader) använde jag en Arduino UNO som isp programmerare.
Har testat att lägga in bootloader på Atmega328 och Atmega1284P och det har fungerat bra.
Efter att bootloadern är installerad är det bara att ladda upp koden seriellt.
Egentligen är det väl "Wiring platformen" man vill åt.
Väldigt enkelt att komma igång när man slipper direkt port manipulation och kan använda digitalWrite, digitalRead, analogWrite för PWM m.m.
Sedan förstår jag att om man vant sig med ren "AVR C" är ovan funktioner onödiga (och slöa).
Annars är en stor grej med Arduino dess community. En nybörjare kan ställa hur dumma frågor som helst på arduino.cc/forum och få trevliga svar.
Det finns dessutom otroligt många bra bibliotek och exempel.
Vill man kan är det heller inga problem att skriva "ren" C.
/Olof
När jag testade att programmer Attiny85 (utan bootloader) använde jag en Arduino UNO som isp programmerare.
Har testat att lägga in bootloader på Atmega328 och Atmega1284P och det har fungerat bra.
Efter att bootloadern är installerad är det bara att ladda upp koden seriellt.
Egentligen är det väl "Wiring platformen" man vill åt.
Väldigt enkelt att komma igång när man slipper direkt port manipulation och kan använda digitalWrite, digitalRead, analogWrite för PWM m.m.
Sedan förstår jag att om man vant sig med ren "AVR C" är ovan funktioner onödiga (och slöa).
Annars är en stor grej med Arduino dess community. En nybörjare kan ställa hur dumma frågor som helst på arduino.cc/forum och få trevliga svar.
Det finns dessutom otroligt många bra bibliotek och exempel.
Vill man kan är det heller inga problem att skriva "ren" C.
/Olof
Senast redigerad av olof_n 17 oktober 2012, 16:23:05, redigerad totalt 1 gång.
Re: Ska programmera Atmega, behöver begreppsförklaringar
Har du kollat in ArduinoISP?
Det gör det möjligt att använda din Arduino för att programmera tomma kretsar, antingen med bootloader eller med sketcharna direkt. Allt sker med Arduino IDE.
Väldigt lättförstådd guide här:
https://wirejungle.wordpress.com/2010/0 ... h-arduino/
http://arduino.cc/en/Tutorial/ArduinoISP
Det gör det möjligt att använda din Arduino för att programmera tomma kretsar, antingen med bootloader eller med sketcharna direkt. Allt sker med Arduino IDE.
Väldigt lättförstådd guide här:
https://wirejungle.wordpress.com/2010/0 ... h-arduino/
http://arduino.cc/en/Tutorial/ArduinoISP
Re: Ska programmera Atmega, behöver begreppsförklaringar
Det är inte något problem med att det inte sker någon reset automatiskt vid upload?
Har du testat att manuellt göra en reset vid upload?
DVS klicka på upload knappen, vänta tills koden är kompilerad och sedan gör du en manuell reset.
/Olof
Har du testat att manuellt göra en reset vid upload?
DVS klicka på upload knappen, vänta tills koden är kompilerad och sedan gör du en manuell reset.
/Olof
Re: Ska programmera Atmega, behöver begreppsförklaringar
Jag ska testa detta, men man kan ju undra varför det fungerar första gången då.Har du testat att manuellt göra en reset vid upload?
DVS klicka på upload knappen, vänta tills koden är kompilerad och sedan gör du en manuell reset.
Re: Ska programmera Atmega, behöver begreppsförklaringar
Kanske att bootloadern "ser" att det saknas en laddad applikation,
och då inte gör inte anropet till applikationen utan ligger kvar och väntar
på att IDE't ska "höra av sig". Nästa gång ligger bootloadern bara kvar
tills det sker en timeout och applikationen startas istället, och då är
det ingen som svarar då IDE't senare "knackar på"...
Notera också att en Ardunio Uno har speciell logik kopplad mellan
den AVR som sköter USB och själva "Ardunio AVR'en". D.v.s att
då det kommer data via USB så kommer Arduinon automatiskt att
resetas. Denna funktion saknas sannolikt din egen uppkoppling.
Se : http://arduino.cc/en/uploads/Main/Ardui ... ematic.pdf
speciellt kopplingen mellan PD7 på Mega16 och RESET på Mega328...
och då inte gör inte anropet till applikationen utan ligger kvar och väntar
på att IDE't ska "höra av sig". Nästa gång ligger bootloadern bara kvar
tills det sker en timeout och applikationen startas istället, och då är
det ingen som svarar då IDE't senare "knackar på"...
Notera också att en Ardunio Uno har speciell logik kopplad mellan
den AVR som sköter USB och själva "Ardunio AVR'en". D.v.s att
då det kommer data via USB så kommer Arduinon automatiskt att
resetas. Denna funktion saknas sannolikt din egen uppkoppling.
Se : http://arduino.cc/en/uploads/Main/Ardui ... ematic.pdf
speciellt kopplingen mellan PD7 på Mega16 och RESET på Mega328...
Re: Ska programmera Atmega, behöver begreppsförklaringar
För att hela programminnet rensas (skrivs med 0xFF) när du programmerar bootloadern. Så du har troligen inte lyckats sätta BOOTRST biten i EFUSE.
Så vid reset efter att du programmerat bootloadern kommer inte den att exekveras direkt, utan programmet startar på adress noll. Eftersom det är rensat där, med 0xFF som tolkas som en NOP (kan vi säga, inte helt sant), så kommer den att fortsätta ända till slutet av programminnet där bootloader liger, och den startas altså inderekt.
När du sedan har lagt in ett program med bootloadern så kommer det att börja exekveras vid reset och du når aldrig bootloadern igen. Så sätt BOOTRST biten och rätt storlek på bootloadern i efuse så kommer det att fungera. Enklast är väl att bränna bootloadern från arduino-miljön, så sätts rätt fuses (om du väljer rätt målkrets).
Så vid reset efter att du programmerat bootloadern kommer inte den att exekveras direkt, utan programmet startar på adress noll. Eftersom det är rensat där, med 0xFF som tolkas som en NOP (kan vi säga, inte helt sant), så kommer den att fortsätta ända till slutet av programminnet där bootloader liger, och den startas altså inderekt.
När du sedan har lagt in ett program med bootloadern så kommer det att börja exekveras vid reset och du når aldrig bootloadern igen. Så sätt BOOTRST biten och rätt storlek på bootloadern i efuse så kommer det att fungera. Enklast är väl att bränna bootloadern från arduino-miljön, så sätts rätt fuses (om du väljer rätt målkrets).