Sida 12 av 23

Re: Val av microprocessor, RGB LED styrning

Postat: 12 oktober 2010, 17:47:31
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.

Re: Val av microprocessor, RGB LED styrning

Postat: 12 oktober 2010, 18:00:27
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.

Re: Val av microprocessor, RGB LED styrning

Postat: 12 oktober 2010, 19:17:15
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.

Re: Val av microprocessor, RGB LED styrning

Postat: 13 oktober 2010, 08:20:34
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å.

Re: Val av microprocessor, RGB LED styrning

Postat: 13 oktober 2010, 09:13:01
av ds77
Har du optimeringen på (har missat vilken miljö du arbetar i, vet du inte hur du kollar så skriv vilken det är)

Re: Val av microprocessor, RGB LED styrning

Postat: 13 oktober 2010, 11:02:57
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?

Re: Val av microprocessor, RGB LED styrning

Postat: 13 oktober 2010, 11:20:57
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

Re: Val av microprocessor, RGB LED styrning

Postat: 13 oktober 2010, 12:15:03
av dragon9226
Jag måste tyvärr säga att jag inte hittar det du snackar om på den länken...

Re: Val av microprocessor, RGB LED styrning

Postat: 13 oktober 2010, 12:37:39
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

Re: Val av microprocessor, RGB LED styrning

Postat: 13 oktober 2010, 12:45:04
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.

Re: Val av microprocessor, RGB LED styrning

Postat: 13 oktober 2010, 18:42:33
av ds77
Det har inte alltid varit -os som default, vilken version har du?

Re: Val av microprocessor, RGB LED styrning

Postat: 13 oktober 2010, 21:52:41
av dragon9226
Vadå vilken version har jag?
Version på vad och hur ser jag det?

Re: Val av microprocessor, RGB LED styrning

Postat: 13 oktober 2010, 22:53:30
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.

Re: Val av microprocessor, RGB LED styrning

Postat: 14 oktober 2010, 08:08:32
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?

Re: Val av microprocessor, RGB LED styrning

Postat: 14 oktober 2010, 09:26:43
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.