Hjälp med Atmel Studio 7 för Arduino
- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: Hjälp med Atmel Studio 7 för Arduino
Ahaa, så texten #warning "F_CPU not defined for <util/delay.h> är alltså vad som ska skrivas ut som varning. Nu hänger jag med.
Det du skriver sodjan låter väldigt bra och logiskt men något jag inte blir klok på är vilken ordning det kompileras.
Det är nog sett som ett litet projekt (men stort för mig) så att placera klockhastigheten i min källfil känns bra.
Testade att lägga till #define F_CPU 16000000UL till min Main.h men då klagar den på att F_CPU i Arduino.h inte är definerad.
Nästa försök var att placera definitionen där och då blir det resultatet jag visade i förra inlägget. Endast varningar men ingen error.
Det som skulle vara kul att testa är att just definera F_CPU i delay.h men där verkar det vara skrivskyddat (?).
Spontant känns det ju som att om jag definerar F_CPU det första som händer vid kompilationen så bör det inte bli några fler varningar?
Det du skriver sodjan låter väldigt bra och logiskt men något jag inte blir klok på är vilken ordning det kompileras.
Det är nog sett som ett litet projekt (men stort för mig) så att placera klockhastigheten i min källfil känns bra.
Testade att lägga till #define F_CPU 16000000UL till min Main.h men då klagar den på att F_CPU i Arduino.h inte är definerad.
Nästa försök var att placera definitionen där och då blir det resultatet jag visade i förra inlägget. Endast varningar men ingen error.
Det som skulle vara kul att testa är att just definera F_CPU i delay.h men där verkar det vara skrivskyddat (?).
Spontant känns det ju som att om jag definerar F_CPU det första som händer vid kompilationen så bör det inte bli några fler varningar?
Re: Hjälp med Atmel Studio 7 för Arduino
> Ahaa, så texten #warning "F_CPU not defined for <util/delay.h> är alltså vad som ska skrivas ut som varning.
https://gcc.gnu.org/onlinedocs/cpp/Diagnostics.html
> men något jag inte blir klok på är vilken ordning det kompileras.
Här finns det en liten komplikation. Det är väl så att Arduino miljön gör lite egna
saker som inte finns med om det vore en "ren" kompilering. Det läggs väl till
lite startupkod o.s.v. Men frånsett det så byggs väl alltid i den ordning som det
förekommer i filerna. Include filerna läggs till i den ordning som #include
förekommer o.s.v.
> Testade att lägga till #define F_CPU 16000000UL till min Main.h men då klagar den på att F_CPU i Arduino.h inte är definerad.
Ingen aning. Gör du själv #include på Arduino.h? Om inte så misstänker jag att det hör till det
som körs innan du kommer fram till din egen kod.
Man kan väl även definiera symboler på kommandoraden så att de garanterat finns med
från början. Typ "-D F_CPU=16000000UL", eller hur man nu skriver det. DEt har i princip
samma funktion som #define inne i koden...
Om man googlar "Arduino F_CPU" så finns det lite mer info om F_CPU.
https://gcc.gnu.org/onlinedocs/cpp/Diagnostics.html
> men något jag inte blir klok på är vilken ordning det kompileras.
Här finns det en liten komplikation. Det är väl så att Arduino miljön gör lite egna
saker som inte finns med om det vore en "ren" kompilering. Det läggs väl till
lite startupkod o.s.v. Men frånsett det så byggs väl alltid i den ordning som det
förekommer i filerna. Include filerna läggs till i den ordning som #include
förekommer o.s.v.
> Testade att lägga till #define F_CPU 16000000UL till min Main.h men då klagar den på att F_CPU i Arduino.h inte är definerad.
Ingen aning. Gör du själv #include på Arduino.h? Om inte så misstänker jag att det hör till det
som körs innan du kommer fram till din egen kod.
Man kan väl även definiera symboler på kommandoraden så att de garanterat finns med
från början. Typ "-D F_CPU=16000000UL", eller hur man nu skriver det. DEt har i princip
samma funktion som #define inne i koden...
Om man googlar "Arduino F_CPU" så finns det lite mer info om F_CPU.
- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: Hjälp med Atmel Studio 7 för Arduino
Tackar för länken. Ska läsa igenom den imorrn för nu snurrar det.
Jo precis, jag gör #include på Arduino.h i min header-fil och placerade då definitionen av F_CPU ovanför denna. Dock hjälpte det inte. Precis som att den ändå kompilerade Arduino.h före min .h.
Jag vet inte om jag ska säga att det löst sig men resultatet nu är i alla fall att det inte blir någon varning/error alls.
Efter en hel del grävande på nätet så verkade det vara allmänt vedertaget att definera F_CPU i Arduino.h, så detta gjordes.
Man skulle också gräva fram från vilken fil som gjorde #include på util/delay.h och kommentera bort denna rad.
Som jag förstår det så har Arduino delay-funktionen i sitt egna bibliotek och util/delay.h tillhör gcc:s bibliotek så det ska vara ok att kommentera bort det här.
OBS. Ovan är min egna slutsats men Delay() testad och verkar stämma med timingen och som sagt inga varningar eller felmeddelanden. Får också kommunikation med "Data Visualizer" för att underlätta debugging.
Jättesnällt av dig att hjälpa till sodjan men nu får det nog vara bra för idag. Ligger och andas i papperspåse efter 4 timmars knapprande för tillfället.
Jo precis, jag gör #include på Arduino.h i min header-fil och placerade då definitionen av F_CPU ovanför denna. Dock hjälpte det inte. Precis som att den ändå kompilerade Arduino.h före min .h.
Jag vet inte om jag ska säga att det löst sig men resultatet nu är i alla fall att det inte blir någon varning/error alls.
Efter en hel del grävande på nätet så verkade det vara allmänt vedertaget att definera F_CPU i Arduino.h, så detta gjordes.
Man skulle också gräva fram från vilken fil som gjorde #include på util/delay.h och kommentera bort denna rad.
Som jag förstår det så har Arduino delay-funktionen i sitt egna bibliotek och util/delay.h tillhör gcc:s bibliotek så det ska vara ok att kommentera bort det här.
OBS. Ovan är min egna slutsats men Delay() testad och verkar stämma med timingen och som sagt inga varningar eller felmeddelanden. Får också kommunikation med "Data Visualizer" för att underlätta debugging.
Jättesnällt av dig att hjälpa till sodjan men nu får det nog vara bra för idag. Ligger och andas i papperspåse efter 4 timmars knapprande för tillfället.
- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: Hjälp med Atmel Studio 7 för Arduino
Är det någon av er som känner igen att #import inte används i GCC längre?
Kompilerade precis mitt projekt efter ha har inkluderat ett nytt bibliotek. Alla nya filer där #import finns med ger varningen #import is a deprecated GCC extension [-Wdeprecated].
Här verkar vara någon med samma problem och frågan är väl om det iskallt går att ersätta #import med #include? Länk_till_annat_forum
Kompilerade precis mitt projekt efter ha har inkluderat ett nytt bibliotek. Alla nya filer där #import finns med ger varningen #import is a deprecated GCC extension [-Wdeprecated].
Här verkar vara någon med samma problem och frågan är väl om det iskallt går att ersätta #import med #include? Länk_till_annat_forum
Re: Hjälp med Atmel Studio 7 för Arduino
Lite snabb googling gav t.ex.
http://stackoverflow.com/questions/5301 ... clude-in-c
Varför använder du inte helt enkelt bara #include ?
Fungerar det inte?
http://stackoverflow.com/questions/5301 ... clude-in-c
Varför använder du inte helt enkelt bara #include ?
Fungerar det inte?
- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: Hjälp med Atmel Studio 7 för Arduino
Det är ett bibliotek jag tagit ner från github och tänkte rensa varningarna innan testet (då det inte går att göra riktigt än). Men visst, fungera kan det ju fortfarande göra.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Hjälp med Atmel Studio 7 för Arduino
Använder du "vanlig C" eller är det arduinomiljön? Alltså, använder du bara arduinohårdvaran?
Re: Hjälp med Atmel Studio 7 för Arduino
Läste föregående fråga om F_CPU först nu när tråden "flöt upp"
När du kör Arduinos IDE kan du ju se i "consol föstret" vad som händer,
vilka filer som länkas in osv.
till exempel med vilka växlar kompilatorn startas med en "vanlig" Arduino UNO:
\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105
och med en 3,3volt 8MHz nano:
hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega168 -DF_CPU=8000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105
klippte av slutet, hela raderan är väldigt långa, det "roliga " var ju -D

