Hallo Leute,
ich kenne mich mit Microcontrollern leider nicht so gut aus. Mich würde
interessieren, ob sowas überhaupt mit einem Microcontroller möglich ist,
und wenn ja, welchen würdet ihr mir empfehlen?
Ich habe folgendes vor:
Der MC sollte 4 Eingänge haben. Alle 4 Eingänge werden von äußerem
Einfluss fast gleichzeitig aktiviert. Die Zeitabstände der Aktivierung
der einzelnen Eingänge liegt im micro-sekunden Bereich (1/1.000.000
Sec). Diese Zeit würde ich gerne mit dem MC erfassen.
Ist das möglich? Ich habe bei einigen Microcontrollern in den
Datenblättern gelesen dass die Timer nur im Millisekunden-Bereich
liegen. Gibt es für soetwas spezielle Microcontroller?
Danke im Vorraus!
Gruss,
Jonas.
chris schrieb:
> µS Bereich ist lahm, das geht mit jedem.
Naja, das würde ich so nicht unterschreiben.
Bei 16MHz bleiben zwischen zwei Ereignissen gerade mal 16 Befehle
inklusive Interrupt-Sprung übrig.
Da muss man wahrscheinlich schon mit ASM programieren.
Die Frage ist auch mit welcher Genauigkeit die Abstände erfasste werden
sollen.
Naja, ohne ASM Programmierung kommt man da nicht rum, auch weil man
mehrere Inputs gleichzeitig erfassen muß, wo man dann nicht weiß,
welcher zuerst kommt.
In so einem Falle würde ich eher zu einem Pic tendieren, weil ich da
mehr erfahrung habe, einen mit internem OSC, 8Mhz würde ich da
vorschlagen,
bei einem Avr, ein Tiny mit internem OSC sowie ev. PLL, um auf 8Mhz oder
darüber zu kommen.
einen avr mit einem 16 bit timer der capture mode kann, atmega8515 zb.,
prescaler = 1, dann brauchst kein asm, sondern kannst alles gemütlich in
C erledigen.
So wie ich es verstanden habe, sind mehrere Mikrofone im Einsatz, auf
mehreren Eingangspins, und dann wird mittels Triangulation die Position
der Geräuschquelle ermittelt. Mit Input Capture, sowie Interrupt bedient
man max 2 Mikrofone. Wenn das nicht zuwenig ist, kann man es in
Hochsprache machen.
jonas schrieb:
> die Abstände sind wie gesagt im microsekunden Bereich.
Du wiederholst Dich.
Gefragt sind min, max, Auflösung, Genauigkeit.
Die Auflösung kann beim AVR min 50ns betragen.
Vom Min-Wert und vom "fast gleichzeitig" Wert hängt ab, ob man es in C
oder Assembler machen muß.
Peter
Ein TMS470 oder CortexM3 von TI mit dem Modul HET ( HighEndTimer) solte
hierzu ideal sein.
Der HET ist ein eigenständiger Timer der die Zeitmessungen unabhängog
vom µC_Core erledigt. Auflösung je nach konfiguration bis in den ns
Bereich.
Taktfrequenzen ab 48 MHz. Damit sollte auch ASM Programmierung unnötig
sein.
Ansonsten ist wohl eher ein DSP als ein µC hierfür geeignet.
jonas schrieb:
> die Abstände sind wie gesagt im microsekunden Bereich.>> Wieviel Mhz braucht dann der µC? Könnt ihr mir einen empfehlen?
Wenn's im professionellen Bereich ist, dann würd ich vom Rumgefrickel
mit einem AVR abraten. Es sei denn, man findet einen mit 4
Capture-Compare-Einheiten.
Wenn's ein µC sein soll würde ich eher zu einem TriCore TC1796 (µC mit
DSP-Funktionen) neigen. Zu PIC, ARM, reinen DSPs kann ich nix sagen.
Johann
Nimm einen MSP430, einen etwas größeren mit Timer B, der hat 7
unabhängige Capture Eingänge, da kannst du in Hardware die Signale
erfassen. Mit den neuen MSP430 mit 25MHz kannst du dann in 40ns
auflösen.