-
        

Ergebnis 1 bis 4 von 4

Thema: Problem mit 8051 Timer

  1. #1

    Problem mit 8051 Timer

    Anzeige

    Hallo zusammen,

    ich hab ein kleines Problem bei der Erstellung eines HIGH to LOW Levels mit meinem µC Timer. Ich arbeite mit einem µPSD33XX der auf einem 8051 aufbaut.

    Für eine bestimmte Anwendung brauche ich eine Periodendauer von ca.5s, ist es überhaupt mögliche eine solche zu generieren?

    Wenn ja, weiss vielleicht einer welche Einstellung oder Rückkopplungen ich tätigen muss???

    Gruss Finwe

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.03.2005
    Ort
    Nürnberg
    Alter
    37
    Beiträge
    118
    Möglich ist das schon.
    Du musst aber einen weiteren Zähler in dem Timerinterupt mitlaufen lassen.

    Ohne deine Tacktfrequenz zu kennen kann ich dir natürlch nicht die richtigen
    Einstellungen nennen.

    Am einfachsten wird es sein wenn du sie dir von diesem Codegenerator berechnen lässt.

  3. #3
    Also das mit dem Timer High und Low Byte rechnet der Generator aus...
    aber ich weiss leider nicht welche zusätzlichen Einstellungen ich tätigen muss, z.B. Zähler mitlaufen lassen. Vielleicht kannst du mir das anhand eines Beispiels zeigen.

    Bsp.: Duty Cycle 50%, und Periodendauer 6 sec

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.03.2005
    Ort
    Nürnberg
    Alter
    37
    Beiträge
    118
    Der Generator erstellt eientlich schon ein Program das die nötigen Funktionen enhält.

    Mit dem Zähler war einfach ein Byte im RAM gemeint.
    Dieses decrementierst du in jedem Timerinterupt. Ist es 0 kannst du deine
    Funktion ausführen.

    Sieht dann etwa so aus:
    Code:
    ; Autor    : unknown
    ; Projekt  : Test
    ; Datum    : Thu Oct 27 2005 18:17:29 GMT+0200 (CEST)
    ; Quarz    : 40.000 MHz
    ; Assembler: ASEM-51
    ; Generator: CodeGen Stable Version 1.1, Erik Buchmann '04
    ;---------------------------------------------------------------
    $NOLIST
    $NOMOD51
    $INCLUDE (89c1051.mcu)
    USING 0
    $LIST
    
    ; Konstanten-, Speicher- und Portbelegung
    ;---------------------------------------------------------------
    timer0_ext24    DATA 08h
    
    TL0PRE          EQU 219
    TH0PRE          EQU 11
    TX0PRE          EQU 16
    
    ; Programmbeginn
    ;---------------------------------------------------------------
     ORG 0h
            jmp start
    
    ; Interruptroutinen
    ;---------------------------------------------------------------
    
     ORG 0Bh
            jmp timer0_int
    
    ; Funktionen
    ;---------------------------------------------------------------
    
    ; Interruptbehandlungsroutine Timer 0
    timer0_int:
            mov TL0, #TL0PRE
            mov TH0, #TH0PRE
            djnz timer0_ext24,timer0_int_label
            mov timer0_ext24,#TX0PRE
            acall timer0_int_label
    
    ;wird alle 3s ausgeführt
           cpl   ausgansbit
    
    
            ret
    timer0_int_label:
            reti
    ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
    ; Initialisierung
    ;---------------------------------------------------------------
    start:
    
    ; Timer 0 aktivieren
    ;  Intervall: 300.0 ms
    ;  Software-Kontrolle
            mov TL0, #TL0PRE
            mov TH0, #TH0PRE
            mov timer0_ext24,#TX0PRE
    
    ; die SFR's initialisieren
            mov SP,  #20h
            mov TMOD,#1
            mov TCON,#16
            mov IE,  #130
    
    ; Hauptprogramm
    ;---------------------------------------------------------------
    main:
    ;       [...]
    
    ; Programmende
    ;---------------------------------------------------------------
    ende:
            jmp ende
    END
    Enstellung des Codegenerators:
    Frequenz 40MHz
    Timer0 aktiviert
    Intervalldauer: 300.0 ms

Berechtigungen

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