Alternativ utvecklingsverktyg för AVR programmering i Linux

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Alternativ utvecklingsverktyg för AVR programmering i Linux

Inlägg av Volvo740 »

Hej!

Jag har lust att bygga robotar och jag är en stark förespråkare till öppen källkod, vilket är orsaken jag använder Linux Mint. Jag har den olinjära reglertekniken på min sida men jag saknar kunskap inom mikroprocessorprogrammering. Jag har hört att det finns något som heter Arduino men jag har fått avråd att inte använda Arduino om jag vill lära mig mikroprocessorprogrammering.

Jag har kunskap inom javaprogrammering och jag tänkte kombinera olinjära reglertekniken tillsammans med mikroprocessorprogrammering och mjukvarutveckling för att styra mekanik.

Bland annat hittade jag en spellista på YouTube om just programmering av AVR mikroprocessorer.
Jag tänkte fråga er om ni har några rekommendationer för utvecklingsverktyg för AVR mikroprocessorer i linuxmiljö?

Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Icecap »

Problemet - som jag ser det - med Arduino är att de har tagit ett programmeringsspråk där det faktisk finns en nerskriven standard - och ändrat det till deras egen version. Det läggs till lite saker som kör i bakgrunden och man har i grunden mycket liten kontroll över vad som händer i systemet.

Jag är å andra sidan också ganska hardcore µC-idiot.

Jag har även svårt att fatta varför du vill jobba med AVR, de har förvisso annat än 8-bitars men det finns MYCKET mer moderna och tillgängliga µC att få tag på. Deras 8-bitare är ju med förför-årets teknik.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Volvo740 »

Jag har noll erfarenhet i mikroprocessorprogrammering. Om du anser att AVR är föråldrat så bör jag lyssna på ditt råd.

Du menar att detta är föråldrad teknik?

Bild
nifelheim
Den första
Inlägg: 2318
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av nifelheim »

Börja med Arduino , det är perfekt om man har "noll erfarenhet i mikroprocessorprogrammering". :)

Du kan skriva ett enkelt program direkt, läs sedan loggen och försök förstå vad som händer .
När du fattat vad Arduino IDE gör under "skalet" byter du till förslagsvis
Eclipse och programmerar "på riktigt"


Precis som Icecap skriver har Arduino "automatiserat" och länkat in egna bibliotek
för att det ska bli enkelt att komma igång,
men när du har lite mer erfarenhet blir enkelheten en begränsning om du vill ta ut svängarna.

Fördelen är att det är GCC bakom skalet, alltså "vanlig" C/C++ i Arduino miljön,
så du har ju all möjlighet att låta bli att använda deras Arduino bibliotek. :)


Att sedan flytta till Eclipse har den fördelen att det blir otroligt mycket
enklare att byta ARM i övermorgon. (eller något annat) :)
GCC och Eclipse funkar fullt tillräckligt på dom flesta moderna processorer,
och har ett stort "community" stöd på nätet.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Volvo740 »

Men tänk om jag vänjer mig med Arduino och stannar där? Jag ska bara hålla på med att styra servomotorer , stegmotorer och vanliga enkla motorer samt positionsgivare, nivågivare, hastighetsgivare och gyrogivare.

Dessa motorer ska styras av en styrlag(eng. control law). I praktiken så är det bara lite parametrar som förstärker och deriverar.

Själva mikrokontrollern ska kunna vara WiFI ansluten så jag kan kommunicera med Java.

Jag tänker inte göra grafikkort eller skriva bibliotek för hårdvara. Kommer aldrig hända mig.
Användarvisningsbild
hawkan
Inlägg: 2585
Blev medlem: 14 augusti 2011, 10:27:40

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av hawkan »

Gör det något då? Jag förstår inte aversionen mot Arduino. Det är en alldeles utmärkt plattform att lära sej.
Och möjlighet till kodåteranvänding är utan dess like, inbyggd bibliotekshanterare och bara att ladda ner färdiga bibiliotek som gör det svåra och kan användas i sina egna projekt. Det enda som jag tycker har sina begränsningar är den inbyggda editorn där jag hellre hade sett något annat.

Ladda ner arduino-utecklingsmiljön, välj processor och usb -port och du kan börja ladda ner programvara till den mikroprocessor du valt. Inga elva sidor med inställningar. Allt är tillrättalagt, bara att börja med det väsentliga.

Ska du ha WiFi är det bästa att gå på esp8266-processorn som har inbyggd wifi. Det finns i olika utföranden, begränsingen är väl att den bara har en analog ingång (går att expandera med hårdvara). Esp32 finns ju också som har många fler io.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Volvo740 »

Men tänk om jag söker jobb inom robotik? Att uppge att man kan mikroprocessorprogrammering är en lögn då.

11 sidor? Är det så mycket jobb för att starta igång en mikroprocessor?
Användarvisningsbild
hawkan
Inlägg: 2585
Blev medlem: 14 augusti 2011, 10:27:40

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av hawkan »

Om du VILL göra det svårt för dej och använda register och sånt, där du blir tvingad att läsa datablad för att förstå hur det fungerar, så går det också. Det finns inga begränsningar i vad du kan göra i Arduino-miljön på det sättet. Full frihet att göra på det sättet om du tycker det är vad du vill göra. Men det är segt att göra på det sättet ska du veta, man får sitta i dagar, kanske veckor (vissa klarar det på timmar, inte jag :) ) för att få ihop det och pussla samman alla beroenden med olika register som ska vara inställda på visst sätt. Med arduino-miljön får du ett alternativ, för den som t ex vill jobba med själva reglerproblemet så kan man ladda in bibliotek som gör dessa saker.

