Sida 1 av 5

PWM-Kanaler AVR

Postat: 4 augusti 2009, 11:53:39
av Gildebrand
Hejsan!

Jag har en liten fundering. Jag har ett shiftregister på 16-bitar, på var och en utav bitarna så har jag en LED inkopplad. Shiftregistret styrs från en ATMEGA168. Skulle det då gå att PWM:a de olika bitarna hos shiftregistret, så att en LED lyser på 75%, en på 50% och en på fullt, fast alla 16 bitarna på en gång.

Re: PWM-Kanaler AVR

Postat: 4 augusti 2009, 12:12:17
av sodjan
Du har alltså ett externt shiftregister ?
Tja, det är ju bara att räkna på det. Hinner
du med att PWM'a shiftregistret så är det OK.
Kan gå. Om du vill ha 100 Hz grundkrekvens och
10 nivåer så ska shiftregistret laddas om 1000
gånger per sekund. Är det ett shift/latch register ?

Re: PWM-Kanaler AVR

Postat: 4 augusti 2009, 13:52:05
av vfr
En viktig faktor är ju hur du uppdaterar skiftregistret. Mjukvara/hårdvara. Ett SPI-interface t.ex kan du ju köra bra mycket fortare än en mjukvarurutin. Och med mindre belastning på processorn. Men allt det innefattas egentligen av Sodjans svar. Räkna på hur fort du kan uppdatera med den metod som du använder, och kolla sen om det räcker till.

Re: PWM-Kanaler AVR

Postat: 4 augusti 2009, 17:33:07
av Gildebrand
Shiftregistret klarar det, Och den har ingen latch som tur är. Det är en TLC5921 som det gäller.

Min fundering var huruvida AVRen klarade att PWMa 16 olika bitar samtidigt på en pinne, och klara av att hantera att de olika bitarna ska PWMas olika beroende på hur mycket jag vill hur en LED ska lysa.

Re: PWM-Kanaler AVR

Postat: 4 augusti 2009, 18:11:35
av E85
Jag tycker mig se en latch i databladet. Men det är väl inte dåligt?

Re: PWM-Kanaler AVR

Postat: 4 augusti 2009, 18:22:41
av Gildebrand
Det har du rätt i, jag som mindes fel.

Blir det inte svårt att PWM:a de olika bitarna hos ett shiftregister om man har en latch? Fast, det borde ju faktiskt gå att koppla bort den ganska enkelt, eller så att den är öppen hela tiden, det borde väl bara koppla den till VCC?

Jag skulle väldigt gärna se ett exempel på hur det kan se ut om man ska PWMa de olika bitarna.

Re: PWM-Kanaler AVR

Postat: 4 augusti 2009, 18:27:55
av E85
Om du exempelvis kör 1MHz klockning till kretsen, 10-bit PWM och 16 dioder borde det bli såhär:

1MHz / (16 * 2^10) = 61Hz blinkfrekvens

Re: PWM-Kanaler AVR

Postat: 4 augusti 2009, 18:55:07
av victor_passe
Om du exempelvis kör 10KHz klockning till kretsen, 10-bit BAM och 16 dioder borde det bli såhär:

10KHz / (16 * 10) = 62Hz blinkfrekvens



Så faktor 100 gånger bättre med BAM än PWM.
Kanske värt att prova?

Re: PWM-Kanaler AVR

Postat: 4 augusti 2009, 19:10:02
av E85
Det måste jag prova.. Verkar smart.

Re: PWM-Kanaler AVR

Postat: 4 augusti 2009, 19:23:51
av victor_passe
Fast ska man "scanna" intensiteten så är MIBAM bättre.

Re: PWM-Kanaler AVR

Postat: 4 augusti 2009, 20:14:53
av Gildebrand
Jag skulle väldigt gärna se ett kodexempel på hur det kan se ut om man ska PWMa de olika bitarna.

Re: PWM-Kanaler AVR

Postat: 4 augusti 2009, 20:49:03
av E85
Nåt sånt här skulle kanske kunna fungera om jag inte tänkt helt galet. Har inte testat själv men kanske går att utgå ifrån.

Kod: Markera allt


unsigned char pwm_values[] = {1, 23, 45, 67, 89 ....... }; //Nivåerna på 16 LEDs
unsigned char pwm_counter; //8-bitars PWM-räknare

while (1)
{
	unsigned char i; //Räknare

	for (i = 0; i < 16; i++)
	{
		DATA = (pwm_values[i] < pwm_counter) ? 1 : 0;
		CLK = 1;
		CLK = 0;
	}
	LATCH = 1;
	LATCH = 0;
	pwm_counter++; //Öka PWM-räknaren ett snäpp. Efter 255 börjar den om på 0 igen.
}
EDIT: ändrade och kommenterade koden.

Re: PWM-Kanaler AVR

Postat: 4 augusti 2009, 23:33:11
av sodjan
> Och den har ingen latch som tur är.

Jag har väldigt svårt att se hur du ska få snygga utsignaler om
det *inte* är ett shiftregister med latchar. I så fall så "shiftar"
ju alla utgångar hela tiden medans du "laddar om" så att såga.

Det måste definitvt vara *med* latch om det ska fungera vettigt.

Notera, för fasta LEDs, så kan det fungera utan latch, du kommer inte
att se data när det shiftas in i alla fall, sedan är det ju statiskt. Men
i detta fall så kommer data att shiftas in hela tiden...

Re: PWM-Kanaler AVR

Postat: 5 augusti 2009, 00:04:05
av Swech
Det är inga som helst problem att fixa det där
jag kör 3 st 8 bitars skiftregister på min RGB ledmatris.
Varje skiftregister styr varsin färg.
Varje färg har 8x8 lysdioder, Huvudloopen scannar alltså 8 gånger för
att styra ut en grupp på 8 lysdioder.
Varje diod har 16 nivåer. I princip 4 bitars pwm.

Kör på en ATTiny med intern osc, 8Mhz
http://www.swechtrading.se/zencart/images/sw8x8rgb.MPG

Swech

Skall snygga till koden och lägga up iallafall en principstruktur... men nu är det läggdax :D

Re: PWM-Kanaler AVR

Postat: 5 augusti 2009, 00:11:20
av sodjan
> Det är inga som helst problem att fixa det där

Problemet är att det inte finns tillräckligt med info i
frågan i första inklägget för att svara korrekt. Jag är
också helt säker på att det inte är några problem som
i ditt fall med *4* olika PWM nivåer. Man om man ska ha 100
eller 256 nivåer så blir det ett helt annan läge...