-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: BASCOM8051 und Timer im Mode0

  1. #1

    BASCOM8051 und Timer im Mode0

    Anzeige

    Ich möchte eine Multiplexanzeige mit ca. 200 Hz ansteuern. Also habe ich gedacht, den Timer im mode0 eine ISR nach der entsprechenden Zeit abarbeiten zu lassen. Mit meinem Testprogramm komme ich aber auf 56 Hz. Wo liegt mein Denkfehler? Hier der Text, das original im Anhang:

    'timertest0, 25.3.13
    Dim T As Byte

    $crystal = 11059200
    Config Timer0 = Timer , Mode = 0 , Gate = Internal
    On Timer0 Anzeige
    Load Timer0 , 4608
    Enable Timer0
    Enable Interrupts
    Start Timer0

    Do
    Wait 1
    P3.2 = Not P3.2
    Loop
    End

    Anzeige:
    Load Timer0 , 4608 '11059200/(12*460= 200
    P3.3 = Not P3.3
    Incr T
    If T > 100 Then
    P3.4 = Not P3.4 'nur Kontrolle
    T = 0
    End If
    Return
    Angehängte Dateien Angehängte Dateien

  2. #2
    Offensichtlich arbeitet niemand mit Bascom8051 . Ich habe nun einen Irrtum gefunden: Der load-befehl gilt nur im mode2. Jetzt habe ich statt dessen die Werte für TL0 = 32 und TH0 = 144 eingesetzt, erhalte aber auch eine abweichende Frequenz, hier 128 Hz. Nun kann ich mich zwar dem gewünschten Wert nähern, aber das erklärt nicht die Differenz. Vielleicht hat doch noch jemand eine Idee!
    Dolivo

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    08.04.2009
    Ort
    an der Ostsee
    Beiträge
    334
    Der Interrupt wird bei Überlauf (65535 -> 0) ausgelöst. Dein Wert sollte also -4608 oder 65536-4608 => 60928 sein. Peter

  4. #4
    Hallo, Peter,
    zuerst danke für die Antwort. Aber im mode0 kann ich doch nur eine 13-Bit-Zahl verwenden. Also müsste ich hier das auf 8192 beziehen? Ich teste es demnächst.
    Dolivo

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    08.04.2009
    Ort
    an der Ostsee
    Beiträge
    334
    RTFM:The 13-bit register consists of all 8 bits of TH0 and the lower 5 bits of TL0. The upper 3 bits of TL0 are indeterminate and should be ignored.

  6. #6
    nein, auch damit bekomme ich andere Zeiten. Mir war schon klar, dass im mode0 TL0 max. 32 sein kann.

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    08.04.2009
    Ort
    an der Ostsee
    Beiträge
    334
    nein, auch damit bekomme ich andere Zeiten.
    ...und...welche????
    -----------------------------
    TL0 = 32
    was soll das sein?
    32D -> 20H -> 10000B !!!
    bei TL0 sind nur die unteren 5 Bit relevant... TL0 = xxx00000B
    -----------------------------
    mit TL0 = 32 und TH0 = 144
    n = 11059200 / ( 12 * (256-144) * 32) = 257,1Hz -> 3,88ms
    mit diesen 3,88ms wird die LED geschaltet. Für eine Periade brauchst Du 2 LED-schaltungen.
    1/( 3,88ms *2) = 128,5Hz an der LED
    -----------------------------
    mit TL0 = 0 und TH0 = 112
    n = 11059200 / ( 12 * (256-112) * 32) = 200Hz -> 5ms
    1/( 5ms *2) = 100Hz an der LED
    -----------------------------

  8. #8
    TL0 = 32
    was soll das sein?
    Ja, hier habe ich nicht gedacht.
    Ich erhalte folgende Daten bei TL0=0 (bzw. 32):
    TH0=112 und f=91 Hz, TH0=144 und f=128 Hz, TH0=185 und f=198 Hz. Es handelt sich um die Frequenz, also Port ein und aus.

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    08.04.2009
    Ort
    an der Ostsee
    Beiträge
    334
    Deine Werte ergeben keinen Sinn, zurückgerechnet hast Du 3 verschiedene Quarzfrequenzen oder Dein Frequenzmesser ist totaler Murx.

    Arbeitest Du mit dem AT89C4051?

  10. #10
    Tja, das eben ist mein Problem. Ich benutze einen AT89C4051 und zwei Frequenzmesser sowie noch ein Periodendauermessgerät (für pos. und neg.).

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. BASCOM8051 und SPI
    Von dolivo im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 06.02.2013, 10:21
  2. SAA1064 und Bascom8051
    Von dolivo im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 0
    Letzter Beitrag: 23.09.2010, 11:05
  3. getad2051() in BASCOM8051
    Von dolivo im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 0
    Letzter Beitrag: 29.07.2010, 14:13
  4. RC5 mit BASCOM8051
    Von roman_1986 im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 0
    Letzter Beitrag: 07.01.2008, 22:16
  5. PWM mit Timer 0 und 2 geht, aber nicht mit Timer 1 (mega64)
    Von popi im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 14.06.2006, 17:00

Berechtigungen

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