AVR hjälp: Hur få blinkande LED att dimma in och ut?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Moosup
Inlägg: 34
Blev medlem: 25 oktober 2007, 14:01:44

AVR hjälp: Hur få blinkande LED att dimma in och ut?

Inlägg 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


Bild

***

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);

***
Användarvisningsbild
ElectricMan
Inlägg: 4874
Blev medlem: 21 februari 2007, 20:22:48
Skype: ElectricManSwe
Ort: Luleå
Kontakt:

Inlägg av ElectricMan »

Konding kanske?
Användarvisningsbild
Moosup
Inlägg: 34
Blev medlem: 25 oktober 2007, 14:01:44

Inlägg 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:(
hh
Inlägg: 322
Blev medlem: 9 maj 2006, 12:37:32
Ort: Karis, Finland

Inlägg av hh »

PWM?
Användarvisningsbild
Moosup
Inlägg: 34
Blev medlem: 25 oktober 2007, 14:01:44

Inlägg av Moosup »

Vad är PWM? Har inte så bra koll på alla begrepp ännu:)
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg 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...
Användarvisningsbild
gustavn
Inlägg: 297
Blev medlem: 30 november 2004, 12:27:05
Ort: Linköping
Kontakt:

Inlägg av gustavn »

pwm = pulsviddsmodulering
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg 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
hh
Inlägg: 322
Blev medlem: 9 maj 2006, 12:37:32
Ort: Karis, Finland

Inlägg av hh »

Khaki
Inlägg: 268
Blev medlem: 12 januari 2007, 01:04:13
Ort: Mölndal

Inlägg av Khaki »

Användarvisningsbild
Moosup
Inlägg: 34
Blev medlem: 25 oktober 2007, 14:01:44

Inlägg 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
Skriv svar