Sida 6 av 10

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 05:40:16
av Al_Bundy
Okej!
Jag har även hört att man kan använda mega för att isp-programera en UNO om man har en tom ATmega där i :)

Jag vet att Arduino behöver en bootloader, men jag kan inte direkt förstå varför.
Är bootloadern någon speciellt program som bootar upp den simpla och enkla koden Arduino-C ?
Om inte bootlodern skulle existera? Då skulle koden sett helt annorlunda ut, typ som klassisk AVR-kod?

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 05:41:59
av Al_Bundy
säter skrev:
Al_Bundy skrev:Men jag har ATmega8 också som jag tänkte använda som, ja nu har jag dåligt ordförråd igen, men jag säger H-brygga.
Hur fungerar det, kan man bränna samma hex-fil till ATmega8 som till ATmega328?
Eller finns det möjlighet att välja processor vid kompileringen?
Jag har ingen aning.
Jag ska väll lära mig det :)
Ska bli kul!

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 06:33:10
av carpelux
Al_Bundy skrev:Okej!

Jag vet att Arduino behöver en bootloader, men jag kan inte direkt förstå varför.
bootloaderns enda funktion är att ta data som kommer in på atmegans inbyggda UART (serieport) och lägga det i flashminnet. På så sätt kan man programmera in den programkod man vill att MCU:n skall exekvera.

Atmegorna har ingen inbyggd USB men däremot en UART så därför sitter det ett separat chip på arduinokortet som omvandlar USB till seriellt, det är därför den syns som en virtuell serieport i datorn och det är via denna man programmerar arduinon, och då alltså med hjälp av bootloadern.

Så hela kedjan är: Programkod => Kompileras till maskinkod .hex => skickas till USB-chipp => Omvandlas till RS232 (seriellt) => bootloader tar hand om seridata och stoppar in i flashminne.

Om du inte har en bootloader i minnet på Atmegan kan du alltså inte programmera den via UART utan är då hänvisad till att använda en extern programmerare kopplad till ISP-pinnarna mosi, miso, sck. Detta kan du läsa mer om i denna pdf hos Atmel.

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 07:00:15
av danei
Din C-kod måste kompileras innan den förs över till en mikrokontroller, det gäller oavsett om du har PIC, AVR eller Adruino. Om kopieringen är något du gör aktivt eller om den döljs för dig beror på utvecklingsmiljön.

Sedan ska den kompilerade koden över till din mikrokontroller. Det kan ske via det inbyggda ISP gränssnittet, eller via en förprogramerad boatloader. Fördelen med den senare är att den klarar sig med seriekomunikation.

Det är något komiskt att du utalar dig tvärsäkert om kommande industristandarder utan att du någon kunskap ens om den miljö du använder själv.

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 07:29:17
av johano
Rätt typiskt för dagens ungdom...
Fast man lät väl ungefär likadan själv :D

/johan

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 07:48:11
av void
Al_Bundy skrev: snip...Jag vet att Arduino behöver en bootloader, men jag kan inte direkt förstå varför.
Är bootloadern någon speciellt program som bootar upp den simpla och enkla koden Arduino-C ?
Om inte bootlodern skulle existera? Då skulle koden sett helt annorlunda ut, typ som klassisk AVR-kod?
Ursäkta men läser du de svar du får? Icecap skrev så här ett par inlägg tillbaka...
Icecap skrev:För att programmera en "helt ren" ATmega måste man använda MOSI och MISO samt sätta den i programmeringsläget. Generellt på µC har man ett sätt att aktivera programmeringsläget, det kan vara en viss spänning på en viss pinne eller liknande.

Sedan kan man överföra data som den inbyggda programmeringsfunktion sedan "bränner in" i flashminnet.

Men på en hel del modernare µC finns det möjlighet för att den kan programmera "sig själv", alltså att det finns en programfunktion som kan ladda in data i programminnet. Man kan använda detta för att spara data, variabler - eller lägga in program.

Bootloadern är alltså i all sin enkelhet ett litet program som startas först efter en reset. Det kollar sedan om det finns anledning att programmera eller att det "riktiga" programmet ska startas. Hur den kollar om det ska programmeras eller inte kan variera, inte sällan ska man skicka ett kommando till kretsen inom en viss tid efter reset, det kan vara en pinne som är låg eller hög osv.

