ATtiny24: Timer als sicherheitsoption

Gast #2500131
Hallo

zum Problem:

Mit dem ATtiny 24 wird ein Motor über einen Treiber und Mosfet 
angesteuert. An dem Motor hängt ein Untersetzungsgetriebe und am letzten 
Zahnrad wird eine Umdrehung mittels eines Tasters erkannt und der Motor 
gestoppt. Nun habe ich das Problem, dass der sehr kleine Taster auch 
gerne mal seinen Geist aufgibt und nicht mehr schaltet. Daher war mein 
Gedanke, dass ich den 16Bit Timer so einstelle, mit CTC und einem 
Prescaler von 64 laufen lasse (~4s) und eingeschaltetem Interrupt 
einstelle. Dann beim Einschalten des Motors den Timer starte, und 
entweder der Taster stoppt den Motor oder im Notfall der Timer löst 
einen Interrupt aus und stoppt den Motor wenig später.

Nun weiß ich nicht wie ich den Timer nach auslösen des Tasters oder dem 
eigenen Interrupt stoppe, auf null setzte und dann beim erneuten starten 
des Motors den zurückgesetzten Timer wieder starte? Im Interupt den 
Motor dann ausschalten ist kein Problem.

Schon mal vielen Dank für Eure Hilfe!

MfG Koloblix
Gast
Koloblix schrieb:
> eine Umdrehung mittels eines Tasters erkannt und der Motor
> gestoppt.
Mit deinem Konzept musst du im worst case damit rechnen, dass der Motor 
noch mindestens EINE Umdrehung macht, bevor dein Sicherheitskonzept 
greift.
Gast
Die 1-3 Umdrehung die der Motor noch macht sind irrelevant, die machen 
kaum einen unterschied, wichtig ist dass der Motor egal wie stehen 
bleibt wenn der Taster versagt.
Gast
Hab da noch eine Frage:

Als Timer Modus muss ich ja dann einen CTC Modus benutzen. Nun gibt es 
Laut Datenblatt 2 dieser Modi. Der eine vergleicht den Timerwert mit dem 
Wert im ICR1 Register und der andere mit dem OCR1A.
Wo ist denn da der Unterschied? Das ganze soll ja nur nach einer 
bestimmten Zeit einen Interrupt auslösen, und keine Auswirkung auf 
irgendeinen Pin haben

MfG Kolo
Koloblix schrieb:

> Als Timer Modus muss ich ja dann einen CTC Modus benutzen. Nun gibt es
> Laut Datenblatt 2 dieser Modi. Der eine vergleicht den Timerwert mit dem
> Wert im ICR1 Register und der andere mit dem OCR1A.
> Wo ist denn da der Unterschied?

Das der eine MOdus das ICR1 Register als TOP Wert benutzt und daher ICR1 
nicht zur Verfügung steht um mit dem Timer die Aufgaben zu erledigen, 
die man eben mit ICR1 so macht (Input Capture)

Und das der andere Modus das OCR1A Register als TOP Wert benutzt und 
daher OCR1A nicht zur Verfügung steht, um mit dem Timer die Aufgaben zu 
erledigen, die man eben mit OCR1A so macht (zb PWM auf dem A Kanal vom 
Timer)

> Das ganze soll ja nur nach einer
> bestimmten Zeit einen Interrupt auslösen, und keine Auswirkung auf
> irgendeinen Pin haben

Auf deutsch: es ist völlig Wurscht welchen du nimmst.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.