Forum: Mikrocontroller und Digitale Elektronik AVR Mega 16 T0 Interrupt bei externen Signal


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Frank G. (frankg)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe vor, eine Markisensteuerung mit einem AT Mega16 zu bauen.
Die Schaltung ist betriebsbereit. Probleme habe ich mit dem Geber für 
die
Windgeschwindigkeit, da Impulse sehr langsam und unregelmäßig kommen
------------------------------------------------------------------------ 
-------
Eigenschaften der Geber::   Windsensor WIS01:
Bei einer Umdrehung/s = 1Hz für 20km/h Windgeschwindigkeit geht bis 7Hz 
= 140km/h
erzeugt ein Impuls nach High; konstante Länge = 50ms (erfaßtt werden 
müssten die Anzahl der Impulse in z.B.
10 Sekunden) und dann Mittelwert * 20km/h // ist jedoch bei kein Wind 
unendlich = kein Impuls

Jetzt ist folgendes angeschlossen:
Wind an T0  (PB0) (INT0 wäre auch noch frei)
------------------------------------------------------------------------ 
---------
Der Timer 2 läuft und erzeugt 1 Sek Takt/Interrupt und führt Anzeigen 
usw durch.
INT2 ist mit Regensensor besetzt.   PROBLEM:
Ich dachte zuerst man bekommt bei T0 einen Interrupt (wenn z.B. CS0 123 
auf eins
=steigende Flanke) und kann damit 10 Sekunden zählen und addieren. Das 
geht aber scheinbar nicht,
weil ja kein konstanter Impulsstrom da ist (kein Wind = kein Impuls)
Ich habe auch keine Interruptroutine dazu gefunden (TiMER0_COMP_vect und 
auch
TIMER0_OVF_vect) gehen nicht weil ja ein Vergleichswert erreicht werden 
soll und den
kennt man ja vorher nicht (Timer 1 und ICP ist auch schon besetzt, dazu 
melde ich mich später)
Eigentlich will ich nur Wissen ob die T0 oder INT0 richtig gedacht ist?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
1 lesenswert
nicht lesenswert
T0 ist ein Eingang, der den Timer 0 bei jedem Puls eins hochzählt, also 
ein externer Takteingang. Das ist vermutlich nicht das was du willst, es 
sei denn, du fragst dann Timer 0 in gleichmässigen Zeitabständen ab, mit 
Hilfe eines anderen Timers.

von Frank G. (frankg)


Bewertung
0 lesenswert
nicht lesenswert
Matthias S. schrieb:
> Das ist vermutlich nicht das was du willst, es
> sei denn, du fragst dann Timer 0 in gleichmässigen Zeitabständen ab, mit
> Hilfe eines anderen Timers.

OK dann sollte INT0 funktionieren

von Frank G. (frankg)


Bewertung
0 lesenswert
nicht lesenswert
Frank G. schrieb:
> du fragst dann Timer 0 in gleichmässigen Zeitabständen ab, mit
>> Hilfe eines anderen Timers.

Was ich da noch rauslese: Dann bekomme ich bei T0 keinen Interrupt, d.h.
ich brauche auch keine ISR (bei Flankenwechsel)
In meiner Hautschleife (1 x pro Sek zähle ich 10 Mal) und lese dann 
TCNT0 aus und setze das dann wieder auf 0 und zähle erneut

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
0 lesenswert
nicht lesenswert
Frank G. schrieb:
> Dann bekomme ich bei T0 keinen Interrupt

So isses. T0 zählt erstmal nur den Timer 0 hoch. Einen Interrupt gibt 
es, wenn entweder ein OC Ereignis anliegt oder ein Überlauf stattfindet 
(und der Interrupt freigegeben ist).

Das Verhalten ist genau wie bei einem Timer mit internem Takt, nur das 
der Takt von extern kommt.

von Frank G. (frankg)


Bewertung
0 lesenswert
nicht lesenswert
Matthias S. schrieb:
> So isses. T0 zählt erstmal nur den Timer 0 hoch. Einen Interrupt gibt
> es, wenn entweder ein OC Ereignis anliegt oder ein Überlauf stattfindet
> (und der Interrupt freigegeben ist).

Danke, da hat ich umsonst nach dem Interrupt gefahndet.... aber jetzt 
hab ich's verstanden

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.