ATmega16 PWM licht dimmen?

Gast #1509907
Lesenswert?

Abend...
Nachdem ich endlich die letzten Tage meine ATmega32 und ATmega16 zum 
laufen bekommen habe... meine 5 LEDs tanzen auch hin und her...

Jetzt würde ich gerne eine LED dimmen und wieder hell leuchten lassen, 
dass ganze in einer endlos schleife...

Nutze zur Zeit einen ATmega16 und hab die LED mit einem vorwiederstand 
am PB0 bis PB3 herum probiert ^^

Irgendwie versteh ich das nicht mit dem PWM.
Hab einige Beitrage hier gelesen und Bascom codes gefunden und diese 
versucht zu probieren und umzuschreiben... Doch die LED bleibt aus!?


Den code hab ich als letztes probiert... sollte das licht einfach nur 
dimmen...
1
$regfile = "m16def.dat"
2
$crystal = 1000000
3
Config Portb.1 = Output
4
Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Down , Prescale = 1
5

6
Do
7
  Pwm = Pwm - 1
8

9
  Wait 20
10

11
Loop
12

13
End

Irgendwas mach ich falsch... irgendwas an der Schaltung falsch?



mfg.
Flow
Gast #1509914
Lesenswert?

hi

so weit ich das noch im kopf habe, mußt du mit dem compare arbeiten.

ist doch alles in der hilfe ztu bascom erklärt....ein bischen zu config 
timer 1 lesen und das sollte schon helfen.

bei 8 bit kannst du werte zwischen 0....255 benutzen.
bei deiner schleife kann ja nischt passieren.
gruß
Gast #1509944
Lesenswert?

Jetzt hab ich folgenden Code Probiert...

ATmega16 läuft mit einer einfachen Grundschaltung ohne externem Quarz.
Am PB1 hängt ein 120 Ohm wiederstand und dannach eine normale Rote LED.


schalte ich PB1 auf High leuchtet die LED... aber gedimmt bekomm ich Sie 
nicht hin.


Bascom code, mit dem ich es jetzt einfach nur mal gedimmt leuchten 
lassen wollte... Doch die LED bleibt weiterhin aus.
1
$regfile = "m16def.dat"
2
$crystal = 1000000
3

4
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
5

6

7
Do
8

9

10
Compare1a = 100
11
Pwm1a = 100
12
Loop
13

14
End


mfg.
Flow
#1510147
Lesenswert?

Genau so ist es. Beim Mega16 Pin D4 und D5. Datenblatt lesen!

>-------------------------------------
Config Portd.5 = Output

Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 1
Enable Timer1
Start Timer1

Dim Phase As Word

Do

For Phase = 0 To 1023
 Ocr1ah = High(phase)
 Ocr1al = Low(phase)
 Waitms 1
Next

For Phase = 1023 To 0 Step -1
 Ocr1ah = High(phase)
 Ocr1al = Low(phase)
 Waitms 1
Next

Loop

End
>-------------------------------------

'PWM = 10' -> 1024 versch. Werte sind möglich. Die Richtung (hoch - 
runter) wird mit 'Compare A Pwm' bestimmt. Analog das Ganze für OCR1B 
(D4). Da der 16-bit Timer aus 2 8-bit Timern besteht wird vom 
einzustellenden Wert jeweils das höherwertige und niederwertige bit 
verwendet.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren