www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM Timer1 beim ATtiny26 initianlisieren, wtf


Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ich habe versucht mich durch den Datenblattjungle des ATtiny26 zu wühlen 
um aus meinem Timer1 ein PWMsignal an PB1 rauszuhauen. Wollte dazu die 
intere 64Mhz Fast Peripheral Clock verwenden.
    ; PWM Modus
    ldi    R16, (1 << COM1A1 | 1 << PWM1A)
    out    TCCR1A, R16

    ; Vorteiler setzen
    ldi    R16, (1 << CS10 | 1 << CS11 | 1 << CS13)
    out    TCCR1B, R16

    ; PWM Compare Wert
    ldi    R16, 20
    out    OCR1A, R16  

    ; Asynchronen Modus aktivieren
    ldi    R16, (1 << PLLE)
    out    PLLCSR, R16

init1:  in    R16, PLLCSR
    sbrs  R16, PLOCK
    rjmp  init1

    ldi    R16, (1 << PLLE | 1 << PCKE)
    out    PLLCSR, R16

Leider funktioniert das ganze nicht so, an PB1 liegt irgendwie ein 
durchgängiges 5V signal an.. nix PWM so wies aussieht.

Hab ich was vergessen?

mfg Paul Hamacher

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe jetzt noch hinter das setzen des PWM Compare-Werts folgendes 
eingefügt:
  ; Timer Reset Wert
    ldi    R16, 255
    out    OCR1C, R16

Im AVR Studio fängt der Timer garnicht erst an zu zählen. Habe wohl was 
vergessen aber ich komm nicht drauf. Geht auch nicht wenn ich den Teil 
für die Aktivierung des Asynchronen modus weglasse und ihn somit im 
synchronen modus laufen lasse...

// Edit: Ok inzwischen beginnt er im Studio sogar zu zählen, allerdings 
funktioniert die PWM immernoch nicht :-(

Autor: Michael Waiblinger (wiebel42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simulierst du nur? Oder redest du von einem echten Controller?
Der Simulator soll ja ganz toll sein ausser was PWM angeht, wie man hier 
sehr oft liest. Also vergiss die Simulation, ran ans Gerät. ;) -wiebel

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich simuliere und lasse es auf einem echten ATtiny26 laufen, beides 
funktioniert nicht. Ja der Simulator ist komisch.

PB1 ist aber beim Tiny scheinbar permanent auf high, hab kein 
oszilloskop da aber ich sehe ja dass meine LEDs nicht dunkler sind. 
//Edit: Korrigiere, nun scheint er permanent auf low zu sein..

Hier eine aktuelle Version der Anordnung meiner Codeschnipsel:
    ; PWM Modus
    ldi    R16, (1 << COM1A1 | 1 << PWM1A)
    out    TCCR1A, R16

    ; PWM Compare Wert
    ldi    R16, intensity
    out    OCR1A, R16

    ; PWM Accuracy
    ldi    R16, 255
    out    OCR1C, R16

    ; Asynchronen Modus aktivieren
    ldi    R16, (1 << PLLE)
    out    PLLCSR, R16

init1:  in    R16, PLLCSR
    sbrs  R16, PLOCK
    rjmp  init1

    ldi    R16, (1 << PLLE | 1 << PCKE)
    out    PLLCSR, R16

    ; Vorteiler setzen und starten des Timers
    ldi    R16, (1 << CS10)
    out    TCCR1B, R16

mfg Paul Hamacher

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur mal ne dumem vermutung: Hast du den Pin auch auf Ausgang geschaltet 
und den Pullup aus?
Ansonsten ist der Simulator ganz brauchbar, er aktualisiert aber die 
Anzeigewerte nicht wenn man nicht den Einzelschrittmodus (F11) benuzt.
Bei prescaler 1 gehts aber im Einzelschritt ganz gut zu beobachten.

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah danke, es lag daran dass ich den portpin nicht als ausgang geschaltet 
habe^^

noch eine frage: wenn ich das compareregister auf 1 stelle, also 
niedrigste pwm stufe, dann sollte ich doch das leuchten meiner LEDs 
eignetlich nicht mehr sehen oder? allerdings ist es immernoch deutlich 
sichtbar. Zwar schwächer, aber es ginge noch viiiel dunkler. Woran liegt 
das?

Mir ist auch aufgefallen dass sie dunkler sind wenn ich den 
Highspeed-timer aktiviere

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist echt Mist, damit hab ich mir auch shcon oft ärger eingehandelt 
;)
Ich weiß nicht es gibt irgeneinen Minimalen OC Wert, und dann noch Phase 
Richtig und Fast PWm hab leider gerade kein Datenblatt zur Hand um 
nachzusehen.
Hat der Tiny vieleicht die /8 Fuse programmiert? Dann läuft der nur mit 
500khz was schon noch sichtbar sein KÖNNTE selbst bei niedrigem OC

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also der AVR läuft mit 1Mhz. Ob die PCK tatsächlich mit 64Mhz läuft weiß 
ich leider nicht. Ich habe mal am PB1 einfach Spannung gegen masse 
gemessen und den AVR so programmiert dass er das Compare-Register für 
die PWM alle 3 Sekunden um eins erhöht. Dadurch ergeben sich folgende 
Werte:

Compare      mVolt
1            21
2            43
3            65
4            85
5            103
6            123
7            143
8            164
9            185
10           207

Scheint ziemlich linear zu sein so wie es sein sollte. Bei der Messung 
ist mir aufgefallen dass das Fadeverhalten der LEDs eher exponentiell 
ist. Zwischen 1 und 2 liegt ein großer Unterscheid in der 
Leuchtintensität, zwischen 2 und 3 ist der nur noch halb so groß und 
wird bei den nächsten Stufen immer geringer, irgendwann sieht man 
garnicht mehr dass sie noch heller wird.

Dachte immer PWM wäre eine gute Möglichkeit um einen Linearen Fader auch 
mit LEDs aufzubauen?

Theoretisch sollte die PWM mit 64000000 / 256 = 250kHz laufen. Wenn ich 
ihn nur mit 3kHz laufen lasse verhält sich das ganze aber eigentlich 
nicht anders.

mfg Paul H.

Autor: Wurst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Fader ist Linear aber nicht dein Auge!
> 
http://www.leds-com.de/irw_page.48656c6c656d706669...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.