Sida 23 av 23

Re: Val av microprocessor, RGB LED styrning

Postat: 3 mars 2011, 22:29:19
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++);
}

Re: Val av microprocessor, RGB LED styrning

Postat: 4 mars 2011, 07:47:31
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++;
   }

Re: Val av microprocessor, RGB LED styrning

Postat: 4 mars 2011, 09:15:18
av Virror
Borde fungera, dock ger det nog inte så mycket mer än att koden blir lite kortare.

Re: Val av microprocessor, RGB LED styrning

Postat: 4 mars 2011, 09:25:28
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:

Re: Val av microprocessor, RGB LED styrning

Postat: 4 mars 2011, 15:31:44
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:)

Re: Val av microprocessor, RGB LED styrning

Postat: 17 mars 2011, 17:40:18
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?

Re: Val av microprocessor, RGB LED styrning

Postat: 18 mars 2011, 00:08:13
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.

Re: Val av microprocessor, RGB LED styrning

Postat: 18 mars 2011, 00:33:27
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.

Re: Val av microprocessor, RGB LED styrning

Postat: 18 mars 2011, 00:44:24
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)

Re: Val av microprocessor, RGB LED styrning

Postat: 27 mars 2011, 18:12:18
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.

Re: Val av microprocessor, RGB LED styrning

Postat: 27 mars 2011, 21:48:16
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.