Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Pulsmessung Kategorie: Programmierung C (von Josef - 21.08.2009 10:37)
Als Antwort auf Re: Pulsmessung von PeterS - 20.08.2009 14:52
Ich nutze:
C-Control Pro Mega128
> > Hallo Josef,
> > ich habe Deine Ausführungen und Dein Programm gelesen und gleich eine Frage dazu:
> > Ist das wirklich so? Innerhalb einer Interruptserviceroutine darf es kein if, else, switch und case
> > geben? Das wäre ja furchtbar. Wie soll man ohne diese Anweisungen ein Programm schreiben?
> > Und wie soll man dann ein Aufgabe realisieren z.B. in 100 Interrupts bei cnt=0 und 70?
> >
> > GruÃ?
> > Ellen
>
> Nein, das ist nicht so. Innheralb von IRQ Routinen darf es If, while, switch etc geben.
> Was Josef schreibt ist so nicht richtig.
>
> Gruss Peter
>
> >
> >
> >
> >
> > > > > habe um timingprobleme auszuschlieÃ?en die abspeicherung in die interruproutine aufgenommen.
> > > > > warum muss man nach jedem interrupt den timer wieder neu definieren?
> > > > >
> > > > > danke
> > > > > josef
> > > >
> > > > Nun ja, die Library ist halt so spezifiziert, das sie eine Periodenmessung macht. Life is hard :-)
> > > >
> > > > Gruss Peter
> > >
> > >
> > > hallo peter
> > > die Messung nach jedem interrupt starten kostet zwar zeit ist aber kein problem.
> > > das problem fängt erst dort an, wenn die interruptroutine keine abfrage (if, switch usw.)
> > > oder einen Unterprogrammaufruf verträgt.
> > > sobald ich in die unten angeführte interruptroutine ein if einbaue verabschiedet sich der prozessor.
> > >
> > > void Timer3_ISR(void)
> > > {
> > >    x[a]=Timer_T3GetPM();
> > >    Irq_GetCount(INT_TIM3CAPT);           // Interrupt zurücksetzen
> > > }
> > >
> > > will man nun ein signal mit unterschiedlichen Pulslängen messen, funktioniert das nur
> > > wenn man im hauptprogamm ein while (x[a]==0; einbaut und anschlieÃ?end die Messung
> > > wieder startet (Bemerkung: ist aber nicht sinn eines interrupts, wenn man wartet bis der interrupt
> > > abgearbeitet ist)
> > > oder man lässt den code durchrasseln und macht immer wieder eine abfrage -> dann übersieht man
> > > irgendwann einen puls, wenn der codedurchlauf zu lange wird.
> > >
> > > gruÃ?
> > > josef

hall ellen, hallo peter

nach einem update funktionieren die Abfragen, so wie man sich das vorstellt einwandfei.
ich kann die zeitktitischen abfragen usw. in der interruptroutine für 3 UTI Bausteine durchführen.

gruÃ?
josef


    Antwort schreiben


Antworten: