- Labornetzteil AliExpress         
Ergebnis 1 bis 5 von 5

Thema: Bekomme Timer1 bei 2313 nicht zum laufen

  1. #1
    Gast

    Bekomme Timer1 bei 2313 nicht zum laufen

    Anzeige

    Praxistest und DIY Projekte
    Hallöle

    Ich beschäftige mich erst seit ca. vier Wochen mit Mikrocontroller und habe deshalb Timer-Neulingsproblem mit Bascom.
    Es sollen einzelne Pins eines Ports nacheinander ein- und wieder ausgeschaltet werden. Das ganze dient der Ansteuerung von Servos, die als Stellmotor nach einem Tastendruck lediglich zwei bestimmte Positionen langsam anfahren sollen.
    Ich habe schon alles mit For..Next – Schleifen zum laufen gebracht, was mir aber mit 3,5µs/Schleife schlichtweg zu lange dauert, da das Signal um nur 110µs verkürzt werden kann (Stellvorgang dauert nur 600ms was mir zu kurz ist). Deshalb brachte mich ein Bekannter auf die Idee die Internen Timer zu nutzen. So weit so gut alles mal in den Rechner getippert und den Versuch einer Simulation unternommen. Nach dem Start der Simulation bleibt das Prog bei „loop until...“ stehen und Timer1 hat angeblich den Wert „0“. Hat jemand eine Idee was ich falsch mache? – Im Forum habe ich leider keinen vergleichbaren Thread gefunden.

    Hier mal ein Auszug aus meinem Programm:


    $regfile „2313def.dat“
    $crystal = 10000000

    Config Timer1 = counter, edge = rising, prescale = 8
    Config portb = output
    Dim a(2) as Word

    Begin1:
    Timer1 = 0 ‘Timer auf “0” zurücksetzen
    Set pind.0 ‘Pind.0 logisch 1
    Do
    loop until timer1 = a(1)
    reset pind.0 ‘pind.0 logisch null
    .
    .
    .
    Goto begin1: ‘letzter Programmpunkt

    MfG der E-Fan

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Hallo Gast-E-Fan,
    Config Timer1 = counter, edge = rising, prescale = 8
    hmm, willst du nicht einen Timer, der irgendwann einen Interrupt auslöst?
    Dann solltest du "Config Timer1 = Timer..." schreiben.
    Such doch mal in der bascom-Hilfe nach timer1, das ist dort sehr gut beschrieben(mit Beispiel)
    Gruss, Michael

  3. #3
    Gast
    Habe ich dabei noch bestimmte Dinge zu beachten?
    Mit Interrupten zu arbeiten ist für mich absolutes Neuland.
    mfG der E-Fan

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Hallo Gast (E-Fan?),
    ist für mich absolutes Neuland.
    keiner ist als Meister vom Himmel gefallen
    Du solltes dir wirklich die Bascom-Hilfe zu Herzen nehmen, es gibt dort viele Erklärungen und Beispiele. Auch das Samples-Verzeichnis hat viel zu bieten.
    Ich geb dir mal einen Codeschnipsel, zu deinem Timer1-Problem, damit du die Richtung kapierst :

    Code:
    Config Timer1 = Timer , Prescale = 64
    
    On Timer1 Timer1_isr                                        ' Jump to Timer1 ISR
    
    
    Enable Timer1                                               ' Enable the timer interrupt
    Enable Interrupts                                           ' Enable Global Interrupt
    
    Do
       Nop
    Loop
    
    End
    
    Timer1_isr:
        Portb.0 = Not Pinb.0
        Timer1 = 65536 - 62500                                  ' Reload Timer1 for Period of 1 sec
    Return


    Gruss, Michael

  5. #5
    Gast
    Danke Michael!
    Muss ich heute Abend gleich mal ausprobieren.

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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

Labornetzteil AliExpress