www.mikrocontroller.net

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


Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

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

Was wird denn da gemischt?

mfg.

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
:-)

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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-lokfahrtr...
http://www.hanneslux.de/planet5b/index.html

...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Micha H. (mlh) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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ß?

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.