edit:
inser att jag inte fick med själva poängen,
kolla lite vad ArduinoIDE använder för växlar till just ditt "board" och lägg in dom i din IDE också,
så borde det funka lite bätter att bara klippa in färdiga bibliotek.
Någonstans kan du väl definiera "standard anropet"

När du kör Arduinos IDE kan du ju se i "consol föstret" vad som händer,
vilka filer som länkas in osv.
till exempel med vilka växlar kompilatorn startas med en "vanlig" Arduino UNO:
\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105
och med en 3,3volt 8MHz nano:
hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega168 -DF_CPU=8000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105
klippte av slutet, hela raderan är väldigt långa, det "roliga " var ju -D
-D name=definition
The contents of definition are tokenized and processed as if they appeared during translation phase three in a ‘#define’ directive. In particular, the definition will be truncated by embedded newline characters.

edit:
inser att jag inte fick med själva poängen,
kolla lite vad ArduinoIDE använder för växlar till just ditt "board" och lägg in dom i din IDE också,
så borde det funka lite bätter att bara klippa in färdiga bibliotek.
Någonstans kan du väl definiera "standard anropet"

- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: Hjälp med Atmel Studio 7 för Arduino
@lillahuset:
Förstår inte riktigt vad du menar så ger dig nog inget bra svar. Det är en Arduino Nano jag programmerar och biblioteke,t som nu är på tal, rör en ethernetmodul som jag ska kommunicera med.
När jag provkörde det här så programmerade jag i Arduino-miljön och då blev det inga kompilatorvarningar. Nu när jag importerat biblioteket till Atmel Studio så får jag dom.
@nifelheim:
Hänger tyvärr inte mycket av det du skriver. Vad menar du för växlar och hur ser ett "standard anrop" ut?
Förstår inte riktigt vad du menar så ger dig nog inget bra svar. Det är en Arduino Nano jag programmerar och biblioteke,t som nu är på tal, rör en ethernetmodul som jag ska kommunicera med.
När jag provkörde det här så programmerade jag i Arduino-miljön och då blev det inga kompilatorvarningar. Nu när jag importerat biblioteket till Atmel Studio så får jag dom.
@nifelheim:
Hänger tyvärr inte mycket av det du skriver. Vad menar du för växlar och hur ser ett "standard anrop" ut?
Re: Hjälp med Atmel Studio 7 för Arduino
Det nifelheim menar är att man kan ge en "projekt-define" så att den variabel är definierat för alla filerna i projektet. Så om du lägger till en sådan "projekt-definition" (F_CPU=16000000) kommer du inte att behöva bekymra dig mer om den biten.
Det är mycket vanligt att man gör sådana definitioner i ett projekt, jag använder det ofta.
Hela den sträng nifelheim anger bör du lägga in som standard i alla Arduiniprojekt du gör, då är saken biff från början.
Det är mycket vanligt att man gör sådana definitioner i ett projekt, jag använder det ofta.
Hela den sträng nifelheim anger bör du lägga in som standard i alla Arduiniprojekt du gör, då är saken biff från början.
Re: Hjälp med Atmel Studio 7 för Arduino
Exakt!
Så här kan det se ut i en gammal Eclipse i projekt egenskaperna.
"Compiler invocation arguments" läggs alltså till automagiskt när kompilatorn anropas med det som står i rutan "Compiler invocation command".
Och allt sker med ett klick på "Build"
Så här kan det se ut i en gammal Eclipse i projekt egenskaperna.
"Compiler invocation arguments" läggs alltså till automagiskt när kompilatorn anropas med det som står i rutan "Compiler invocation command".
Och allt sker med ett klick på "Build"

Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: Hjälp med Atmel Studio 7 för Arduino
Det här låter jätteintressant men vet inte riktigt om jag hänger med.
Vad är skillnaden att göra så här mot att deklarera variabeln i header-filen och se till att den "ligger först" när det kompileras?
Ska kika hur det ser ut i Arduino IDE:t när jag laddar ner ett program.
Är det någonstans i dessa två rutor jag ska klistra in den där raden?
Vad är skillnaden att göra så här mot att deklarera variabeln i header-filen och se till att den "ligger först" när det kompileras?
Ska kika hur det ser ut i Arduino IDE:t när jag laddar ner ett program.
Är det någonstans i dessa två rutor jag ska klistra in den där raden?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hjälp med Atmel Studio 7 för Arduino
http://www.avrfreaks.net/forum/how-set-fcpu
Det är alltså under fliken Toolchain och sedan tredje raden i andra kategorin i trädet som visas (åtminstone i min version).
Sedan är detta inget bra sätt att göra fördröjningar m.m. men det är en annan diskussion
Det är alltså under fliken Toolchain och sedan tredje raden i andra kategorin i trädet som visas (åtminstone i min version).
Sedan är detta inget bra sätt att göra fördröjningar m.m. men det är en annan diskussion

- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: Hjälp med Atmel Studio 7 för Arduino
Kalas! Tack swesysmgr!
Testade först att ta bort mina ändringar i header-filerna och inte göra någon #define på F_CPU alls. Givetvis gav detta en del fel vid kompileringen.
Lade sedan till nedan och det verkar ju fungera kanoners.
Det här var ju ett väldigt smidigt sätt, istället för att rota runt och ändra i massa filer.
Nej, jag har gjort mitt bästa att undvika delay() över huvudtaget men är rätt säker på att det finns i några av dom importerade biblioteken, och då vill det till att jag sagt till kompilatorn i vilken hastighet klockan snurrar på. Har ni lärt mig
Testade först att ta bort mina ändringar i header-filerna och inte göra någon #define på F_CPU alls. Givetvis gav detta en del fel vid kompileringen.
Lade sedan till nedan och det verkar ju fungera kanoners.

Det här var ju ett väldigt smidigt sätt, istället för att rota runt och ändra i massa filer.
Nej, jag har gjort mitt bästa att undvika delay() över huvudtaget men är rätt säker på att det finns i några av dom importerade biblioteken, och då vill det till att jag sagt till kompilatorn i vilken hastighet klockan snurrar på. Har ni lärt mig

Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hjälp med Atmel Studio 7 för Arduino
Jag ser att du även har en flagga "DEBUG" definierad. Om du inte
har för avsikt att köra debugger på koden så kan det vara lika bra
att plocka bort den.
Notera också att "Debug" är valt under "Configuration". Det ska finnas
ett val "All Configurations" också, enligt en sida jag hittade. Jag antar
att det styr vilka olika "build modes" som inställningarna gäller för...
har för avsikt att köra debugger på koden så kan det vara lika bra
att plocka bort den.
Notera också att "Debug" är valt under "Configuration". Det ska finnas
ett val "All Configurations" också, enligt en sida jag hittade. Jag antar
att det styr vilka olika "build modes" som inställningarna gäller för...