Det här med elva sidor var ett inlägg i den här tråden http://elektronikforumet.com/forum/view ... &#p1384200 där det också handlar om att lära sej att jobba med en processor.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Volvo740 »

Jag har absolut inte intresse att göra det svårt för mig. Helst enkelt och gärna förenklat. Det är nog jobbigt med den olinjära reglertekniken. :x Satans påfund!

Olinjär reglerteknik är inte samma som den vanliga reglertekniken med överföringsfunktioner och bodediagram. Här talar vi om reglerteknik som bemöter den komplexa verkligheten. Värst av allt så är det doktorer som ska undervisa olinjär reglerteknik på djupt komplicerad nivå och inte kan dem själv tillämpa något i verkligheten. Bara teori på teori. :tumner:

Men när man väl kan det så 8)
Användarvisningsbild
hawkan
Inlägg: 2585
Blev medlem: 14 augusti 2011, 10:27:40

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av hawkan »

Då finns ju hantering av sensor och motorer och sånt redan färdigt, bara att använda.
Reglerproblemet/styrningen är väl det du ska programmera. Är det matematiskt
stora beräkningar som behöver göras? För i såna fall så är kanske inte en
8-bitars processor den bästa, nån esp funkar säkert, men det vore bra för
sej själv att ha en uppfattning om prestanda som behövs och även minnesbehovet.
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Icecap »

Det är ju såklart bäst att kunde dels skriva programmet och dels att få det att utföra jobbet på rätt sätt.

11 sidor är till för att kunde göra vilket projekt som helst, de innehåller som sagt även beskrivningerna av alla de funktioner som styr de 5 seriella portar, RTC'n, EEPROM osv.

Databladet på ųC,n är på 1600+ sidor...
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Andax »

Kör på en ARM Cortex-M4 istället för en AVR. Du får mycket högre klockfrekvens, 32-bitars MCU och hårdvaruflyttal.
Köper du t.ex. en Nucleo-M411RE kort (kostar ca 150-200kr inkl moms) så är det även kompatibelt med en del arduino shields.
Har inte testat det själv men det ska gå att köra arduino ramverket på dem.
Användarvisningsbild
adent
Inlägg: 4094
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av adent »

Jag tycker nog du ska googla lite djupare så hittar du information om hur man programmerar både AVR och STM32 eller liknande utan att blanda in Arduino-miljön. Risken är möjligen att det blir lite mycket på en gång innan du kommer igång. Men känns det så så gå över på Arduino-miljön istället.

Om du verkligen vill lära dig embedded C "på riktigt" så är det bättre att skippa Arduino (miljön, hårdvaran kan du köra ändå).

För att programmera AVR:er under linux behöver du gcc för AVR-processorer, tror den heter avr-gcc eller gcc-avr. Du behöver avr-dude för att kunna programladda dina processorer (föra över från datorn till processorn) samt make, men det finns redan.

Var bor du ungefär?

MVH: Mikael
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Volvo740 »

hawkan skrev:Då finns ju hantering av sensor och motorer och sånt redan färdigt, bara att använda.
Reglerproblemet/styrningen är väl det du ska programmera. Är det matematiskt
stora beräkningar som behöver göras? För i såna fall så är kanske inte en
8-bitars processor den bästa, nån esp funkar säkert, men det vore bra för
sej själv att ha en uppfattning om prestanda som behövs och även minnesbehovet.
Reglerproblemet och styrningen är det enda som skall programmeras. Matematiskt stora beräkningar sker inte i olinjär reglering. Olinjär reglering handlar om att enkelt kunna skapa en olinjär styrlag.

Exempel:

Om vi har en hängande fjäder-massa-dämpare system som ser ut så här:

\(M\ddot x + Kx + B \dot x^2= F\)

Där M är massan, K är styvheten på fjädern och B är dämpningen. Variabeln x är våran position, men vi märker att denna är olinjär då x^2 finns. F är våran insignal till systemet. I detta fall skall inte F tolkas som en kraft om det är återkopplat.

Vi skriver denna till en tillståndsmodell:

\(\dot x_1 = x_2 \\
\dot x_2 = -\frac{K}{M}x_1 - \frac{B}{M}x_2^2 + \frac{F}{M}\)


Då kan vi hitta vår styrlag:

\(F = -(ax_1 + bx_2) + Bx_2^2 + r\)

Där \(a > 0, b >0\) är godtyckliga intrimmningsparametrar och r är våran referens i position t.ex. 3 meter.

Denna typ av återkoppling kallas exakt linjärisering eller feedback linearizion. Målet med denna simpla regleringsteknik är att avskaffa alla olinjäriteter i systemet. I praktiken är det svårt att avskaffa alla, men man får försöka så gott som det går.

Det tog minst 4 dagar för min lärare att förklara hur exakt linjärisering fungerar.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Volvo740 »

Icecap skrev:Det är ju såklart bäst att kunde dels skriva programmet och dels att få det att utföra jobbet på rätt sätt.

11 sidor är till för att kunde göra vilket projekt som helst, de innehåller som sagt även beskrivningerna av alla de funktioner som styr de 5 seriella portar, RTC'n, EEPROM osv.

Databladet på ųC,n är på 1600+ sidor...
Då kanske jag inte ska fokusera på "hardcore" C programmering som något nämde.
Skriv svar