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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.