Buggig compiler arduino IDE?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
EasyRider
Inlägg: 356
Blev medlem: 10 juli 2009, 13:03:50

Buggig compiler arduino IDE?

Inlägg av EasyRider »

Jag satt på arduino IDE (windows) och hackade kod och stötte på ett problem. Jag har för mig att det buggade på deklareringen av variabler.
Läste på nätet och fick reda på att det kan skilja mellan windows & linux. Installerade arduino IDE på linux, körde samma kod och detta utan några problem.

Nu har jag stött på ett annat väldigt mystisgt problem.


Jag kör följande ungefär kod vilket ligger i en metod anropad från main: (skrivet från minnet, Mitt minne....)

Kod: Markera allt

// _var = long
// this->variableToSet = long.

Serial.println(_var);
Serial.println(this->variableToSet);
this->variableToSet=_var;
Serial.println(_var);
Serial.println(this->variableToSet);
och får utskriften:

Kod: Markera allt

1110
-118912490  (typ)
1110
-118912490


Koden ovan är som ni förstår inte kopierad exakt och jag söker egentligen inte en lösning här via forumet, utan mer en fråga om andra stött på liknande problem med att variabler inte går att sätta? Sätter jag värdet och direkt skriver ut det, så är det helt oförändrat. Jag kan inte förstå detta.
Har dessutom lagt till en minnesmätare som säger att det finns i runda slängar 700 Bytes kvar.

Kan detta vara en bugg i kompileraren igen eller kan minnet vara slut trots att det säger att så inte är fallet?
Vid bygget så meddelar arduinoIDE att 53% av minnet är använt.

Jag tror det är en riktig arduino Uno och inte en kinakopia.


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

Re: Buggig compiler arduino IDE?

Inlägg av Icecap »

Man deklarerar väl variabler som long och ställer deras värde med ett värde och inte en variabeltyp.

Så att deklarera en variabel som long och sedan skriva:
Var = long;
är ju strunt.
EasyRider
Inlägg: 356
Blev medlem: 10 juli 2009, 13:03:50

Re: Buggig compiler arduino IDE?

Inlägg av EasyRider »

Njae nu var det ju inte de raderna som kördes. Det var för att visa typ och de var dessutom kommenterade för att visa att detta var information och inte kod.
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Buggig compiler arduino IDE?

Inlägg av Icecap »

OK.

En sak är säker: det är inte Arduinon som är felaktig, det är kompilern.
EasyRider
Inlägg: 356
Blev medlem: 10 juli 2009, 13:03:50

Re: Buggig compiler arduino IDE?

Inlägg av EasyRider »

Finns det något alternativ som är bättre som fungerar med arduino? Om detta åter är en bugg med kompilern så tröttnar jag...
EasyRider
Inlägg: 356
Blev medlem: 10 juli 2009, 13:03:50

Re: Buggig compiler arduino IDE?

Inlägg av EasyRider »

Skulle det gå att använda gcc eller liknande om det skulle fungera bättre??
Användarvisningsbild
Lennart Aspenryd
Tidigare Lasp
Inlägg: 12607
Blev medlem: 1 juli 2011, 19:09:09
Ort: Helsingborg

Re: Buggig compiler arduino IDE?

Inlägg av Lennart Aspenryd »

Mycket är ju tycke och smak, kanske också vad man är van med!
Sök på alternativ IDÉ Arduino och du får mer än en handfull förslag. :tumupp: :tumupp:
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Buggig compiler arduino IDE?

Inlägg av Mr Andersson »

Arduino använder redan gcc. Det är knappast en kompilatorbugg med variabelassignments eller miljontals programmerare skulle ha haft problem.
Kom tillbaka med exakt kod som inte fungerar så kan vi kanske hjälpa dig.
hummel
Inlägg: 2259
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Buggig compiler arduino IDE?

Inlägg av hummel »

Det är klart enklare att hjälpa om du kan lägga upp ett litet exempel som vi kan testa med exakta problemet som går att kompilera/generera felet med.
EasyRider
Inlägg: 356
Blev medlem: 10 juli 2009, 13:03:50

Re: Buggig compiler arduino IDE?

Inlägg av EasyRider »

