-         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: RNBFRA Software: Schrittmotoren mit Timern ansteuern (BASCOM

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    26.02.2004
    Alter
    53
    Beiträge
    25
    Anzeige

    sorry,

    Timer0 wird eigentlich mit TCCR0=&B00000101 gestartet.(Vorverteilung 1024)

    Oder in Bascom mit Config Timer0, welches auf das selbe Register zugreift.

    mfg

    Tomkeule

  2. #12
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    49
    Beiträge
    1.258
    Hallo tomkeule,
    zu 2.: Mit Enable werden sie erlaubt, mit start gestartet -->siehe Hilfe oder auch: RTFM!
    zu3.: Klar X und Y sind Word- Werte, mitgedacht hast du da. Leider hast du vergessen, dass deine Timer nur 8 bit haben.
    Ich sags dir jetzt nochmals: Dein Timer hat 8 (in Worten: ACHT) bit. Er läuft danach über! Deine Variable, die du reinschreibst, hat 16 bit. (SECHZEHN). Hast du überlegt, was passiert, wenn du einen Wert grösser als 8bit in eine 8bit-Variable schreibst???
    Gruss, Michael

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    26.02.2004
    Alter
    53
    Beiträge
    25
    Hallo Michael,

    bis auf Punkt 3 wäre soweit alles geklärt.

    Bei meiner Variablen die als WORD deklariert ist(2 Byte) wird beim speichern in einer Byte -Variablen das 1.Byte abgeschnitten.

    Glaube ich

    mfg

    Tomkeule

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    28.04.2004
    Ort
    Nähe Köln
    Alter
    52
    Beiträge
    247
    Hallo

    Nochmal zur Erklärung

    Mit
    Config Timer0 = Timer , Prescale = 1024 wird der Timer Vorteiler eingestellt und danach läuft der Timer0 auch. Man kann den Timer0 nur über den Vorteiler anhalten indem man ihn auf null setzt.

    Mit
    Enable Timer0

    wird der Timer0 Overflow Interrupt erlaubt und sonst gar nichts.


    Mit
    Stop Timer0
    Wird der Vorteiler von Timer0 auf null gesetzt und er wird somit angehalten.

    Mit
    Start Timer0
    Wird der alte Vorteilerwert wieder zurück geschrieben und der Timer damit wieder gestartet.

    Das gleiche gilt für die anderen Timer auch.

    MFG
    Dieter

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.04.2004
    Ort
    Friesenheim - Baden
    Beiträge
    199
    Welchen wert setze ich wenn ich Timer0 = X setzte?

    kann ich den timer auch langsamer laufen lassen?

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    28.04.2004
    Ort
    Nähe Köln
    Alter
    52
    Beiträge
    247
    Hallo

    Mit Timer0 = x schreibst du den Wert der Variablen x in Timer0. Kommt halt immer darauf an, welcher Wert in x steht.

    Langsamer geht leider nicht, da der maximale Vorteiler 1024 ist und der ja eingestellt ist.

    Welche Zeiten willst du denn erreichen ?

    Vielleicht kann ich dir da mal eine Lösung zeigen .

    MFG
    Dieter

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.04.2004
    Ort
    Friesenheim - Baden
    Beiträge
    199
    naja ich will das der Schrittmotor sich langsamer dreht...

    bis jetzt hab ich das nur mit modulo gemacht, gibts da keinen anderen trick?

  8. #18
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    28.04.2004
    Ort
    Nähe Köln
    Alter
    52
    Beiträge
    247
    Ok dann wollen wir mal rechnen.

    Der Timer ist ja nur eine Speicherstelle des uC, den man mit dem Takt verbinden kann
    und dann um 1 erhöht wird. Beim Wechseln von 255 auf 0 ( 256) kann ein Interrupt
    ausgelöst werden.

    Daraus ergibt sich.

    Takt / Vorteiler = Zeit pro Erhöhung Beispiel: 8 MHZ / 1 = 125 ns
    oder 8MHZ / 1024 = 128 us. Damit kann Timer0 minimal in 125 ns oder maximal in 128 us
    um 1 erhöht werden.

    Wenn man den Timer0 auf 0 einstellt dauert das dann 256 mal so lange, bis ein Interrupt auftritt.

    Beispiel :

    Timer0 = 100 Vorteiler 1024 Takt 8 MHZ

    8MHZ / 1024 = 128 us pro Erhöhung. Der Timer braucht jetzt noch 256 - 100 = 156 Erhöhungen
    bis zum Interrupt ---> 156 * 128 us = 19,98 ms bis zum Interrupt.

    Wenn du jetzt in der Interrupt Routine eine Variable deiner Wahl um 1 erhöhst, hast
    du doch eine Erhöhung alle ca 20 ms. Wenn deine Variable damit den Wert 50 erreicht,
    so sind ungefähr 1 Sekunde vergangen. ( 0,9984 Sekunden )

    Code:
    dim zeit as byte
    
    On Timer0 Ontimer0 
    Config Timer0 = Timer , Prescale = 1024 
    Enable Timer0 
    
    do
        nop
    loop
    
    
    Ontimer0: 
       Timer0 = 100                   'Neue einstellen für 20 ms INT.
       incr zeit                           'Interrupts zählen
       if zeit >= 50 then             '1 Sekunde vorbei
             Toggle Portc.2 	
             zeit = 0                     'Zeit löschen
       endif
    Return
    MFG
    Dieter

  9. #19
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.070
    Blog-Einträge
    1
    Hi Dino Dieter,
    feines übersichtliches Beispiel! Albanac, daraus kann man eigentlich alles ableiten. Je nach Geschwindigkeit kannst du in der Timerroutine eigene Zähler nutzen und andere Subroutinen für bestimmte Aufgaben heranziehen. So könnte eine die Schrittmotoren bewegen und eine andere eine Uhr stellen usw. Durch veränderung des maximalen Zählerstandes bei dem auf 0 zurückgestellt wird, kannst du auch die Geschwindigkeit von Schrittmotoren regeln. Wenn man es einigermaßen elegant gestaltet dann ist das am Ende genauso einfach wie mit Getriebemotoren, nur halt genauer da du auch Schritte zählen kannst.

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    28.04.2004
    Ort
    Nähe Köln
    Alter
    52
    Beiträge
    247
    Hallo Frank

    Ja das mit den Timern ist so eine Sache.

    Habe mich am Anfang auch sehr schwer damit getan, jetzt geht es aber gut.

    Timer1 hat ja noch viel viel mehr Möglichkeiten. Ist schon Klasse, was man mit den kleinen Dingern so alles anstellen kann.

    MFG
    Dieter

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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