Forum: Mikrocontroller und Digitale Elektronik Suche vorteilhafte Interruptsteuerung mit AD-Wandler und Timer beim Mikrocontroller


von majortom (Gast)


Lesenswert?

Hat irgend jemand von euch einen vorteilhaften Rahmen für eine 
Interruptsteuerung mit AD-Wandlung und Timer?
Ich will meine Ereignisse mit Interrupts ausführen lassen.
Wie kann man eine Anbindung der Interrupts zum Hauptprogramm herstellen?
Danke für jeden Tipp.

: Gesperrt durch Admin
von Christian F. (funke4ever)


Lesenswert?

Die Interruptroutinen rufen im Normalfall nur weitere Routinen auf. Was 
diese eigenen Routinen machen bleibt dir überlassen. Ich versteh aber 
ehrlich gesagt auch nicht so ganz worauf du hinaus willst.

: Wiederhergestellt durch Admin
von MyName (Gast)


Lesenswert?

>Ich versteh aber ehrlich gesagt auch nicht so ganz worauf du hinaus willst.

Da bist Du nicht alleine...

: Wiederhergestellt durch Admin
von Hannes (Gast)


Lesenswert?

>Wie kann man eine Anbindung der Interrupts zum Hauptprogramm herstellen?

Der Timerinterrupt setzt eine globale Variable, die im Hauptprogramm 
laufend abgefragt wird (Polling).

Ist diese Variable gesetzt, werden die gewünschten Funktionen aufgerufen 
und die Variable gelöscht.

: Wiederhergestellt durch Admin
von majortom (Gast)


Lesenswert?

Ich muss mich selber korrigieren, evtl. fällt es euch dann einfacher es 
zu verstehen.
Ich suche einen vorteilhaften Rahmen für eine Interruptsteuerung mit 
AD-Wandlung und Timer.
>Ich will eben nicht alles mit Interrupts ausführen.

: Wiederhergestellt durch Admin
von kopfkratzer (Gast)


Lesenswert?

Und wo ist nun das Problem ?
1. Welchen µC willst Du nehmen ?
2. Was ist Deine Aufgabenstellung ?
3. Soll der ADC z.B. durch den Timer-IRQ gepollt werden ?
4. Willst Du einen Timestamp auf einen analogen Wert haben ?
5. Hast Du einen hübschen Hintern ?
usw. usf. ...

: Wiederhergestellt durch Admin
von kein Bock auf Hausaufgaben (Gast)


Lesenswert?

majortom schrieb:
> Ich muss mich selber korrigieren, evtl. fällt es euch dann einfacher es
> zu verstehen.
> Ich suche einen vorteilhaften Rahmen für eine Interruptsteuerung mit
> AD-Wandlung und Timer.
>>Ich will eben nicht alles mit Interrupts ausführen.
>
>
>
>     Beitrag melden Bearbeiten Löschen

Hört sich nach Hausaufgabe an.

: Wiederhergestellt durch Admin
von Hmm (Gast)


Lesenswert?

Was heisst: "Vorteilhaft"? Welche Vorteile soll's denn haben?

Im allgemeinen verwendet man nur Schemata die vor allem die notwendigen 
Vorteile haben. Insofern ist dieses Adjektiv allein völlig nutzlos um 
uns einen Hinweis zu geben, was Du willst.

: Wiederhergestellt durch Admin
von JamesWhat (Gast)


Lesenswert?

Ich versteh deine Problematik. Ich kann dir gerne Hilfestellung geben, 
indem ich dir demnächst ein Konzept von mir online stelle, wie du es am 
besten machen kannst.

: Wiederhergestellt durch Admin
von ??? (Gast)


Lesenswert?

JamesWhat schrieb:
> Ich versteh deine Problematik.

Dann lass uns teilhaben, bitte, bitte, bitte, b...

: Wiederhergestellt durch Admin
von Christian F. (funke4ever)


Lesenswert?

@JamesWhat: Respekt, dann bring mal Licht ins Dunkle

: Wiederhergestellt durch Admin
von majortom (Gast)


Lesenswert?

Hallo JamesWhat schön, dass wenigstens du mich hier verstehst.
Ich bin dir sehr dankbar, dass du mir einen guten Tipp geben kannst.
Übrigens verwende ich von NXP den LPC 936.
Dank dir

: Wiederhergestellt durch Admin
von Peter D. (peda)


Lesenswert?

majortom schrieb:
> Übrigens verwende ich von NXP den LPC 936.

Verrate uns das doch nicht schon so früh.

Richtiger Spielverderber verraten das schon im 1. Post oder im Topic.
Und sie verraten auch noch mehr nötige Angaben. Z.B. möchtest Du das in 
ADA oder in Fortran programmieren?
Wenn sie ganz frech sind, schildern sie sogar eigenen Gedankengänge und 
Lösungsansätze. Und die Aufgabe, die sie lösen wollen.
Aber dann sind helfende Antworten quasi nicht mehr zu vermeiden.


Peter

: Wiederhergestellt durch Admin
von Karl H. (kbuchegg)


Lesenswert?

> Ich suche einen vorteilhaften Rahmen für eine
> Interruptsteuerung mit AD-Wandlung und Timer.

Eventuell hilft es ja auch, wenn du uns einen deiner Meinung nach 
nicht-vorteilhaften Rahmen zeigst und ein paar Worte darüber verlierst, 
was du daran nicht so toll findest.


Zumindest bei mir würde das extrem das Vertrauen wieder herstellen, dass 
es dir darum geht Programmstrategien zu erötern und du nicht einfach nur 
einen Blöden suchst, der dir deine Arbeit macht. Egal ob vorteilhaft 
oder nicht. Denn oft genug ist die Frage nach 'der besten Möglichkeit' 
eine Umschreibung für 'bitte macht das für mich, weil ich selber keinen 
blassen habe - ich such gar nicht nach der Besten; ich such irgendwas - 
egal was - Hauptsache ich kann was abgeben'

: Wiederhergestellt durch Admin
von Udo S. (urschmitt)


Lesenswert?

Ist doch trivial
Bitte sehr:
1
TimerInt:
2
  incrementTimerTick;
3
ende
4
5
Hauptprogramm:
6
InitialisiereDenScheiss();
7
while forever {
8
  if (istsSchonwiederSoweit1()) {
9
    mach den Kram1()
10
  }
11
  if (istsSchonwiederSoweit2()) {
12
    mach den Kram2()
13
  }
14
15
  ...
16
17
  if (istsSchonwiederSoweitX()) {
18
    mach den KramX()
19
  }
20
}

Als Übung darfst du das Konzept um den A/D Wandler Interrupt erweitern

: Wiederhergestellt durch Admin
von Michael B. (jameswhat)


Lesenswert?

Majortom ich mach dir folgendes Angebot.
Meld dich hier fest an, dann kann ich dir einen Beispielcode zukommen 
lassen, weil auf dieses Niveau muss ich mich wirlich nicht begeben. Es 
ist hier wirklich erschreckend welcher Umgang hier herrscht und was für 
ein anonymes arrogantes Pack seinen Senf hier abgeben muss.

: Wiederhergestellt durch Admin
von Neugierde (Gast)


Lesenswert?

Michael Bodden schrieb:
> Meld dich hier fest an, dann kann ich dir einen Beispielcode zukommen
> lassen

Bitte zeige Dein Beispiele hier und öffentlich. Vielleicht kann man dann 
auf die Frage zurück schließen.

Aber der Kontakt zu Major Tom ist abgerissen. Die Zensur steht fest. ;-P

: Wiederhergestellt durch Admin
von MajorTom (Gast)


Lesenswert?

Nochmals für alle hier bei denen es noch nicht klick gemacht hat, was 
ich eigentlich wollte.

Ich suche eine sinvolle Ablaufsteuerung, damit keine Timingprobleme 
entstehen, weil ich unterschiedlich Zeiten wie 100ms, usw. einhalten 
muss.

Durch 3 Interrupts werden Analoge Spannungen durch die AD Wandler 
(Mulitplexverfahren) ausgelesen, die dann ständig mit weiteren 
Informationen an die UART mit Hilfe eines Vektors übergeben werden. 
Damit kann dann in kürzester Zeit 9 Bytes gesendet werden, usw.

Ich suche sozusagen eine Timerablaufsteuerung mit unterschiedlichen 
Zeiten, bei denen dann bei den entsprechenden Zeiten Unterprogramme 
aufgerufen werden, die den AD-Wandler, Eingabe per Inkremtalgeber, Daten 
an die UART, usw. steuern. Jetzt sollte es eigentlich jeder hier 
verstanden haben.

Ich suche keine Lösung, sondern ein Konzept um meine Timings 
einzuhalten, damit keine bösen Überraschungen auftauchen.

: Wiederhergestellt durch Admin
von Karl H. (kbuchegg)


Lesenswert?

MajorTom schrieb:
> Nochmals für alle hier bei denen es noch nicht klick gemacht hat, was
> ich eigentlich wollte.
>
> Ich suche eine sinvolle Ablaufsteuerung, damit keine Timingprobleme
> entstehen, weil ich unterschiedlich Zeiten wie 100ms, usw. einhalten
> muss.

Wie genau müssen die 100ms sein?

