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

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

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

Inlägg 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?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

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

Inlägg 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!
Användarvisningsbild
carpelux
Inlägg: 1954
Blev medlem: 13 oktober 2007, 12:33:33
Ort: Varnhem

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

Inlägg 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.
danei
EF Sponsor
Inlägg: 27399
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

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

Inlägg 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.
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

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

Inlägg av johano »

Rätt typiskt för dagens ungdom...
Fast man lät väl ungefär likadan själv :D

/johan
void
Inlägg: 119
Blev medlem: 8 juli 2007, 11:06:50
Ort: Enköping

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

Inlägg 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.
eqlazer
Inlägg: 923
Blev medlem: 22 september 2007, 13:53:45
Ort: Göteborg

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

Inlägg 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
BJ
Inlägg: 8864
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

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

Inlägg 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.
Senast redigerad av BJ 22 oktober 2013, 12:25:54, redigerad totalt 1 gång.
danei
EF Sponsor
Inlägg: 27399
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

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

Inlägg 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.
Användarvisningsbild
AndLi
Inlägg: 18251
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

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

Inlägg 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
Användarvisningsbild
carpelux
Inlägg: 1954
Blev medlem: 13 oktober 2007, 12:33:33
Ort: Varnhem

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

Inlägg 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å :-)
olof_n
Inlägg: 116
Blev medlem: 23 februari 2011, 21:36:46

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

Inlägg 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
Användarvisningsbild
Nisse
Inlägg: 908
Blev medlem: 9 juli 2006, 23:25:46
Ort: Kumla

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

Inlägg 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.
BJ
Inlägg: 8864
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

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

Inlägg av BJ »

danei: Ok.
Användarvisningsbild
Lennart Aspenryd
Tidigare Lasp
Inlägg: 12607
Blev medlem: 1 juli 2011, 19:09:09
Ort: Helsingborg

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

Inlägg av Lennart Aspenryd »

Skriv svar