Sida 1 av 1
AVR hjälp: Hur få blinkande LED att dimma in och ut?
Postat: 14 januari 2008, 20:47:41
av Moosup
Jag vill få en lysdiod som blinkar att istället för att blinka av/på liknande
en fyrkantvåg, få den att blinka enligt nedanstående kod men med in och utdimmning enligt principskissen.
Någon som har en idé om hur det kan lösas?
//Moosup
***
int main (void)
{
ioinit(); //Setup IO pins and defaults
while(1)
{
//PORTC = 0xFF; //Används inte
//PORTD = 0xFF; //Används inte
PORTB = 0b11111111; //Används
delay_ms(3680); //Fördröjning
PORTB = 0b00000000; //Tänder dioden
delay_ms(3680);
PORTB = 0b11111111; //Tänder dioden
delay_ms(920);
PORTB = 0b00000000; //Släcker dioden
delay_ms(14700);
}
return(0);
***
Postat: 14 januari 2008, 20:55:38
av ElectricMan
Konding kanske?
Postat: 14 januari 2008, 20:57:47
av Moosup
Jag provade det tillsammans med en kompis som är riktigt haj på detta med PIC-programmering, men vi fick det inte att fungera:(
Har provat konding på en vanlig LED-blinker (Vellemans nybörjarsats) och då dimmar det bara ut, inte in:(
Postat: 14 januari 2008, 21:04:10
av hh
PWM?
Postat: 14 januari 2008, 21:05:49
av Moosup
Vad är PWM? Har inte så bra koll på alla begrepp ännu:)
Postat: 14 januari 2008, 21:10:46
av bengt-re
Tar du en PIC med PWM så är det görenkelt - Men det går bra på PICar utan också. Har en pryl där jag PWMár med 12khz och hanterar tre knappar med en Pic10F204 så visst tusan går det - inte tu tal om saken. Och när det gäller PWM-frekvens för detta så räcker omkring 100Hz för att det skall uppfattas som flimmerfritt och då är det så enkelt att det kanske går tillräckligt fort även med högnivåspråk....
100Hz med risig C och 16kHz med ASM... Oki, oki, jag erkänner - då är det iofs bara 5 bitars upplösning vid 16kHz, men för dimma en diod snabbt så duger det nog ändå även om ögat klarar av (många) fler "nyanser" är vad 5 bitar ger en...
Postat: 14 januari 2008, 21:14:31
av gustavn
pwm = pulsviddsmodulering
Postat: 14 januari 2008, 21:18:11
av bengt-re
PWM är att att du med en fast basfrekvens slår av och på en utgång.
Anta att du har en 8-bitars räknare som du klockar med 25,6khz.
Till räknarutgången kopplar du en komparator som går hög när värdet i räknaren är högre än 127. Vad händer?
Jo, de första 127 stegen är utgången låg, sedan 128 till 255 så är utgången hög och du har fått en 100Hz fyrkantsignal med dyty cykle på 50%.
Ändrar du nu värdet till komparatorn så kan du få allt mellan 0% och 100% med 0,4% steg bara genom att ändra detta registervärde. Så det enda ditt program behöver göra är att ändra värdet på registret så får du en effekt mellan 0 och 100% på din lysdiod
Postat: 14 januari 2008, 21:21:47
av hh
Postat: 14 januari 2008, 21:33:25
av Khaki
Postat: 14 januari 2008, 21:38:48
av Moosup
Man kan ju inte klaga på kompetensen på folk här på forumet!
Tusen tack för tipsen, det var till stor hjälp!
//Moosup