Val av microprocessor, RGB LED styrning

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
E85
Inlägg: 1274
Blev medlem: 29 maj 2007, 16:24:19
Ort: Övik

Re: Val av microprocessor, RGB LED styrning

Inlägg av E85 »

Om du har variabler som inte ändras, t.ex för att visa en bokstav på skärmen, så kan du deklarera dom som "const".

Kod: Markera allt

const uint8_t minlista[] = {0x01, 0x05, 0x02, 0x04, 0x03, 0x1F, 0x01};
En annan grej är att du inte behöver använda en "int" som är 16-bit när du bara ska räkna från 10 till 20. Eventuellt optimeras det till en 8-bitars det vet jag inte men känns onödigt iallafall. Använd uint8_t till sånt...

Du får väl byta till en AVR med större minne senare, t.ex ATmega328, så ryms det en hel del.
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Mm.
Får satsa på en AVR med mer minne.
Men tanken var att räkna längre än frpn 10 till 20.
Kanske till ett par hundra eller något, beroende på dimningen, jag funderade också på att köra med microsekunder i stället för ms.
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Val av microprocessor, RGB LED styrning

Inlägg av snigelen »

dragon9226 skrev:Vad är felet?

_delay_ms(y);
Där är felet (eller fel och fel men). _delay_ms() i AVR-libc är tänkt att användas med ett konstant argument, dvs en siffra, inte en variabel. Använder man en variabel blir dels fördröjningen fel samt ditt program blir större i onödan eftersom det kommer att länkas in stöd för flyttalsaritmetik (typ decimaltal) som du troligtvis inte behöver.

Ett sätt att göra en delay som tar en variabel som argument är t.ex.

Kod: Markera allt

void delay(uint8_t i)
{
   while(i--)
      _delay_ms(1);
}
Gör du detta så får du nog lite ledigt programmutrymme. Men den lösningen räcker nog inte på längre sikt.
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Aha. Det där låter ju som en smart ide. Att låta en loop sats hantera variabeln i stället.

Jag lägger upp en liten film med lånematrisen. Den är inte så häftig men något i alla fall.
http://www.youtube.com/watch?v=1yqeBNvYm-I

Får testa att dimma senare, och kan eventuellt lägga upp en ny då.
ds77
Inlägg: 2461
Blev medlem: 24 juli 2008, 09:38:07
Ort: småland

Re: Val av microprocessor, RGB LED styrning

Inlägg av ds77 »

Har du optimeringen på (har missat vilken miljö du arbetar i, vet du inte hur du kollar så skriv vilken det är)
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Jag jobbar med ATiny461 och programmerar i C. (AVR Studio 4)

Och beträffande optimering så vet jag inte riktigt vad det är...
Vad är det, hur och vad används det till?
ds77
Inlägg: 2461
Blev medlem: 24 juli 2008, 09:38:07
Ort: småland

Re: Val av microprocessor, RGB LED styrning

Inlägg av ds77 »

Här är en liten snabbstartsguide: http://winavr.scienceprog.com/winavr-to ... nment.html

Läs i genom och under 'general' välj optimization till -os eller något annat än -o0 och se hur stort det blir.

Optimering säger förenklat till kompilatorn att stuva om kod och ta bort onödiga saker, leder oftast till både snabbare och mindre program
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Jag måste tyvärr säga att jag inte hittar det du snackar om på den länken...
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Val av microprocessor, RGB LED styrning

Inlägg av jesse »

Optimeringen är alltid -Os i AVRStudio som default om man inte ändrar på det. DVS koden är så optimerad som bara går. Det skulle aldrig funka med -O0 i det här läget... Hade blivit hemskt stor hexfil...

edit:Videon: det blev ju asgrymt! Snyggt! :-p
Senast redigerad av jesse 13 oktober 2010, 12:46:47, redigerad totalt 1 gång.
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Ok, tack Jesse. Då slipper jag krångla med det.
Vad tyckte ni om filmen då? inte så märkvärdig, men jag hade inte så mycket tid att lägga på programmeringen.
ds77
Inlägg: 2461
Blev medlem: 24 juli 2008, 09:38:07
Ort: småland

Re: Val av microprocessor, RGB LED styrning

Inlägg av ds77 »

Det har inte alltid varit -os som default, vilken version har du?
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Vadå vilken version har jag?
Version på vad och hur ser jag det?
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Val av microprocessor, RGB LED styrning

Inlägg av jesse »

Det har gällt på version 4.16 och 4.18 vad jag vet. (Studio4 - kolla på "help"-"about AVR studio" så står versionsnumret. Antar att du har senaste = 4.18.

optimeringen kan du ändra/ställa in om du öppnar projektet och sedan går in på "project" och "configuration options". Där står bl.a. vilken frekvens processorn antas arbeta med (påverkar _delay_ms t.ex) och en del annat smått och gott (bla vilken processor det gäller). Men som sagt, optimeringen är nog inget du behöver fundera över om den redan är inställd på -Os.
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Jag har version 4.18

Optimeringen står på Os.

Beträffande frekvens, så hittade jag inte det där.
Men det har jag nog ställt in fel, då jag inte får rätt tider på blinkningarna.
Vad kan man göra för att se till att det är rätt inställt?
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Val av microprocessor, RGB LED styrning

Inlägg av jesse »

Förresten, jag kollade videon (snyggt som sagt!) och ser att vissa dioder lyser lite svagt när de andra är tända. Jag antar att det inte var meningen? Det ger ju en skön effekt, men kanske inte det man hade önskat som programmerare. Antagligen är det ordningen på vilket data skickas ut som gör att vissa dioder lyser svagt - det uppstår korta ögonblick då fel doid på fel rad aktiveras innan alla data är på rätt plats - det kallas för "glitch". Det går säkert att ändra ordning nånstans i koden för att få bort det, om man vill.
Skriv svar