-         

Ergebnis 1 bis 2 von 2

Thema: Hilfe bei Bascom Programmierung (Timer)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.01.2006
    Beiträge
    15

    Hilfe bei Bascom Programmierung (Timer)

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Folgende Umgebung:

    ATtiny13 mit 4,8Mhz

    Ziel:

    an den Ausgängen PortB.0 und PortB.1 soll ein PWM Signal mit 25 Hz anliegen. Das Signal hat 2 Zustände 1. 20% High 80% Low 2. 80% High 20% Low Das habe ich mit Timer_isr ganz gut hinbekommen. als nächstes muss der Tiny noch auf die Eingänge PortB.2 - B.5 reagieren und unterschiedliche PWM Zustände an den Ausgängen schalten.

    Nachdem ich das wie angehangen realisiert habe, habe ich ein sehr uistabiles Signal, so das in unregelmäßigen Abständen das PWM Signal unsauber wird ( Umschaltung von Low nach High oder anders herum fehlt.

    Kann mir dafür jemand einen Tip geben ?

    Code:
    $regfile = "ATtiny13.dat"
    '$crystal = 4800000
    Dim Hi As Byte
    Dim Lo As Byte
    Dim Phase As Bit
    Dim Pwm1 As Bit
    Dim Pwm2 As Bit
    
    
    Const Reload = 95                                           'um 24 Hz zu erzeugen 4,8Mhz/8/64
    $hwstack = 10                                               'Eingefügt Weil die Standardvorgaben
    $swstack = 10                                               'für den Tiny13 zu
    $framesize = 20                                             'hoch sind.
    Declare Sub Taste_1
    Declare Sub Taste_1a
    Declare Sub Taste_2
    Declare Sub Taste_2a
    
    Ddrb = &B00000011
    Portb = &B11111111
    Lo = Reload - 13
    Hi = Reload - Lo
    Phase = 1
    Config Timer0 = Timer , Prescale = 256
    On Timer0 Timer_isr
    Enable Timer0
    Enable Interrupts
    Pwm1 = 0
    Pwm2 = 0
    
    Do
     Debounce Pinb.2 , 1 , Taste_1 , Sub
     Debounce Pinb.2 , 0 , Taste_1a , Sub
     Debounce Pinb.3 , 1 , Taste_2 , Sub
     Debounce Pinb.3 , 0 , Taste_2a , Sub
    Loop
    
    Timer_isr:
      If Phase = 1 Then
       Portb.0 = Pwm1
       Portb.1 = Pwm2
       Load Timer0 , Lo
       Phase = 0
    
      Else
       Portb.0 = Not Pwm1
       Portb.1 = Not Pwm2
       Load Timer0 , Hi
       Phase = 1
      End If
    Return
    
    Sub Taste_1
       Pwm1 = 1
    End Sub
    Return
    
    Sub Taste_1a
       Pwm1 = 0
    End Sub
    Return
    
    Sub Taste_2
       Pwm2 = 1
    End Sub
    Return
    
    Sub Taste_2a
       Pwm2 = 0
    End Sub
    Return

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    22.01.2006
    Beiträge
    15
    hat sich erledigt, habe einen andern Weg gefunden

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •