Forum: Mikrocontroller und Digitale Elektronik Kürzest möglicher Interrupt, brauche eure Hilfe!


von Matthias (Gast)


Lesenswert?

Hi zusammen,

kurz und knapp zu meinem Anliegen.
Ich möchte mittels PCINT bei einem ATMEGA48/88 4 Input-Captures 
realisieren.
In dem Interrupt soll (um ihn kurz zu halten und damit den µC nicht zu 
blockieren) lediglich ein Zählerstand (Timer1) in ein Array geschrieben 
und dazu der ganze PORTC eingelesen und in ein weiteres Array 
gespeichert werden. Und das jedesmal wenn sich an einem der 4 Pins was 
ändert.

Der Timer soll dabei mit 1MHz takten (prescaler 8 bei 8MHz Systemtakt).
ich möchte also auf 1µs genau an 4 Pins messen. Ist das möglich so?
Vermute fast, in 8 Takten kann kein Interrupt ablaufen.

Ideen für mich?
Bin um alle Ratschläge dankbar!

lg Matthias

von Michael U. (amiga)


Lesenswert?

Hallo,

keine Chance.
3x IN a 1 Takt
3x STS a 2 Takte
RETI 4 Takte

ISR-Aufruf 4 Takte + RJMP 2 Takte vom Vector

Sind wir bei 19 Takten ohne Registerretten o.ä.
Dazu 1-2 Takte des laufenden Befehls bis der IRQ anspringt.

Das wäre ein Interrupt
Und wenn jetzt währendessen ein anderer Pin wackelt?

Gruß aus Berlin
Michael

von Falk B. (falk)


Lesenswert?

@Matthias (Gast)

>Der Timer soll dabei mit 1MHz takten (prescaler 8 bei 8MHz Systemtakt).
>ich möchte also auf 1µs genau an 4 Pins messen. Ist das möglich so?
>Vermute fast, in 8 Takten kann kein Interrupt ablaufen.

Nö.
Was soll das denn werden? Ein Logic Analyzer?
Vor laaaaaanger Zeit hatten wir das hier mal gemeinsam programmiert, in 
ASM in einer Schleife, ich glaub um die 15 Takte. Ob man das 
wiederfindet?

>Bin um alle Ratschläge dankbar!

Netiquette. Beschreibe dein Vorhaben grundlegend.

MFG
Falk

von Thomas E. (thomase)


Lesenswert?

Matthias schrieb:
> Der Timer soll dabei mit 1MHz takten (prescaler 8 bei 8MHz Systemtakt).
>
> ich möchte also auf 1µs genau an 4 Pins messen. Ist das möglich so?
>
> Vermute fast, in 8 Takten kann kein Interrupt ablaufen.

Den kürzest möglichen Interrupt erreichst du mit dem höchst möglichen 
Takt.
Beim 48er sind das 20MHz. Also Faktor 2,5 zu den internen 8 MHz. Dann 
hast du in einer µs 20 Takte.

mfg.

von Matthias (Gast)


Lesenswert?

Hmm ja das bringt mich natürlich nicht weiter. Trotzdem Danke.
Aber meine Infos waren auch dünn gesäht, geb ich zu.
Ich möchte für meine Modellflieger Mischer bauen. Dabei soll in einem 
Fall 3 Kanäle miteinander verknüpft und auf 2 Ausgegeben werden, im 
anderen Fall sinds nur 2->2 Kanäle. (Ein anderes noch hier 
rumgeisterndes Modell würde sich sogar über einen 4Kanal->2Kanal Mischer 
freuen)

Neue herangehensweise:
Ich polle das Signal und sollte einer der beobachten Kanäle auf high 
steigen (interrupt) wird nix anderes gemacht als der Pin gepollt bis er 
low ist, dabei wird anfangs und zum schluss natürlich immer der 
Zählerstand gespeichert.

Ich würde dadurch halt den kleinen µC zu 100% auslasten sobald eines der 
Servosignale high ist.
Da das aber nur alle 20ms für max 2,1ms der Fall ist (bzw. bei einer 
meiner 2,4GHz Empfänger ist das Intervall 13ms, also 75Hz) blieben mir 
immernoch üer 50% der Prozessorzeit für die mainloop, bzw. für das 
Ausgeben der Servopulse.

Bessere Ideen?

von (prx) A. K. (prx)


Lesenswert?

Matthias schrieb:

> Ich möchte für meine Modellflieger Mischer bauen.

Und dafür brauchst du 1MHz Samplerate???

NB: Zeiten misst man mit Timer-Capture. In Hardware.

von Thomas E. (thomase)


Lesenswert?

Matthias schrieb:
> Ich möchte für meine Modellflieger Mischer bauen.

Was wird denn da gemischt?

mfg.

von Floh (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Was wird denn da gemischt?

z.b. Höhen und Seitenruder zwecks V-Heck oder so. :-)

Für Thema: Kannst du dir aus deinem Empfänger kein Summensignal 
rausgeben lassen? Also alle Kanäle nacheinander auf einem Pin?
Das liese sich dann sehr elegant mit dem ICP-Modus messen, vor allem mit 
guter Auflösung.
:-)

von Hannes L. (hannes)


Lesenswert?

Man kann bei fehlendem Summensignal und nacheinander übertragenen 
Kanälen die Kanäle auch mit Dioden zusammenfassen.

Beim Empfänger R6m der 2,4GHZ-Anlage Planet T5 von J. Perkins fasse ich 
die Kanäle 1, 3 und 5 mit Dioden zusammen und werte das entstehende 
Signal mit Hardware-ICP über den Analog-Comparator des Tiny2313 aus. Als 
AC-Referenz wird dabei die interne Bandgap-Spannung verwendet, somit 
braucht die ganze Geschichte nur 1 Impulseingang.
http://www.hanneslux.de/planet5b/planet5-lokfahrtregler_v02.html
http://www.hanneslux.de/planet5b/index.html

...

von Karl H. (kbuchegg)


Lesenswert?

Matthias schrieb:

> Der Timer soll dabei mit 1MHz takten (prescaler 8 bei 8MHz Systemtakt).
> ich möchte also auf 1µs genau an 4 Pins messen.

So genau gehen doch deine Servos bzw. Kreuzknüppelaggregate am Sender 
gar nicht, dass du die Servobewegung in 1000 Stellungen auflösen musst. 
Und der Rest bleibt dann im Spiel der Ruderanlenkung hängen.

Im übrigen ist es viel eleganter, die Mischung nicht im empfängerseitig 
sondern senderseitig zu machen.
Einfach die Spannungsabgriffe der Potis an je einen ADC im AVR legen, 
reihum die Spannungspegel abfragen und per PWM neue Spannungen 
generieren, die dann in die vorhandene Senderelektronik weitergeleitet 
werden.

Dann kann man die Mischer auch im Flug einstellen und auch zu und 
abschalten. Das geht sowieso viel besser als sich mit einem falsch 
eingestellten Mischer durch den Flug zu quälen. Nächster Versuch, neues 
Glück mit leicht geänderter Einstellung.

von (prx) A. K. (prx)


Lesenswert?

Und wenns denn doch im Empfänger sein soll: Die AVRs sind ja nun nicht 
sonderlich stark besetzt bei Timern, schon garnicht >8bit, aber unter 
den PIC24 finden sich beispielsweise 18/28-Pinner mit 4 Captures und 2 
PWMs, alle 16bit. Der macht das mit links auch bei sehr niedrigem Takt, 
weil der Prozessor nur noch die eigentliche Rechnerei durchführen muss.

von Micha H. (mlh) Benutzerseite


Lesenswert?

Matthias schrieb:
> Ich möchte für meine Modellflieger Mischer bauen.
> auf 1µs genau

Au weia. Bis vor kurzem hat dazu bei meinem Mischer pollen gereicht. 
Jedenfalls wurde der etliche Jahre lang erfolgreich verkauft.

Warum meint eigentlich alle Welt daß man heutzutage selbst für 
einfachste Aufgaben die Heisenbergsche Unschärferelation knacken muß?

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
Noch kein Account? Hier anmelden.