Val av microprocessor, RGB LED styrning

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: Val av microprocessor, RGB LED styrning

Inlägg av sneaky »

Jag brukar skippa if-satsen och skriva såhär istället. Det är dock för PIC och jag har ingen aning vilket som är mest effektivt:

Kod: Markera allt

while(*str){	
	foobar(*str++);
}
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Det går säker om man gör typ såhär:

Kod: Markera allt

while(pgm_read_byte(&ord[antaltecken) {     
         antaltecken++;
   }
Virror
Inlägg: 1025
Blev medlem: 28 april 2004, 11:03:14
Ort: Göteborg
Kontakt:

Re: Val av microprocessor, RGB LED styrning

Inlägg av Virror »

Borde fungera, dock ger det nog inte så mycket mer än att koden blir lite kortare.
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 blir dubbla anrop till read_pgm också, eftersom vitsen med loopen väl är att du ska göra något med varje tecken, inte bara räkna antalet... :roll:
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Nja. Jag gjorde det så att den ligger före den delen som skickar ut varje tecken..
Det kanske går att väva in, men tror inte det är helt nödvändigt.
Det fungerar i alla fall:)
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Hej igen.
Har börjat fundera på om man ska använda "threading" som knapplyssnare.
För att kunna lyssna efter knapptryckningar samtidigt som programmets huvuddel körs.
I enkla former något liknande som i denna tutorial:
http://www.albahari.com/threading/

Vad tror ni?
Kan det gå att använda denna princip?
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Re: Val av microprocessor, RGB LED styrning

Inlägg av Kaggen »

Skall detta programmeras för en PC som styr menar du? Länken du angett är till C# (c-sharp) exempel, antagligen byggt på .Net framework.
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 »

Threading är avancerad programmering på hög nivå (i förhållande till processorn du jobbar med). Det funkar bara om du använder ett OS (operativsystem) som stödjer att man kör flera trådar, t.ex. Linux eller RTOS. En enkel 8-bitars processor räcker inte till för ett så pass avancerat system, så då får du skaffa en 32-bitars processor. Tror jag... det är möjligt att det existerar något förenklat OS även för ATMega, men jag är tveksam. (När jag tänker efter så har jag hört om någon som gjort något förenklat tråd-system för 8-bitars AVR, men jag skulle ändå vilja säga att det är rejält overkill bara för att hantera några knappar)

Men det finns enklare motsvarighet även i 8-bitarsvärlden för att köra saker i bakgrunden. Och det kallas interrupt. Det är extremt smidigt och jag använder mig i stort sett alltid av interrupt när jag ska göra något med en AVR.

Så googla lite om inteerupt på AVR så kanske du hittar lite intressant information.

I vilket fall som helst - det exemplet du länkat till funkar inte på någon AVR. Det är för PC.
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 »

Här har jag hittat en diskussion om multithreading på atmega:
AVR forum - Does an ATMEL ATMEGA16 support multithreading

Och ett RTOS för atmega: Real Time Operating Systems (RTOS) for ATmega

Där kan du läsa lite om RTOS - för- och nackdelar, samt sätta dig in i hur det fungerar.

Och till sist, lite allmän fakta om Threading (Wikipedia): Thread (computer science)
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Jag funderar på hur man gör för att använda den inbyggda klockan. (På kretskortet)
Någon som har några bra idéer om hur man använder den på ett smidigt sätt?

Med vilken kod kan man på ett smidigt sätt anropa den för att ställa tid, och hämta tid?

Projektet börjar se bra ut för övrigt.
Har lyckats med en dimmning på 50s, dock med lite flimmer i början men det blir bättre och bättre.
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 är nog få på forumet som orkar sätta sig in i och svara på frågorna om de ska behöva gå tillbaks 7 sidor i tråden för att leta upp ett schema där det står vad du har för kretsar. Så vill du ha svar från andra så skriv vad komponenten heter som du frågar om och länka gärna till ett datablad. Annars blir det mycket extrajobb för att svara på en fråga som kanske är väldigt enkel att svara på annars.

Men jag antar att din "klocka" heter DS1307. Här är länk till databladet.

Klockan använder sig av I2C för att kommunicera med processorn. (I AVR-databladet är I2C samma sak som TWI, vilket är förkortning för "Two Wire Interface" - se Databladet för din Atmega)

Nu har jag varken gjort något med I2C eller något med någon realtidsklocka, så jag har inga färdiga svar.
Lite tips:

1) om du vill lösa problemet själv: Läs om I2C och TWI, särskilt i databladet för klockan (DS1307), men även i databladet för Atmega. Skriv en enkel rutin för kommunikation med I2c. Sedan, när du tror att det fungerar, kan du försöka räkna ut hur du pratar med klockan.

2) om du tror att nån annan gjort samma sak innan: googla efter "DS1307" och "AVR" eller "Atmega128" så kanske du hittar någon färdig kod... kanske lägg till "code" i sökningen... Google

Om du registrerar dig på AVR-FREAKS kan du ladda ner kodexempel från den här länken: ds1307 real time clock utility

Atmel har också ett exempel på TWI i avr-libc dokumentationen. Se här. De använder sig av filen <util/twi.h> Där finns också källkod att ladda ner.
Skriv svar