Jo jag förstår det. Tyvärr kräver systemet massa kringutrustning för att komma till den punkt där felet uppstår. Jag skall se ifall jag kan minimera det hela och plocka bort kringutrustningen så det faktist går att köra ensamt.
Egentligen så var frågan från första början om detta var något som kändes igen, som någon annan stött på. Jag har ju väldigt svårt att tro att en kompilator skulle fallera på en sådan "enkel" detalj. Men det det i ryggsäcken att just windows-versionen bar på en kompileringsbugg som linuxversionen hade tagit sig förbi, så är det lätt att falla dig på att det är just det felet :D

Kompilatorer är ju skapade av människan och knappast kompletta. När månen står i linje med någon passande planet så kan även dessa bära på buggar :D


Jag skall se om jag kan plocka fram någon fungerande kod som rullar utan kringutr.

Tackar!
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Buggig compiler arduino IDE?

Inlägg av sodjan »

Om du inte kan reproducera felet med en 10-15 raders kod, så talar
mycket för att det inte är ett kompilator fel. Ditt exempel i första
inlägget var inte lätt att förstå. Vad betyder "long"? Att det finns
en annan variabel av typen long? Eller en konstant av typen long?

Och vad var det förväntade resultatet? Att det andra "-118912490"
skulle ha varit "1110"? Är ditt exempel detsamma som detta:

Kod: Markera allt

// _var = 1010
// this->variableToSet = -118912490

Serial.println(_var);
Serial.println(this->variableToSet);
this->variableToSet=_var;
Serial.println(_var);
Serial.println(this->variableToSet);
Hur ser definitionerna för "_var", "this" och "variableToSet" ut? Är de "long"?

I 99 fall av 100 så är misstänka kompilatorbuggar bara vanliga programbuggar... :-)

Så fixa ett enkelt exempel som faktiskt går att kompilera rakt av och som visar
problem så går det ju att kolla på.
SeniorLemuren
Inlägg: 7779
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Buggig compiler arduino IDE?

Inlägg av SeniorLemuren »

Vet inte riktigt om jag fattat hur du menar? Men detta funkar i alla fall utan problem i min Uno med IDE ver 1.8.4

Kod: Markera allt

long  _var = 1010; 
long  variableToSet= -118912490;

void setup() { 
Serial.begin(9600);
Serial.println(_var);
Serial.println(variableToSet);
variableToSet=_var;
Serial.println(_var);
Serial.println(variableToSet);
}

void loop() {
  }
Resultat:
1010
-118912490
1010
1010
EasyRider
Inlägg: 356
Blev medlem: 10 juli 2009, 13:03:50

Re: Buggig compiler arduino IDE?

Inlägg av EasyRider »

Tack för att ni tar er tid.

Jo jag är medveten om att nästan alla "buggar" i själva verket är tack vare utvecklaren :D Missförstå mig inte. Jag vill inte skylla på kompilatorn, men samtidigt när ens ideer tar slut så...

long:
https://www.arduino.cc/reference/en/lan ... ypes/long/

Jag förstår att det var fel att skriva in kommentaren men jag tänkte att om jag inte gör det så får jag frågan ifall det kan vara olika datatyper på variablerna :D
Mer korrekt kan vara att srkiva:

Kod: Markera allt

private
    long variableToSet;
public:
    void controller::updateValue(long _var);
Det är alltså innehåll i en klass som heter controller. och jag försöker "utifrån" ändra en variable som styr kontrollern. Metoden heter alltså i detta fallet "updateValue" där tidigare nämnd kod är skriven.

I exemplet var alltså tänkt att 1110 skulle skrivas de 2 sista raderna. Men värdet på "this->valueToSet" ändrades inte.


Innan ni lägger för mycket tid, så får jag ta och försöka minimera programmet och se om jag kan återskapa det.

Tack!
EasyRider
Inlägg: 356
Blev medlem: 10 juli 2009, 13:03:50

Re: Buggig compiler arduino IDE?

Inlägg av EasyRider »

Jo alltså, stand-alone så fungerar såklart koden. Men i det stora programmet så funkar det inte. Och jag har så svårt att förstå varför en variabel-sättning med direkt utskrivning av värdet inte fungerar.

Som sagt, jag skall se om jag kan plocka fram något mer användbart. Tack så mycklet för er tid!
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Buggig compiler arduino IDE?

Inlägg av sodjan »

Ok. ☺️ Klasser och sånt ligger utanför min "comfort zone", men är vatabeln åtkomlig utifrån? Brukar inte "metoder" användas till sånt?
Skriv svar