Electrokit Buggfix Plus
Aktuellt datum och tid: 05.19 2019-09-22

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 51 inlägg ]  Gå till sida Föregående  1, 2, 3, 4  Nästa
Författare Meddelande
InläggPostat: 16.43 2019-08-20 

Blev medlem: 09.06 2016-12-01
Inlägg: 759
Ort: Marks Kommun
Nu har jag tittat igenom länkarna och det är mycket matnyttigt men jag kan inte se vilken timer som går till vad. (alla 4 verkar generella?) Jag går helt enkelt bet...


Upp
 Profil  
 
InläggPostat: 20.27 2019-08-22 

Blev medlem: 09.06 2016-12-01
Inlägg: 759
Ort: Marks Kommun
Jag fortsatte med Atmegakretsen i NANO-modulen och la in tre st pwm utgångar samtidigt som ECU:n gick och allt verkar fungera ihop. Det blir nog att fortsätta med Arduino och dess IDE-miljö då allting verkar funka...


Upp
 Profil  
 
InläggPostat: 09.39 2019-08-29 

Blev medlem: 19.27 2011-05-27
Inlägg: 504
Ort: Älvsjö
Ursäkta intrånget i tråden, men jag blir så fundersam över de ständiga diskussionerna om Arduino och att det inte skulle var C/C++ så jag kunde inte hålla mig denna gång.

AndLi skrev:
hawkan skrev:
Du menar att gå över till STs utvecklingsmiljö antar jag. Arduino är redan C.

Vilken C standard anser du att är?

Det är möjligen en dialekt som måste preprocessas innan du kan ge den till en c kompilator som följer standard..


Att man i ett byggsteg gör en massa saker innan man kör det genom kompilatorn har väl ingenting med vilket språk det rör sig om. Inte dialekt heller. Arduino använder en vanlig GCC. Inga konstigheter.

Här är en länk som beskriver byggprocessen: https://github.com/arduino/Arduino/wiki/Build-Process

Det är inget märkligt med Arduino-miljön. Man kan lägga in sina cpp och h filer som man önskar och den bygger ihop det. Man måste dock ha en ino fil som bas för projektet. Och den har ingen main() eftersom den ligger in i en fil i ramverket. Men det har som sagt inget med språket som sådant att göra. Sedan är det så att en del library-funktioner är lite speciella och har sina ideer om hur saker ska göras vilket kan ge begränsningar. Men det har ju inget med språket att göra.

Att inte kalla det för C++ bara för man inte har en main() i .ino filen håller jag inte med om. Man kan kalla Arduino för ett C++ ramverk.


Upp
 Profil  
 
InläggPostat: 11.46 2019-09-01 

Blev medlem: 21.06 2011-01-29
Inlägg: 875
Nu är det ju inte enbart att det inte finns någon main(). Översättaren gör även en hel del annat.
T.ex. behöver du inte fördefiniera funktioner. Det är, enligt mig iaf, en förbättring men det bryter mot standarden.

Att säga att det är c++ bara för att gcc används i bakgrunden är inget vidare argument. Den läser ju aldrig de omodifierade filerna.
Om jag skriver kod i pascal och kör det genom en automatisk översättare och kompilerar med gcc, har jag då skrivit c++-kod?

Ordet arduino kan innebära flera olika saker.
Arduinohårdvaran. Kan programmeras med valfritt språk som stödjer processorarkitekturen.
Arduinoramverket. Kan användas av valfri kompilator som kan läsa gcc-bibliotek. (eller någon av alla de tredjepartsportar som finns)
Arduinospråket. Väldigt likt, men är inte, c++. Arduino själva kallar det Arduino Programming Language.
Arduinoplattformen. De tre ovanstående tillsammans.

Det är absolut inget fel att använda arduino-IDE:t. Men det är fel att säga att det är c++. Säg istället att det är likt eller baserat på c++.
Kanske ses som petitesser av somliga, men att följa standarder är viktigt. Annars slutar det med att alla gör sina egna c++-språk och inget fungerar tillsammans.


Upp
 Profil  
 
InläggPostat: 11.51 2019-09-01 

Blev medlem: 09.06 2016-12-01
Inlägg: 759
Ort: Marks Kommun
En undran: Har jag någon glädje av Arduino´s C prog eller ej? Kan detta hjälpa mig att komma på dom olika timrars funktion/ickefunktion?


Upp
 Profil  
 
InläggPostat: 14.17 2019-09-01 
Användarvisningsbild

Blev medlem: 14.52 2005-01-10
Inlägg: 24048
Ort: Aabenraa, Danmark
Problemet är inte språket! Problemet är att Arduino-användare sällan har bra koll på vad som sker med hårdvaran inuti µC'n och därför sällan använder den "korrekt" och fullt.

Såklart finns det användare som är helt med på exakt hur hårdvaran fungerar och vad som sker "bakom draperiet" - men de är mycket få och jag har aldrig hört om någon - ändå är jag säker på att de finns.

T.ex. medför funktionen systime() (tror jag den heter) att en timer kör med fast 1ms interrupt och uppdaterar en 32-bitars variabel. Detta är en god sak till mycket - men använder en timer man kanske skulle ha till annat om man har ett projekt av en viss dignitet.

Såklart finns det work-around på detta - vilket betyder att miljöns (Arduino) påverkan är negativ på lösningen då man måste ta över funktioner som är inbyggd i miljön. Inte optimalt.

Jag är ganska säker på att det går att hooka en interrupt up och använda det till olika hårdvarafunktioner - men hur många användare gör det i verkligheten?

Nu är "original"-Arduino i grunden inget annat än en lite trött µC med en bootloader i samt en USB-port för ICSP. Den funktion har jag på en Renesas RX210 32-bitars µC också, dock utan att USB-delen sitter fast på kretskortet.

Så det är inget speciellt i det, jag har använd EXAKT samma interface till ICSP till Fujitsu FFMC-16LX och Renesas RX210 och det enda jag behöver på min programmeringsdator är en seriell port, vara sig en inbyggd eller en USB-dongel samt ett litet interface med en MAX232 på.

Det "enda" Arduino-miljön ger är att portpinnar inte kallas vid deras namn (PORTA.B0 eller liknande) men istället översätter dessa till vilken pinnummer det är på kretskortet.

Det finns färdiga funktioner för att säga att en viss pinne är In/Ut/Analog/Digital osv, något man klarar på ett piss-kvart med ett datablad i handen.
Det finns färdiga funktioner för att aktivera A/D-omvandlaren, igen en sak man klarar mycket enkelt själv.

I det hela tagit erbjuds en hel del funktioner som gör att man kan lösa många uppgifter utan att behöva gräva i hårdvaran och utan att förstå hårdvaran.

Men som all annan förtuggad mat blir resultatet blekt och smakslöst. Jag tänker alltid på dessa barnmatsburkar/glas man kan köpa när jag hör om Arduino: blek mat som inte smakar något alls - men barnen kan leva på det, det är bara inget kul.

Sedan kommer fördelen vid Arduino: "alla" kan programmera! Just för att alla funktioner är förtuggade och att det läggs till vissa funktioner per default fungerar miljön enkelt och smidigt - och man behöver inte fatta vad man egentligen jobbar med.

Detta gör instegsnivån lågt och det är bra. Jag använde runt 1,5 år på att laga de rutiner jag behövde till RX210, då har jag å andra sidan ett rikhaltigt bibliotek med samtidig interrupstyrd kommunikation på 5 UART, Capture på 8 kanaler, radiokommunikation, A/D-omvandling som håller koll på om in-spänningen är inom giltiga parameter så att 12V->5V omvandlaren kan köras (vid drift av LED-display), ljussensor-omvandling osv. Timerstyrd 1-Wire® kommunikation med det hela och vad annat jag behövde.

Samtidig är det också vad som är problemet om man vill gå vidare: Arduino har rimligt effektivt klippt banden mellan hårdvaran som den finns i µC'n och programmeringen.

Visst, att tugga sig igenom 1600+ sidor datablad för att lära sig hur tusan man sätter en portpinne rätt är definitivt avskräckande för vilken nybörjare som helst! Kommer man upp i "storlek" på µC behöver man dock göra detta jobb och jag skulle gärna se Arduino erbjuda det utbildningsmaterial som förklarar hur det sker, vilka funktioner som läggs till osv.


Upp
 Profil  
 
InläggPostat: 19.23 2019-09-01 

Blev medlem: 09.06 2016-12-01
Inlägg: 759
Ort: Marks Kommun
Jo det är väl lite detta som är problemet, antingen får jag köra vidare med "färdigtuggat" eller får jag sätta mig ner och läsa på utan h*lv*te tills det klarnar... Skall nu ge mig på Nucleo så smått. Får se vad det ger...


Upp
 Profil  
 
InläggPostat: 07.18 2019-09-02 
Användarvisningsbild

Blev medlem: 09.27 2011-08-14
Inlägg: 1484
Icecap skrev:
Samtidig är det också vad som är problemet om man vill gå vidare: Arduino har rimligt effektivt klippt banden mellan hårdvaran som den finns i µC'n och programmeringen.


Detta är inte sant. Arduino erbjuder sin standardmiljö med en del färdiga funktioner, och sin utvecklingsmiljö.
Men i botten är det avr-gcc och ALLT den kan, går att göra i arduino-miljön. Det finns inget hinder att
leka med bittar och register, t ex initiera om en eller alla timers, eller ja precis vad som helst man vill göra.
Här finns inget man har klippt bort, allt från avr-gcc finns tillgängligt. Arduino är inte problemet.


Upp
 Profil  
 
InläggPostat: 10.59 2019-09-02 
EF Sponsor
Användarvisningsbild

Blev medlem: 21.43 2006-11-06
Inlägg: 4258
Ort: Munkedal, Sverige (Sweden)
Har man bestämt sig för en åsikt så har man...... :roll:
Hatet mot arduino är lite flyktigt och ändrar sig beroende på de svar som kommer in
nåja, en annan hatade ju Amiga då det begav sig..

Swech


Upp
 Profil  
 
InläggPostat: 07.56 2019-09-11 

Blev medlem: 09.06 2016-12-01
Inlägg: 759
Ort: Marks Kommun
Jag funderar vidare, mina problem med 32 bitars processorn och dess timers behöver inte var timerfel bara...
Jag såg på en youtubevideo att man måste deklarera om int till int16_t om man måste ha en specifik längd.
Jag har ju byggt min ECU med int, byte, float med hänsyn till vad jag behöver som mest hela tiden i datavärde.
Jag tror detta kan ställa till problem lite här och var så det blir till att exakt ange vad som skall gälla, och sen testa...


Upp
 Profil  
 
InläggPostat: 08.15 2019-09-11 

Blev medlem: 10.40 2009-11-28
Inlägg: 1192
Ort: Stockholm
Har du gjort någon design på ditt program i form av flödesschema eller liknande (valfri desigmetod går bra)? Det är alltid en bra start att designa innan man börjar programmera. Sedan testa varje möjlig modul av mjukvaran och verifiera funktionen.


Upp
 Profil  
 
InläggPostat: 09.29 2019-09-11 
Användarvisningsbild

Blev medlem: 14.52 2005-01-10
Inlägg: 24048
Ort: Aabenraa, Danmark
Janson1: Om en variabel bör vara av en specifik storlek är det praxis att man just definiera dom till t.ex. uint16_t eller vad man behöver.
Samtidig ska man ha klart för sig att bara för att en variabel bara behöver vara en byte är det inte säkert att man ska ange den som 1 byte...

Exempel: en 32-bitars µC, man behöver en flagga som är antingen SANT eller FALSK. Detta motsvarar rent faktisk 1 bit.
MEN - det rör sig om en funktion som kallas oerhört många gångar och därför ska den vara snabb som tusan.

I "många" 32-bittare kan man bara läsa en 32-bitars variabel in, ska man använda en byte i dom ska det shiftas & maskas bittar - vilket kostar tid. Och då ger det mening att använda en 32-bitars variabel (int eller unsigned int) trots att det räcker med 1 bit.

Är det däremot en variabel som ska kollas "sällan" har lite extra overhead ingen stor betydelse och man kan fint använda bytes eller även bits om man vill.

Men det är mycket viktigt att planera hur man vill lösa problemet som programmet skal lösa som hummel skriver.
Jag använder mycket ofta att skriva rutiner i form av deklarationerna och sedan en text som anger vad rutinen ska lösa.
I toppen av en källkod skriver jag alltid hur det hela är tänkt att jobba och ganska ofta kladdar jag på papper när jag ska börja stycka ihop funktionernas flöde.


Upp
 Profil  
 
InläggPostat: 10.35 2019-09-11 

Blev medlem: 09.06 2016-12-01
Inlägg: 759
Ort: Marks Kommun
Från början så hade jag bara Arduinos IDE inställt på UNO/NANO/MEGA, alla 8 bitare och en int där är 16 bitar så när jag "designade" (Är väl att ta i) tänkte ut dess funktioner så utgick jag ifrån hur lång en int är, om jag behöver signed eller unsigned osv. I dessa fall behövdes ju inte vidare eftertanke med att låsa dom till en specifik längd. Men nu behövs det förmodligen.
Sen det här med design och flödesschema, det är jag otroligt dålig på, jag har försökt men det är knappt jag kan tyda det själv efter ett tag. Däremot så skriver jag mycket kommentarer efter i princip varje programmeringsrad, det är mitt sätt att komma ihåg. Jag sitter nu och felsöker på en 32bitars SAMD processor från Atmel och jag tror man måste deklarera en Array på ett annat sätt än vad Arduinos IDE föreskriver? Jag har konstaterat att den delar ut rätt nummer i arrayen men det är bara första som fungerar. Jag behöver nog klistra in filen också?


Upp
 Profil  
 
InläggPostat: 11.22 2019-09-11 
Användarvisningsbild

Blev medlem: 14.52 2005-01-10
Inlägg: 24048
Ort: Aabenraa, Danmark
Altså - int är en farlig storlek att använda! Den kan vara allt från en byte till 4 byte! Och till och med mer.
Är det ett värde som kan vara i en byte kan man använda int utan problem men ställer man krav på t.ex. minsta storleken måste man använda andra sätt.


Upp
 Profil  
 
InläggPostat: 15.12 2019-09-11 

Blev medlem: 09.06 2016-12-01
Inlägg: 759
Ort: Marks Kommun
Jo men jag får helt enkelt börja skriva exakt vad jag behöver i fortsättningen. Arduinos IDE stödjer detta dessutom.
Nu verkar det inte vara detta fel denna gång, men jag felsöker vidare...


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 51 inlägg ]  Gå till sida Föregående  1, 2, 3, 4  Nästa

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 2 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
   
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010