Men om bootloadern inte får "veta" att det är programmering som gäller hoppar "huvudprogrammet" igång efter en kort stund.

Är det däremot programmering som gäller kommer bootloadern att kunde reagerar på olika kommandon. Det kan vara:
* Radera hela eller delar av programminnet.
* Lägg in xx i adress yy.
osv.

På detta vis kan man på ett enkelt sätt programmera kretsen.

Jag använder exakt samma sätt fast då med Renesas och Fujitsu-processorer, dessa har dock inbyggda bootloaders från fabriken och dessa sitter i ett eget minne för detta.

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 08:34:18
av eqlazer
säter skrev:
Al_Bundy skrev:Men jag har ATmega8 också som jag tänkte använda som, ja nu har jag dåligt ordförråd igen, men jag säger H-brygga.
Hur fungerar det, kan man bränna samma hex-fil till ATmega8 som till ATmega328?
Eller finns det möjlighet att välja processor vid kompileringen?
Funkar inte med samma, en del register har ändrat namn men det är i stort sett samma. Till avr-gcc så anger man exakt vilken ATmega man ska kompilera för.

Vill man skriva koden så att det bara är att kompilera om för olika kan man göra så här (där funktionaliteten skiljer sig åt):

Kod: Markera allt

#if defined(__AVR_ATmega8__)
#define IVSEL_REG GICR
#elif defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
#define IVSEL_REG MCUCR
#else
#error AVR device not supported!
#endif

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 10:29:39
av BJ
danei skrev:Det kan ske via det inbyggda ISP gränssnittet, eller via en förprogramerad boatloader.
Jag har inte använt avr.
Men måste man inte kompilera för det ena eller det andra?
Ett ensamt program är väl längre och innehåller reset-pekare?
Eller är det anpassat så att det passar oavsett om man
stoppar in ett vanligt program eller ett program för startladdare
om båda programmeras med isp?
Dom måste ju vara avsedda för olika start-adresser i programminnet.
Det vanliga programmet på adress 0, och arduino-programmet
på adressen som bestäms av startladdaren.
Jag vet inte om avr-processorer kan ha minnet uppdelat i sidor.
I så fall måste ju det också stämma. (Hopp mellan olika sidor.)

Tillägg:
Jag glömde ju hopp till absoluta adresser.

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 10:52:05
av danei
Jo det stämmer säkert. När man kompilerar ska man nog veta vad man ska programera och hur. Men jag ville inte gräva ner förklaringen till för djupa nivåer. Jag ville mer peka på likheterna.

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 11:26:34
av AndLi
carpelux skrev: Atmegorna har ingen inbyggd USB men däremot en UART så därför sitter det ett separat chip på arduinokortet som omvandlar USB till seriellt, det är därför den syns som en virtuell serieport i datorn och det är via denna man programmerar arduinon, och då alltså med hjälp av bootloadern.
Atmegorna som nämns i denna tråd ja, men tex atmega32u4 och atmega16u4 har USb,
Pro micro som tex sparkfun säljer är arduino kompatibel och har usb och ganska få komponenter.
https://www.sparkfun.com/products/11098

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 12:22:44
av carpelux
Så är det men eftersom OP har svårt att förstå så höll jag mig till de mcu som vi pratat om tidigare i tråden. Det är rörigt nog ändå :-)

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 19:58:45
av olof_n
Jag vill inte röra till det men du behöver INTE ha någon extern kristall eftersom det finns en inbyggd oscillator i Atmega kretsarna.
Jag använder sällan någon extern kristall när jag gör enklare Arduino projekt.

Du kan ladda ner filerna som behövs för Arduino IDE:et (Atmega8 utan kristall) här: http://todbot.com/blog/2009/05/26/minim ... nt-page-2/

IDE:et har stöd för att köra båda Attiny och Atmega328 i 1,8 och 16Mhz.

/Olof

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 21:42:04
av Nisse
Att tänka på om man kör en Atmega med Arduino-bootloader utan kristall är att UART blir väldigt ostabil. Min erfarenhet är att det kan bli besvärligt att få in nya program via bootloader/UART utan kristall.

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 22 oktober 2013, 21:46:42
av BJ
danei: Ok.

Re: Kan jag bygga egen Arduino med ATmega8-16UP kontroller?

Postat: 23 oktober 2013, 18:15:24
av Lennart Aspenryd