Hi,
mein erster Beitrag hier.
Vorwegnehmen möchte ich, dass ich die Sufu schon (erfolglos) genutzt
habe.
Ich möchte aus CLK/DIR-Signalen wie sie üblicherweise für
Schrittmotoranwendungen verwendet werden, ein Signal (bzw. eine
Signalspur) erzeugen, wie es von Inkrementalgebern "verursacht" wird.
Also zwei Rechtecksignale mit 90° Phasenversatz.
Das Ganze möchte ich am liebsten mit einem AVR (Tiny, Mega....)
erzeugen, Software am besten unter Bascom (erste Gehversuche erfolgreich
abgeschlossen).
Wie bekomme ich das softwaremäßig hin, dass bei DIR-Signal low, das
Ausgangssignal B um 90° versetzt zu Ausgangsel A kommt? Bzw. bei
DIR-Signal high, Ausgangssignal A um 90° versetzt zu Ausgangsel B kommt?
Das Ganze soll von 0 Hz bis ca. 50 kHz laufen.
Gibt es dort schon Lösungsansätze?
Gruß
Christoph
"unter Bascom (erst
Oh mein Gott.."
Bascom sollte dafür eigentlich reichen, zumal ich bei C durch die ganzen
Klammern etc. ein wenig verwirrt werde. ;-)
Mir geht es nicht darum, eine vorgekaute Lösung zu bekommen, sondern
einen Ansatz zur Lösung.
Natürlich kann ich bei einem CLK-Signal per ISR erst den einen Ausgang
toggeln und mit XX µs Verzögerung den zweiten Ausgang hinterherschieben.
Bei anliegendem DIR-Signal nur in anderer Reihenfolge (A-B/ B-A).
Ich weiß nur nicht, wie genau dieser 90° Phasenversatz sein muß.
Ist der normalerweise nur da, weil es durch die Hardware kommt
(Glasrasterscheibe im Inkrementalgeber), oder muß das zweite Signal
wirklich um 1/4 der Signaldauer des ersten Signals verzögert kommen?
Bei 10 Hz und 50% Tastverhältnis des Rechtecksignals wäre es eine
Verzögerung von 12,5 ms, bei 10 kHz nur noch 12,5 µs.
Ferner die Frage, ob eine kleiner Atmel, z.B. Tiny 13, das leisten kann.
"Für bascom fragen biste hier im falschem Forum."
Ist das hier nicht der allgemeine Bereich?
Gruß Christoph
Löschen gilt nicht ;-)
Ich deute den "Vorschlag" so, dass du eine Tabelle erzeugst, in der die
4 verschiedenen Zustände der zwei Ausgänge abgelegt sind. in dieser
Tabelle springst du vor/ zurück in Abhängigkeit des DIR-Signals und
weist den Ausgängen den Inhalt der Tabelle zu.
Soweit so gut.
2. Frage:
Kann das ein Attiny 13 bei 50 kHz leisten?
Gruß
Christoph
@ Christoph (Gast)
>2. Frage:>Kann das ein Attiny 13 bei 50 kHz leisten?
In Assembler sicherlich. C wirds auch tun. BASCOM? Kaum. (Bestenfalls
Inline Assembler).
MFG
Falk
"Ich weiß nur nicht, wie genau dieser 90° Phasenversatz sein muß.
Ist der normalerweise nur da, weil es durch die Hardware kommt
(Glasrasterscheibe im Inkrementalgeber), oder muß das zweite Signal
wirklich um 1/4 der Signaldauer des ersten Signals verzögert kommen?"
Das hängt wohl vor allem davon ab, was Du für eine Auswerteschaltung
dran hast.
Bei denen, die ich mal gebaut habe, wäre das egal, die Signale werden
mit dem internen Clk abgetastet, solange die Signale noch so weit
auseinander sind, dass die beim Eintakten mit dem internen Clk noch
auseinanderzuhalten sind (also mindestens einen Takt dazwischen) sollte
das egal sein.
Gruss
Axel
Christoph wrote:
> Natürlich kann ich bei einem CLK-Signal per ISR erst den einen Ausgang> toggeln und mit XX µs Verzögerung den zweiten Ausgang hinterherschieben.> Bei anliegendem DIR-Signal nur in anderer Reihenfolge (A-B/ B-A).
Ein CLK muss nur EINE Aenderung von A ODER B bewirken (abhaengig von dem
Signal DIR). Also nix mit nach XX us was hinterherschieben.
> Ich weiß nur nicht, wie genau dieser 90° Phasenversatz sein muß.
der kommt implizit zustande.
Cheers, Roger
> Ferner die Frage, ob eine kleiner Atmel, z.B. Tiny 13,> das leisten kann.
Ja.
> Das Ganze soll von 0 Hz bis ca. 50 kHz laufen.> Bascom sollte dafür eigentlich reichen
Nein (zu lahm).
Unbekannter wrote:
>> Das Ganze soll von 0 Hz bis ca. 50 kHz laufen.>> Bascom sollte dafür eigentlich reichen>> Nein (zu lahm).
Bei 9,6MHz sind das 192 Zyklen, sollte sogar Bascom schaffen
Allerdings nicht als Interrupt, sondern mit Polling.
Dann entfällt die elend lange PUSH/POP-Arie (Interruptbit löschen durch
Bit setzen beachten).
Peter
Besten Dank an alle,
ich habe vorerst genug Input zum Testen und Probieren.
Von der "Auswerteschaltung" weiß ich nur, dass 500 kHz die maximale
Eingangsfrequenz ist.
Ich werde mal berichten, ob und wie ich das Ziel erreicht habe.
Gruß