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
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
@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
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.
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?
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.
Matthias schrieb: > Ich möchte für meine Modellflieger Mischer bauen. Was wird denn da gemischt? mfg.
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. :-)
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 ...
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.