PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ich will ein Signal mit 7µs dauer verarbeiten



frankensteins-freund
28.11.2011, 19:48
Heyy,

Ich habe folgendes Problem:

Mein CNC Programm (Mach3) gibt signale mit maximal 7µs dauer aus. nun würde ich dieses signal außer mit einem l297 für noch mit einem mikrocontroller für zusatzfunktionne verarbeiten. Welcher Mikrocontroller kann eine signaldauer von 7µs wahrnehmen? Gibt es da überhaupt einen controller in der Atmel-reihe?

MfG
Michael

RP6conrad
28.11.2011, 20:29
Fast jeden Atmel Controller kan das. Nur muss du die externe Interrupt dafur nutzen. Aber wie schnell kommen die hinter ein ander ? Das verarbeiten von die Interrupts muss naturlich schneller ablaufen als die reinkommen !!

frankensteins-freund
28.11.2011, 20:33
Hey, rein rechnerisch im extremfall 7µs High, 33µs lo usw...

wobei die 33µs schon ein extremfall sind

Mfg
Michael

Kampi
28.11.2011, 20:33
7µs dürfte eigentlich kein Problem sein für ein Controller. Im Zweifel nimmst du einen XMega den du auf 30MHz laufen lässt.
Was ist den die minimale Low-Zeit? Eventuell musst du dann mit Assembler arbeiten damit die ISR nicht zu lang wird.

frankensteins-freund
28.11.2011, 20:36
Hey, 33µs lo ist die kürzeste zeit, längere zeit dürfte ja ein problem sein

programmierung in c ist ungeeignet oder wie muss ich das verstehen?

MfG
Michael

radbruch
28.11.2011, 20:56
Ein mit 8MHz getakteter AVR braucht ca. 0,125µs pro Takt/Befehl. In 7µs wären das 56 Takte/Befehle. Das könnte man also auch einfach mit einer kleinen Zählschleife erledigen:

int lowcount=0, highcount=0;

while(Signalpin == low);
while(Signalpin == high);
while(Signalpin == low) lowcount++;
while(Signalpin == high) highcount++;

frankensteins-freund
28.11.2011, 21:03
Hey

Leider bin ich nur n kleiner blutiger anfänger, der von nem kollegen unterstützung bekommt. wie genau ist das gemeint? bzw was bezweckt diese zählschleife?


MfG
Michael

PicNick
29.11.2011, 08:17
Das vom @Radbruch ist nur ein Beispiel ohne wirklichen Zweck.
Denn um zu dir raten, wissen wir zwei wesentliche Dinge noch nicht:
Was soll der µC mit den Signalen machen ?
Was hat dieser µC sonst noch zu tun ?

frankensteins-freund
29.11.2011, 15:17
Hey,

Das signal soll so verwendet werden:

1) kommt eine bestimmte zeit lang kein signal (das 7µs signal), bestromt der µC einen ausgang. wenn wieder signale kommen soll der ausgang auf low fallen

2) eine einfache und- funktion, die garnichts mit dem signal aus 1 zu tun hat muss noch geschalten werden

3) das 7µs andauernde signal sollte von dem µc getriggert ausgegeben werden, da es sich hierbei um kein sauberes rechtecksignal handelt

MfG
Michael

AsuroPhilip
29.11.2011, 15:28
hey


eine einfache und- funktion, die garnichts mit dem signal aus 1 zu tun hat muss noch geschalten werden

heißt?


mfG
Philip ;)

lokirobotics
29.11.2011, 17:05
Du kannst das Signal einfach mit einem Flip-Flop trappen und dann in Ruhe auswerten. Nach dem Auswerten das Flip-Flop resetten und du bist wieder "scharf".

frankensteins-freund
29.11.2011, 17:13
hey,

eine und-schaltung aus 2 freien pins sollte einen dritten freien pin auf high schalten, wenn beide eingänge high
sind. Ist nur ein pin oder kein pin high geschalten ist der ausgang lo

grüßle
Michael

ranke
29.11.2011, 19:37
Alternativ zu einem Mikrokontroller könnte man für Aufgabe 1 ein retriggerbares Monoflp (z.B. 4538), für Aufgaben 2 und 3 einen 4093 (vier Nand mit je 2 Schmitt-trigger Eingängen) verwenden. Das Monoflop braucht noch zusätzlich 1 Kondensator und 1 Widerstand.

frankensteins-freund
29.11.2011, 19:45
hey ranke,

das mit dem monoflop zeugs etc habe ich schon und bin mit der Lösung etwas unzufrieden, dehalb ja die mikrocontroller lösung

MfG
Michael

PicNick
30.11.2011, 09:50
Also, wenn der Micro dermassen unterfordert ist, kannst du in einer Hauptschleife die relevanten Pins ( 7µs-Pins und die UND-Pins) abfragen und auswerten.

frankensteins-freund
30.11.2011, 20:53
Hey,

Ich habe mich nochmal informiert und eine multi taskiing- möglichkeit gefunden

Ih programmiere meine schleife, die der µC die ganze zeit durchläuft. unter bestimmten bedingungen zählt der µC einen Zähler hoch oder löscht ihn, beim erreichen eines bestimmten wertes schaltet er durch. denkt ihr, dass das funktioniert?

Falls ja, woher weis ich, wie lange der µC braucht, um einmal die schleife zu durchlaufen?

MfG
Michael

RP6conrad
30.11.2011, 21:15
Wie schon gesagt ist das eher langweilig für ein µ. Ein avr 8-bit an 16 MHz schaft pro µs 16 Takten. Wen du nur Pulzen zahlen mochten, geht das noch besser ueber die hardware Zaehler/Counter. Das bedeutet das die Zaehler lauft ohne den normale Schleife zu unterbrechen. Kannst du etwas naher erklaren was eigentlich getan werden muss ? Encoderpulsen zaehlen ? Max Frequenz von diese Pulsen ? Max Count (8, 16 oder 32 bit). Da gibt tig verschiedene Losungen, aber dann muss das Problem genauer beschrieben werden.

lokirobotics
30.11.2011, 22:51
Ausrechnene ;D

Wie schon gesagt: Wenn wir wissen würden, was gemacht werden soll, könnten wir auch besser helfen.
Was hat deine Möglichkeit eigentlich mit Multitasking zu tun?

frankensteins-freund
01.12.2011, 16:58
Hey,

Meine anforderungen stehen auf der ersten seite!

Wie rechnet man sowas aus?

zum multi-tasking--> diese bezeichnung habe ich auf dem microcontroller.net tutorial gelaut :P

Gruß
Michael