ATtiny44 TIMER0

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • ATtiny44 TIMER0

      Hallo zusammen !

      ich habe im Datenblatt des ATtiny44 gesehen, dass die TIMER0 und Timer1 BEIDE PWM können
      und es 4 PWM Kanäle gibt (dort heisst es : "– One 8-Bit and One 16-Bit Timer/Counter with Two PWM Channels, Each")

      Bei TIMER1 kann ich ja mit

      BASCOM-Quellcode

      1. Config Pina.5 = Output 'OC1A
      2. Config Pina.6 = Output 'OC1B
      3. Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
      4. Pwm1a = X
      5. Pwm1b = Y
      entsprechend arbeiten, was auch funktioniert.

      Kann/Könnte ich so auch bei TIMER0 verfahren ?
      Also :


      BASCOM-Quellcode

      1. Config Pinb.2 = Output 'OC0A
      2. Config Pina.7 = Output 'OC0B
      3. Config Timer0 = Pwm , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
      4. Pwm0a = X
      5. Pwm0b = Y
      Wenn ich das so eingebe ändert mir der Compiler das "Pwm0a und Pwm0b" in PWM0A und PWM0B (alles gross und rot nicht wie sonst blau)
      alsob der Befehl nicht bekannt sei. Aber einen Fehler gibt er nicht aus. Compiliert wird ohne Fehler.


      Gruss Franz
      10 GOTO 20: PRINT "HALLO"
      20 GOTO 10

      Geht nicht...dämliche Computer !
    • Groß-Kleinschreibung ist uninteressant, weil gleichwertig. Farbliche Gestaltung des Editors ist nur als Hinweis zu deuten, abschaltbar und nicht immer ganz konsistent (heißt das so??) Wichtig sind die evtl Fehlermeldungen. Wenn da nix kommt, ist es schon mal gut.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo !

      Nee, compiliert wird anstandslos - keine Fehler sagt Bascom.
      Aber eine PWM findet an den Pins nicht statt.

      Bei TIMER1 - mit entsprechenden Pins ohne Probleme.

      Weiss jemand bescheid, beim Attiny44 und Bascom ?
      Warum , oder ob das (nicht) geht mit TIMER0...

      Gruss Franz
      10 GOTO 20: PRINT "HALLO"
      20 GOTO 10

      Geht nicht...dämliche Computer !
    • Hallo Hero !

      Okay hier so wie es klappt :
      (danach, wie es nicht klappt)

      BASCOM-Quellcode

      1. 'TEST-PRG für ATtiny44 PWM
      2. $regfile = "attiny44.dat"
      3. $crystal = 8000000
      4. $hwstack = 40
      5. $swstack = 16
      6. $framesize = 32
      7. Dim Duty1 As Word , Duty2 As Word 'Variablen dimensionieren
      8. Config Pina.0 = Input 'A0/1 als eingänge
      9. Config Pina.1 = Input
      10. Taster_li Alias Pina.0 'Taster zuweisung für die Eingänge
      11. Taster_re Alias Pina.1
      12. Porta.0 = 1 'interne Pull-ups aktiviert
      13. Porta.1 = 1
      14. Duty1 = 1 'Werte für Stillstand
      15. Duty2 = 1
      16. Config Pina.5 = Output 'PWM-Pins OC0A/B oder OC1A/B zuweisen (Datenblatt)
      17. Config Pina.6 = Output
      18. Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
      19. Enable Interrupts 'Interrupts global ein
      20. Enable Timer1 'Timer aktivieren
      21. Pwm1a = 0 'zunächst alles 0
      22. Pwm1b = 0
      23. Do 'Hauptschleife um per Taster Duty-cycle zu verändern
      24. If Duty1 > 0 And Taster_re = 0 Then
      25. Decr Duty1
      26. End If
      27. If Duty1 = 0 And Taster_re = 0 Then
      28. Incr Duty2
      29. If Duty2 > 255 Then Duty2 = 255
      30. End If
      31. If Duty2 > 0 And Taster_li = 0 Then
      32. Decr Duty2
      33. End If
      34. If Duty2 = 0 And Taster_li = 0 Then
      35. Incr Duty1
      36. If Duty1 > 255 Then Duty1 = 255
      37. End If
      38. Pwm1a = Duty1 'Duty-cycle an PWM-Pins übergeben
      39. Pwm1b = Duty2
      40. Waitms 10
      41. Loop
      42. End
      Alles anzeigen




      So geht es leider nicht :
      (Warum , bzw. wie denn ?)


      BASCOM-Quellcode

      1. 'TEST-PRG für ATtiny44 PWM
      2. $regfile = "attiny44.dat"
      3. $crystal = 8000000
      4. $hwstack = 40
      5. $swstack = 16
      6. $framesize = 32
      7. Dim Duty1 As Word , Duty2 As Word 'Variablen dimensionieren
      8. Config Pina.0 = Input 'A0/1 als eingänge
      9. Config Pina.1 = Input
      10. Taster_li Alias Pina.0 'Taster zuweisung für die Eingänge
      11. Taster_re Alias Pina.1
      12. Porta.0 = 1 'interne Pull-ups aktiviert
      13. Porta.1 = 1
      14. Duty1 = 1 'Werte für Stillstand
      15. Duty2 = 1
      16. Config Pinb.2 = Output 'PWM-Pins OC0A/B oder OC1A/B zuweisen (Datenblatt)
      17. Config Pina.7 = Output
      18. Config Timer0 = Pwm , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
      19. Enable Interrupts 'Interrupts global ein
      20. Enable Timer0 'Timer aktivieren
      21. Pwm0a = 0 'zunächst alles 0
      22. Pwm0b = 0
      23. Do 'Hauptschleife um per Taster Duty-cycle zu verändern
      24. If Duty1 > 0 And Taster_re = 0 Then
      25. Decr Duty1
      26. End If
      27. If Duty1 = 0 And Taster_re = 0 Then
      28. Incr Duty2
      29. If Duty2 > 255 Then Duty2 = 255
      30. End If
      31. If Duty2 > 0 And Taster_li = 0 Then
      32. Decr Duty2
      33. End If
      34. If Duty2 = 0 And Taster_li = 0 Then
      35. Incr Duty1
      36. If Duty1 > 255 Then Duty1 = 255
      37. End If
      38. Pwm0a = Duty1 'Duty-cycle an PWM-Pins übergeben
      39. Pwm0b = Duty2
      40. Waitms 10
      41. Loop
      42. End
      Alles anzeigen



      Grüsse
      10 GOTO 20: PRINT "HALLO"
      20 GOTO 10

      Geht nicht...dämliche Computer !

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bascom-Billy ()

    • Hi alle !

      @ cable : hmmmm so,wie geschrieben eingegeben und läuft ?
      Seltsam,

      Bei mir habe ich jetzt rausgefunden (Datenblatt schrieb da auch irgendwas in dem Zusammenhang)
      dass es nur funktioniert, wenn ich statt" Config Portb.2" vor dem "Config TIMER0..."
      die Aus-/Eingänge und Datenrichtung über das Daterichtungsregister DDRx setze !

      Also DDRB = &b00000010 (Beispiel)

      Warum , kann ich nicht sagen.

      Mal eine andere Frage :

      der ATtiny hat ja nur interne 8Mhz und die Fuse vonwegen "Teiler 8"...

      Wie stelle ich den 44 denn auf eine bestimmte Frequenz (ohne xternen Quarz) ?

      Gruss Franz
      10 GOTO 20: PRINT "HALLO"
      20 GOTO 10

      Geht nicht...dämliche Computer !
    • Hallo Bascom-Billy
      ich habe dein Programm so übernommen wie du es geschrieben hast. Ich habe nur eine FOR NEXT Schleife hinzugefügt, weil ich keine Taster anschließen wollte.
      For N = 0 To 255
      Pwm0a = N
      Pwm0b = N
      Waitms 10
      Next
      For N = 255 To 0 Step -1
      Pwm0a = N
      Pwm0b = N
      Waitms 10
      Next

      Eine LED angeschlossen die auf- und abgeblendet wird.
      Du kannst ohne Quarz nur über die Fuse einen Teiler durch 8 einstellen also 1MHz oder 8 MHz. Bezw. 128kHz.
      Ich nutze Bascom 2.0.8.0
      Versuch macht klug !
    • Hallo Ihr !

      Vieleicht liegt es am ATtiny44 - der war aus China für 1€ ...
      Es geht zwar, aber das PWM-Signal ist nicht so, wie es sein sollte.
      Vieleicht defekt, keine Ahnung..?

      Ich habe das Programm jetzt auf den ATtiny2313a umgeschrieben und es läuft sofort.
      Ergebnis ist auch befiedigend...

      Gruss und Dank !!
      10 GOTO 20: PRINT "HALLO"
      20 GOTO 10

      Geht nicht...dämliche Computer !
    • @Bascom-Billy
      Vielleicht nur ein Schönheitsfehler, aber du dimensionierst in deinem Programm
      für timer0 Duty as Word. Der Timer0 ist aber nur ein 8 Bit Timer. Da hätte as Byte gereicht.
      Natürlich passt 255 auch in ein Word, aber weist du, wie zickig sich Fräulein Tiny hat ??
      In wie weit das relevant ist, ich weis es nicht, es ist mir aber aufgefallen.

      Detlef
      Leichtsinn ist kein Mut, Vorsicht keine Feigheit.
    • Hallo,

      ja habe ich gesehen. Aber leider keine Besserung.
      Nicht schlimm. Ich lasse es jetzt auf dem Tiny2313 laufen. Dann habe
      ich auch noch UART ;) Vieleicht kommt meine Anwendung nicht mit
      dem Timing des 44 zurecht. Ich besorge mir mal noch einen "ordentlichen"
      neuen 44er und dann gucke ich nochmal.

      Vielen Dank !
      Gruss Franz
      10 GOTO 20: PRINT "HALLO"
      20 GOTO 10

      Geht nicht...dämliche Computer !