hallo, ich möchte die Channel bei einem xmega die Channel im interrupt auf andere Pins muxen leider fürt das zu Falschen werten. Geht das überhaupt so? Muss man dabei etwas beachten oder sollte das grundsätzlich nur mit einem Wert im Muxregister gehen?
Sicher ist das Problem loesbar, sonst wuerde kein XMega verkaufbar. Was sagt dennn das Datenblatt ? Das Datenblatt von Atmel, nicht das Gekuerzte von einem Trittbrett Anbieter.
Das ist kein Problem, aber meine Glaskugel sagt das in Zeile 57 ein Der MUX falsch gesetzt wird... Gruß Knut
Servus, hillbilly schrieb: > Muss man dabei etwas beachten oder sollte das grundsätzlich nur mit > einem Wert im Muxregister gehen? sicherlich funktioniert das. Du musst nur die zeitliche Abfolge im Auge haben. - Interrupt 1 - Channel wechseln - AD-Wandlung abwarten - Wert berechnen, sichern oder ausgeben usw. - Interrupt 2 - usw. Also während einer AD-Wandlung keinen Wechsel der Channel-Adresse zulassen. Auch beachten, dass die Speicher-Variable durch den Interrupt nicht verbogen wird. Gruß XMEGA
Falls du nur max. 4 verschiedene Pins muxen möchtest dann geht das beim XMEGA komplett in Hardware. Jeder der max. 4 Channel eines ADCs wird statisch mit den Pins verbunden (mux). Des ADC Core wird so intiallisert das er alle Channels reihum sampelt. Das macht der ADC Core dann vollautom. in Hardware und du musst nur noch alles starten und abwrten bis die Daten gesampelt wurden. Nun noch mit DMA verknüpft und deine Daten werden sogar autom. in den SRAM Buffer geschrieben. Ich gehe mal davon aus das die Reihenfolge der Channels immer gleich ist, also reihum und nicht wahlfrei. Gruß Hagen
ja, Danke. Ich möchte 8 Pins Muxen komme also mit 4 Channals nicht aus bzw muss Umschalten. Ich hab mienen Quellcode leider grade nicht hier, aber der Ablauf ist Folgender: AD Wandlung Starten CH0-3 für pin 0-3 Interrupt wenn letzte Wandlung (CH3) abgeschlossen ist In der Interruptroutine: gewandelten wert speichern. auf Pin4-7 muxen Wandlung starten Und beim nächsten Interrupt vise versa. Ausgabe unter Interruptsperre.
Das Umschalten der MUXe erfordert einige µs Zeit, das war auch schon bei den normalen Megas so. Direkt nach dem Umschalten zu messen, führt dazu, dass man entweder noch den vorher geschalteten Kanal misst oder halt irgendwas zwischen diesem und dem aktuellen Kanal. Im Manual bzw. der AppNote zum ADC steht, wann man die MUXe umschalten darf und wann man es lieber lässt. Mit dem Interrupt hat das nichts zu tun.
Ah Ja! Dass ist eine Erkärung. dann muss ich den Neustart der Messung wohl aus dem Interrupt rausholen. Danke !!
hillbilly schrieb: > dann muss ich den Neustart der Messung wohl aus dem Interrupt rausholen. Nicht unbedingt. Da immer nur ein Kanal zu einer Zeit arbeitet, kannst Du den MUX für einen gerade abgearbeiten Kanal problemlos umschalten. Da Du 4 Kanäle hast, brauchst Du jeden Kanal nur 1x umzuschalten. Beim nächsten Sweep werden dann die neuen Werte eingelesen.
Hallo die von Hagen erwähnte Funktion "Input Source Scan" habe ich bei den Xmegas noch gar nicht gefunden. Aber das klingt sehr interessant. Leider habe ich noch nicht ganz verstanden, wie ich diese automatische Umschaltung initialisieren, bzw. nutzen kann. Kann mir hier jemand weiter helfen, bzw. ein Beispiel für die Initialisierung posten. folgende Vorgang zum schnellen Auslesen des ADC stell ich mir vor. - alle 8 ADC Eingänge werden zu 4 Differentiellen ADC Kanälen initialisiert - Der Channel 0 liest nacheinander das Ergebnis der 4 Kanäle - Das Ergebnis wird vom DMA ausgelesen und in ein Array gespeichert. Vorteil, ich muss nur ein DMA Channel zum lesen der ADC Kanäle verwenden. Wenn das so nicht realisiert werden kann, wi Das Thema wurde auch hier kurz aufgegriffen... Beitrag "Kann DMA beim XMega ADC den Muxer steuern?" Grüße Martin
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.