Timer0 und Timer1

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Timer0 und Timer1

      Hallo,
      kann man Timer0 und Timer1 in einem Programm einsetzen ?
      Nutze einen Attiny2313.
      kommen sie sich bei enable Interrupts in die quere?
      Wie muss man sie eventuell konfigurieren
      ist momentan Standartprogrammierung
      Der Hintergrund:
      Timer0 und Timer1 werden mit einem Taster gestartet
      Timer0 schaltet nach Zeit timer1 ab bis erneuter Tastendruck erfolgt.

      Gruß
      Jürgen

      The post was edited 1 time, last by Telefonbastler ().

    • Die beiden sind ziemlich unabhängig voneinander.
      Klar, wenn eine ISR läuft kommt die andere erst dran, wenn die erste zu Ende ist.
      Da kannst du allerdings wenig dran machen, es sei denn, sie arbeiten synchron, dann kannst dafür sorgen, dass sie nie gleichzeitig dran sind. Ist natürlich mit den Start Taster nicht so trivial.
      Und es gilt natürlich wie immer der Grundsatz, ISR so kurz wie möglich.
    • Hallo Robert,
      ich arbeite immer noch an unserer Notausschaltung der museumsbahn.
      Die Steuerung soll erst in Betrieb gehen wenn der Zug fährt.Dafür sitzt an der Achse ein Magnetsensor der
      pro Umdrehung einen Impuls abgibt.Ich habe aber keinen Interuptport frei oder ich müsste alles ändern(4Loks)
      Hatte vor den Impuls mit Timer0 auszuwerten und damit timer1 zu steuern.D.h Zug fährt Timer1 läuft,Zug hält Timer1 stoppt.
      Mitch64 hatte eine Idee,aber damit bin ich nicht klargekommen.Nutze einen Attiny2313,der Impuls kommt über PD6 rein.
      Toll wäre es dann noch,wenn ein Dauerimpuls(0) anliegt der timer1 auch gestoppt wird.
      Hab das Programm beigefügt.

      Gruß
      Jürgen
      Files
      • Notaustest.bas

        (3.35 kB, downloaded 9 times, last: )
    • Hallo,

      nur wie ich das jetzt in Bascom verknüpfe,da stosse ich an meine Grenzen.
      Den Timer1 starten wenn der Zug losfährt ist ist machbar,ABER:
      wenn keine Impulse vom Sensor kommen den timer1 stoppen ?
      So wie ich das probiert habe(siehe Programm)wird mit jedem Impuls der
      Timer1 neu gestartet und das Programm funktioniert nicht.
      Ich weiss nicht weiter.

      Gruß
      Jürgen
    • Versuch doch mal zu beschreiben, was dein Programm eigentlich tun soll.
      Lass dabei mal Timer 1 und 2 einfach weg.
      Beschreibe was passieren soll, wenn der zug steht, auf was soll reagiert werden (Toren, Magnetschalter am Rad etc.)
      Und was dann wenn er fährt, auf was muss da reagiert werden?

      Wenn erst mal die Funktion des Programms geklärt ist, kann man auch Code schreiben.
    • Telefonbastler wrote:

      wenn keine Impulse vom Sensor kommen den timer1 stoppen ?
      Der Impuls setzt den Timer 0 zurück. Kommt jetzt keiner mehr würde er überlaufen und kann in eine Isr den Timer1 stoppen. Wie schnell sind die Pulse ? Oder wie langsam wäre Stillstand?
      Das Rücksetzen kann ein interupt oder die Main? Bleibt der Puls auf definiertem Level oder ist es Zufall wo er stehenbleibt? (Immer Low oder irgendwo)
    • Hallo Mitch64,Hallo Pluto25,Hallo Franz,

      Franz,die sekunden stimmen nicht ganz,das Programm läuft aber so mit den Zeiten.

      Die Maschinen kann man unter Böhmetal-kleinbahn.de sehen.

      Was möchten wir:
      Das Programm soll erst starten,wenn der Zug losfährt.Die Impulse werden von einem Sensor an der Achse
      erzeugt . max 5 Impulse/sek.Eingang am Attiny2313 PinD.6 gegen 0V
      Wenn der Zug anhält und keine Impulse mehr kommen soll das Programm anhalten.
      Es kann aber sein,wenn der Zug steht und der Sensor ungünstig steht das der Sensor ein Dauersignal ausgibt
      was aber ebenfalls als "Zug steht" ausgewertet werden sollte.
      Das Programm läuft momentan so .Programm anbei

      Gruß
      Jürgen
      Files
      • Notaustest.bas

        (3.26 kB, downloaded 6 times, last: )
    • Hallo Pluto,

      solange keine Impulse bis der Zug wieder anfährt und erneut Impulse kommen.
      Ungern,müsste alle Platinen ändern.
      Wenn es aber eine Lösung gibt wäre ich auch dazu bereit.
      Im moment fahren keine Züge bis zum Saisonanfang(Ende März)

      Gruß
      Jürgen
    • Pluto25 wrote:

      PinD.6 kann nicht als int verwendet werden kann
      Warum soll das nicht gehen?
      Timer1 den Capture auf pos. oder neg. Flanke konfigurieren, eine ISR_ICP1 anlegen und fertig.

      Da der ICP der PortD.6 ist, muss auch die Platine nicht geändert werden.
      Der ICP-Interrupt reagier auf Flanke, d.h. es ist egal, wenn der Zug so steht, dass das Signal vom Ran permanent High oder Low ist.

      Lege eine Neue Variable in dem Timer-Interrupt an, die als Timeout funktioniert, um die Entscheifung (30s kein Puls) zu treffen, dass der Zug steht.