> Ich suche keine Lösung, sondern ein Konzept um meine Timings
> einzuhalten, damit keine bösen Überraschungen auftauchen.

Und die Grundidee von Udo, eigentlich die Standardlösung, ist immer noch 
die, die im Rennen ist.
100 Millisekunden. Da lacht doch dein µC drüber. Für den ist das eine 
halbe Ewigkeit, in der er noch eine Partie Backgammon spielt, ein 
Nickerchen macht, Kreuzworträtsel löst und dann sieht er sich an, ob 
nicht irgendeine Aufgabe anfällt, die wieder mal drann wäre.

Die ganze Sache ist wirklich nicht schwer und ja, das ist eine 
Standardanwendung für Timer. Und das Grundrezept ist immer das gleiche: 
Eine Hauptschleife die Reihum überprüft, ob es Dinge zu tun gibt und 
wenn ja diese ausführt, basierend auf Flags, die ihr vom Timer 
zugespielt werden, der die Zeitbasis zur Verfügung stellt.

Etwas vornehmer ausgedrückt und etwas mehr verallgemeinert landet man 
bei einer Statemachine, bzw. einer Kombination aus mehreren 
derartigen Statemachinen, aber das Grundprinzip ist da wie dort 
eigentlich dasselbe: keine Wartezeiten, keine Delays, länger dauernde 
Vorgänge in mehrere Arbeitsabschnitte aufbrechen, Timergetriebene 
Softwaretimer.

: Wiederhergestellt durch Admin
von Falk B. (falk)


Lesenswert?

Siehe auch Multitasking.

: Wiederhergestellt durch Admin
von Peter D. (peda)


Lesenswert?

MajorTom schrieb:
> Ich suche sozusagen eine Timerablaufsteuerung mit unterschiedlichen
> Zeiten,

Ermittle den GGT aller Zeiten, setze dafür einen Timerinterrupt auf und 
darin je einen Zähler pro Zeitdauer.

Schnelle Sachen macht man direkt im Interrupt.
Und die 9 Bytes schreibst Du in einen FIFO, den dann der UART-Interrupt 
sendet.


Peter

: Wiederhergestellt durch Admin
von Udo S. (urschmitt)


Lesenswert?

MajorTom schrieb:
> Nochmals für alle hier bei denen es noch nicht klick gemacht hat, was
> ich eigentlich wollte.

Hmm, kann es sein, daß es bei dir nicht klick gemacht hat?

Michael Bodden schrieb:
> Es
> ist hier wirklich erschreckend welcher Umgang hier herrscht und was für
> ein anonymes arrogantes Pack seinen Senf hier abgeben muss.
Kannst du das präzisieren, oder fehlt dir dafür der Arsch in der Hose?
Ich bin gespannt ob dein Code genauso qualitativ hochwertig ist wie dein 
Beitrag.

MajorTom schrieb:
> Ich suche eine sinvolle Ablaufsteuerung, damit keine Timingprobleme
> entstehen, weil ich unterschiedlich Zeiten wie 100ms, usw. einhalten
> muss.

Was gefällt dir an meinem -zugegeben ziemlich groben - Beispiel, das 
durch zusätzliche Tipps von Karl Heinz und Peter angereichert ist, 
nicht?
Was gefällt dir am Link von Falk nicht?

Das sollte reichen um zumindest eine Ahnung zu bekommen, einen eigenen 
Ansatz zu haben und präzisere Fragen zu stellen.

Aber

majortom schrieb:
> Ich will

ist natürlich einfacher.

: Wiederhergestellt durch Admin
von Karl H. (kbuchegg)


Lesenswert?

Udo Schmitt schrieb:

> Michael Bodden schrieb:
>> Es
>> ist hier wirklich erschreckend welcher Umgang hier herrscht und was für
>> ein anonymes arrogantes Pack seinen Senf hier abgeben muss.
> Kannst du das präzisieren, oder fehlt dir dafür der Arsch in der Hose?
> Ich bin gespannt ob dein Code genauso qualitativ hochwertig ist wie dein
> Beitrag.

Rechne besser nicht damit.
Interessant ist ja auch, dass
Major Tom
James Watt    und
Michael Bodden

alle dieselbe IP-Adresse haben. Ein Schelm wer böses dabei denkt :-)

: Wiederhergestellt durch Admin
von Udo S. (urschmitt)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Interessant ist ja auch, dass
> Major Tom
> James Watt    und
> Michael Bodden
>
> alle dieselbe IP-Adresse haben.

Ah ja.
Kann ich das auch sehen, oder nur die Moderatoren?

: Wiederhergestellt durch Admin
von Falk B. (falk)


Lesenswert?

Nur die Mods. Ist auch besser so . . .

: Wiederhergestellt durch Admin
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.