Hjälp med Atmel Studio 7 för Arduino

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
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

Inlägg av Magnus_K »

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?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med Atmel Studio 7 för Arduino

Inlägg av sodjan »

> 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.
Användarvisningsbild
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

Inlägg av Magnus_K »

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.
Användarvisningsbild
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

Inlägg av Magnus_K »

Ä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
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med Atmel Studio 7 för Arduino

Inlägg av sodjan »

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?
Användarvisningsbild
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

Inlägg av Magnus_K »

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.
Användarvisningsbild
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

Inlägg av lillahuset »

Använder du "vanlig C" eller är det arduinomiljön? Alltså, använder du bara arduinohårdvaran?
nifelheim
Den första
Inlägg: 2489
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: Hjälp med Atmel Studio 7 för Arduino

Inlägg av nifelheim »

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
-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"
:)
Användarvisningsbild
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

Inlägg av Magnus_K »

@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?
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Hjälp med Atmel Studio 7 för Arduino

Inlägg av Icecap »

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.
nifelheim
Den första
Inlägg: 2489
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: Hjälp med Atmel Studio 7 för Arduino

Inlägg av nifelheim »

Exakt!

Så här kan det se ut i en gammal Eclipse i projekt egenskaperna.
Compiler arg.JPG
"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.
Användarvisningsbild
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

Inlägg av Magnus_K »

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?
Build Events.JPG
Build.JPG
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
swesysmgr
Inlägg: 14939
Blev medlem: 28 mars 2009, 06:56:43
Ort: Göteborg

Re: Hjälp med Atmel Studio 7 för Arduino

Inlägg av swesysmgr »

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 :)
Användarvisningsbild
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

Inlägg av Magnus_K »

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. :tumupp:
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 :wink:
Toolchain.JPG
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med Atmel Studio 7 för Arduino

Inlägg av sodjan »

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...
Skriv svar