Hallo, meine Anwendung braucht 2 Rechtecksignale mit unterschiedlichen, im Betrieb einstellbaren Frequenzen und einer definierten und im Betrieb einstellbaren Phasenlage (-90° bis 90°) zwischen den beiden Ausgängen. Kann man das mit AVRs realisieren? Dachte daran 2 CTCs zu verwenden. Die Synchronisierung bereitet noch Kopfschmerzen: Habe Tips gefunden, dass man sich die Anzahl der Zyklen zwischen der Initialisierung der beiden Ausgänge zu debuggen und TCNT entsprechend vorher einzustellen. Finde ich nicht gerade elegant. Geht das besser? Danke im Voraus für Hilfe!
Hallo, geht das auch analog? Wäre unter Umständen einfacher. Ansonsten: Mit einem Cortex M3 habe ich vor ein paar Tagen eine Simulation geschrieben, damit er meinem DUT einen Inkrementalgeber simuliert. Da habe ich eine Phasenverschiebung von 90° fest. Realisiert über zwei Timer-IRQ's. Wie genau solls denn sein? Grüße Michi
Ja, allerdings nicht mit allen. Schau Dir PWM3 an. bei xmega bin ich mir nicht sicher.
Erstmal danke für die ersten antworten! Michael G. schrieb: > geht das auch analog? Wäre unter Umständen einfacher. Ich brauche auf jeden Fall ein digitales Interface, daher die Idee einen uC zu verwenden. Aber selbst wenn ein DA-Wandler oder ein digitales Poti verwendet wird, wie kann man sowas analog einfacher realisieren? Ich dachte, da Rechtecksignal, ist es auf jeden Fall digital besser und einfacher zu machen. > Realisiert über zwei Timer-IRQ's. Ein Timer, zwei OCR und zwei Timer IRQs. Ist eine gute Idee... Mal drüber gedanken machen.... Michael G. schrieb: > Wie genau solls denn sein? 8 bit für beides (Frequenz und Phasenlage) wäre Wunsch. 6 Bit sollten es mindestens sein. Frequenz zwischen 40-60kHz. Phasenlage (zwischen den beiden Signalen!) zwischen -90° und 90°. Die Rechtecksignale haben jeweils eine feste Pulsweite = 50%. Würde gerne einen Atmega oder Attiny verwenden. Habe mit denen Erfahrung und eh noch ein paar hier rumliegen. Was ist PWM3? Meinst Du PWM-Mode = 3?
Also ich habe das folgendermaßen gelöst: 1) Timer 1 generiert mir ein Reckeck mit einem Duty-Cicle von 50%. 2) Im IRQ des Timer 1 wird der Port-Pin (A) invertiert (dadurch halbe Frequenz!) 3) Im IRQ des Timer 1 wird ebenfalls Timer 2 gestartet, welcher das gleiche Setupt hat wie Timer 1 (gleich Frequenz,...), das wäre bei dir dann anzupassen. 4) Im IRQ des Timer 2 wird dieser gestoppt 5) Im IRQ des Timer 2 wird der entstrechende Port-Pin (B) invertiert. Das ganze funktioniert sehr gut und sehr genau. Der Cortex läuft mit 72Mhz und zählt auch zusätzlich die Impulse. Bei der Umkehr der Zählrichtung werden einfach die Port-Pin's A und B getauscht. Ich kenne die AVR's nicht mehr so genau, aber rechenintensiv ist es nicht. Und die Werte könnten über DMA-Register nachgeladen werden (denke ich). Grüße Michael
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.