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?
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.
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
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
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.