PWM Signal an beliebigem Pin ausgeben

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • PWM Signal an beliebigem Pin ausgeben

      Hallo, ich habe bei einem Tiny 13A an PB.0 (OC0A) eine LED, die ich mit PWM ansteuere.
      Funktioniert auch prima. Jetzt mein Problem. Ich möchte die LED aber an PB.3 anschließen.
      Die Datasheet habe ich schon rauf und runter gelesen, stehe aber momentan total im Wald.
      Wie bekomme ich das Signal von PB.0 nach PB.3 ?
      Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Down
      Enable Oc0a
      Enable Interrupts
      So ist die PWM configuriert.
      und im Unterprogramm
      Do
      Zufall = Rnd(50 )
      Zeit = Zufall * 4
      Zeit = Zeit + 1
      Pwm0a = Zeit
      '?????
      Waitms 50
      Loop
      Wie gesagt, am PB.0 flackert die LED lustig vor sich hin.

      Wer weis Rat ?

      Detlef
      Leichtsinn ist kein Mut, Vorsicht keine Feigheit.
    • Per hw geht es halt nur an den fix eingestellten und im layout bezeichneten pins. Was geht ist soft-pwm, oder ein interrupt mit dem compare von dem timer. Aber an einer isr wirst du nicht vorbei kommen.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Naja, wenn man die hw-pwm verwendet, kommt das Signal an den dazu passenden, fixen pins raus. Oc0a wäre so einer. Wenn man das Signal woanders haben will, nützt eine einmalige Zuweisung nix, das wäre nur ein Schnappschuß des gerade anliegenen Pegels.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Pluto25 wrote:

      tschoeatsch wrote:

      fixen pins raus. Oc0a wäre so einer
      Ja, aber OC0B doch auch ?
      Ich sag's ja, ich bin ein Labersack X/
      Du hast Recht!

      Aber, es ist 'nur' ein anderer pin, ein beliebiger, wie in der Überschrift erwähnt, ist es nicht.
      Raum für Notizen

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

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

      The post was edited 1 time, last by tschoeatsch ().

    • bisheriges Fazit, ist der Pin PB.0 als PWM-Ausgang definiert, lässt er sich
      für nichts anderes missbrauchen.
      Was ich festgestellt habe, wenn der Timer gestoppt ist, liegt am Pin 0-Signal an.
      Damit kann man schon was anfangen. Wenn also der Prophet nicht zum Berg kommt,
      muss der Berg also zum Propheten.
      Ich habe jetzt mein Konzept so geändert, das ich die LED an Pin 5 (OC0A) anschließen kann.
      Ist zwar noch nicht fertig, sieht aber so aus, als wäre ich auf dem richtigen Weg.
      Wenn ich neue Ergebnisse habe, melde ich mich wieder.
      Bis dahin vielen Dank an alle, die sich dieses Themas angenommen haben.

      Detlef
      Leichtsinn ist kein Mut, Vorsicht keine Feigheit.
    • Dekaman wrote:

      Was ich festgestellt habe, wenn der Timer gestoppt ist, liegt am Pin 0-Signal an.
      Ich denke, es kommt drauf an, wann der timer gestoppt wurde. Ein Automatismus, dass der pin bei gestoppten timer immer =0 ist, ist mir nicht bekannt.
      Ich denke weiterhin, du solltest die Register zurück schalten, wenn du den pin als normalen output verwenden willst.
      Dazu aus dem Datenblatt
      11.9.1 TCCR0A – Timer/Counter Control Register A
      Bits 7:6 – COM0A[1:0]: Compare Match Output A Mode
      These bits control the Output Compare pin (OC0A) behavior. If one or both of the COM0A[1:0]
      bits are set, the OC0A output overrides the normal port functionality of the I/O pin it is connected
      to.

      Pluto25 wrote:

      Aber er läßt sich jederzeit auf etwas anderes Umschalten.
      das wird das wohl sein
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Bin erst heute wieder dazu gekommen, mich mit dem Problem, beliebiger Pin, zu befassen.
      Ich habe , obwohl ich eigentlich mit Registern nicht so viel am Hut habe, doch mal probiert.

      tschoeatsch wrote:

      Ich denke weiterhin, du solltest die Register zurück schalten, wenn du den pin als normalen output verwenden willst.
      Dazu aus dem Datenblatt
      11.9.1 TCCR0A – Timer/Counter Control Register A
      Bits 7:6 – COM0A[1:0]: Compare Match Output A Mode
      zuerst habe ich,nachdem Timer0 configuriert war,
      Tcom0 = Tccr0a.com00 'Com-Werte
      Tcom1 = Tccr0a.com01 'merken
      die Registerwerte in Variablen "gesichert", um sie später wieder einfügen zu können.
      Danach wurden beide COM Werte mit
      Reset Tccr0a.com00 'Portb.0 auf norm.
      Reset Tccr0a.com01 'I/O schalten
      auf 0 gesetzt. Das soll ja normale I/Os aus den Pins machen.
      In einem UP wird der Pin B.0 wieder zum PWM Pin mit
      Tccr0a.com00 = Tcom0 'Portb.0 auf
      Tccr0a.com01 = Tcom1 'PWM schalten
      und am Ende des UP werden wieder normale I/O aus dem Pin mit
      Reset Tccr0a.com00 'PortB.0 wieder
      Reset Tccr0a.com01 'auf I/O schalten
      generiert.

      Das Programm läuft jetzt zu meiner Zufriedenheit.
      Ich danke allen, die sich meiner angenommen haben.

      Allen ein gesegnetes Osterfest.

      Detlef
      Leichtsinn ist kein Mut, Vorsicht keine Feigheit.