Hallo miteinander,
Ich habe ein Problem: Ich möchte mit meinem LPC2148 4 Servo-Signale
(RC-Signal) messen, bzw. die Pulsweite dieser Signale. Nun habe ich die
Messung mit einem einzelnen Kanal getestet: Funktioniert.
Jetzt aber: Wenn ich mehrere Interrupts laufen lasse (Signale
anschliesse) scheinen sich die Interrupts zu beeinflussen. Wie ist das
möglich?
Hier die Initialisation:
1
voidEINTInit(void)
2
{
3
PINSEL0|=0x000000CC;
4
5
EXTMODE=(1<<0|1<<1);// INTx is Edge-sensitive
6
EXTPOLAR|=(1<<0|1<<1);// Interrupt on positive Edge
7
//Install all Interrupts
8
install_irq(EINT0_INT,(void*)EINT0_Handler);
9
install_irq(EINT1_INT,(void*)EINT1_Handler);
10
11
}// EINTInit (...
Muss ich die Interrupts getrennt initialisieren, oder wie schaffe ich
es, dass die sich nicht mehr übersprechen/beeinflussen? An was könnte
das liegen?
Ach ja, ich compiliere mit ARMcc RealView, programmieren tu ich unter
uVision3 (V3.62c).
Gruss, fredy
A. K. schrieb:> Eine Pulsbreitenmessung geht weitaus besser und genauer über> Timer-Capture statt externem Interrupt.
Hoi A.K.,
Es ist in der Tat so, dass dies genauer ginge, aber: Ich hab keinen
Timer mehr frei...
Einen Timer benötige ich für diverse Frequenzen zu erzeugen (rel.
komplex), den anderen Timer benutze ich als Task Manager und Rampengeni.
Und da ich nur 2 Timer habe, ist dieses Thema leider vom Tisch...
A. K. schrieb:> Welchen Sinn hat die Interrupt-Disable Klammer:
Diese klammer stellt mir sicher, dass dieser Interrupt nicht gleich
nochmal auslöst... obschon dies überflüssig ist, ich weiss. Aber ich bin
schon so lange am suchen, ich hab schon fast alles ausprobiert! Aber das
hat keine sinnvolle Auswirkung, ich lösch das dann wieder mal.
Danke für deine Antwort, ich werde einfach weiter suchen...
Gruss, fredy
Also,
ein RC-Signal ist so aufgebaut:
http://api.ning.com/files/WmjViE3faLYy73Ry7eTzn4XMryr8qlAMeb*edCbrzW1BVUPtR1iXBIGgsS93iG1x5roVRkAWHqg7V3FAhK*o8NYsajr5nW7G/RC_Receiver_Timing_Diagram1.jpg
Zu beachten sind Channel1 bis 6 (Servo- oder RC-Signale)
Diese Pulsweiten müssen gemessen werden (Es werden lediglich 4 Kanäle
gemessen, mehr sind nicht notwendig).
Der Kontroller hat nebst diesen Signalen noch ca. 10 weitere Kanäle, die
er einlesen (10bit Genauigkeit) und auf eine SD-Karte abspeichern muss.
Das Ganze Projekt ist rel. Umfangreich, wenn genauere Infos verlangt
werden muss ich vielleicht passen (Wegen zu viel Aufwand).
Problem:
Die Kanäle werden korrekt gemessen, wenn sie einzeln angeschlossen sind.
Wenn aber min. 2 Kanäle angeschlossen sind, ist Schluss. Ein Kanal wird
immer richtig gemessen. Dieser Kanal ist aber nicht immer derselbe - Sie
wechseln sich immer schön ab (Es lebt! ...) Alle anderen Kanäle bilden
ein Abbild dieses Kanals,d.h. ein ziemlich verzerrtes, deformiertes
Abbild, aber ein Abbild (ist in grafischer Darstellung zu erkennen,
siehe Anhang).
So, ich hoffe das reicht fürs erste...
Hab gerade ne heisse Spur gefunden. Schreib sobald als möglich zurück.
Gruss, fredy