Hallo zusammen, ich bin gerade dabei einen XMEGA 128A3U zu programmieren und dabei bin ich auf ein Problem mit dem DAC gestoßen. Ich verwende den DAC an Pin PB3 um mir eine Spannung auszugeben. An den Pins PB0 und PB1 hängt jeweils eine LED, die leuchten, wenn ich den Pin auf LOW setze. DAC und LEDs funktionieren unabhängig voneinander wunderbar. Der DAC konvertiert und die LEDs leuchten. Wenn ich aber den DAC und die LED an Pin PB0 verwende macht der DAC Probleme. Sobald ich den LED Pin als Ausgang schalte und die LED anmache (PB0 = low), kommt am DAC keine Spannung mehr (wie wenn ich dem DAC eine 0 zum Konvertieren gebe). Wenn ich dann den LED Ausgang auf High schalte, damit die LED aus ist, gibt mir der DAC Pin eine Spannung (entweder ~VCC oder etwa ~0,5VCC, da bin ich mir nicht mehr sicher und die Platine hab ich gerade nicht zur Hand). Wenn ich den Pin PB0 in Ruhe lasse funktioniert alles ganz gut. Ich kann auch die LED an PB1 verwenden, ohne dass es Probleme gibt. Beide LEDs werden identisch angesteuert. Mein Durchgangsprüfer sagt mir, dass die Pins PB0 und PB3 nicht verbunden sind. Hat vielleicht irgendjemand eine Ahnung was das Problem sein könnte oder wie ich es zumindest weiter eingrenzen könnte? Vielen Dank Fabian
Erster Verdacht ohne den Code zu kennen: Du benutzt PB0 als Referenzspannung für den DAC.
Zweite Idee: Stat nur den entsprechenden Pin zu setzen, wir der komplette Port geändert. :-)
Fabian schrieb: > XMEGA 128A3U: DAC durch anderen Pin beeinflusst Das ist ein nicht haltbares Gerücht. Es liegt am Code! Die A3Us, die ich kenne, haben das Verhalten nicht.
Sorry, dass es etwas länger gedauert hat. Ich habe den Code auf die Problemstellen gekürzt und die Dateien dann in eine ZIP gepackt. Ich hoffe das ist so in Ordnung. Danke schon mal!
Referenzspannung ist AVCC, sofern ich das richtig programmiert habe. Knut Ballhause schrieb: > Das ist ein nicht haltbares Gerücht. Es liegt am Code! Die A3Us, die ich > kenne, haben das Verhalten nicht. Und ich wollte nicht sagen, dass das die XMEGA immer so machen. Sondern nur, dass es meiner zur Zeit macht. Und ich bin davon ausgegangen, dass es an mir liegt ;)
Fabian schrieb: > Referenzspannung ist AVCC, sofern ich das richtig programmiert habe. Hast du nicht. Zum einen ist bei
1 | DACB.CTRLC = DAC_REFSEL_gm | 0x01; |
das DAC_REFSEL_gm falsch benutzt. Alles was auf _gm (group mask) endet ist dazu gedacht, um eine Bit-Gruppe zu löschen. Was da brauchst sollte was mit _gc (group configuration) sein. Zum anderen überschreibst du das direkt danach mit
1 | DACB.CTRLC = ~(DAC_LEFTADJ_bm); |
Damit benutzt du zum einen AREFB (PB0) und setzt zum anderen einen Haufen reservierter Bits auf 1.
Ich stelle mir vor (ich kann es nur vermuten) dass das Konfigurieren eines Ports deinen DAC stören kann. Beim Setzen oder Löschen einer LED konfigurierst du jedes Mal den Port neu. Warum? Ist für mich ungewöhnlich und unsinnig. Deine Schaltung verändert sich ja nicht dauernd dynamisch sodass zu "nachprogrmmieren" müsstest. Dann solltest du auch mal zeigen wie du die LEDs an den Controller angeschlossen hast.
Vielen Dank! Dann war deine Vermutung ja richtig! Leider bin ich noch ein Neuling und die DAC Konfiguration hab ich mir aus einem Tutorial abgeschaut. Anscheinend nicht aus dem besten. Ich hab mir das Datenblatt nochmal angesehen, hätte ich vielleicht vorher nochmal gründlich machen soll. Wenn ich
1 | DACB.CTRLC = 0x08; |
schreibe, müsste es passen oder? Dann setzte ich DAC_REFSEL auf 01, DAC_LEFTADJ und den Rest auf 0.
isidor schrieb: > Beim Setzen oder Löschen einer LED konfigurierst du jedes Mal > den Port neu Ja das ist unsinnig, da hast du recht. Das ganze habe ich leider etwas unsauber programmiert, da ich noch nicht so ganz fit bin. Aber ich denke es liegt wirklich daran, dass ich das DACB.CTRL Register falsch gesetzt habe. Die LED hängt volgendermaßen am MC: VCC---R---LED---MC Ich kann das mit dem Register leider erst morgen testen. Ich berichte dann, ob es geklappt hat. Schon mal allen DANKE!
Fabian schrieb: > Es funktioniert! Jaaaa..... die Wunder der Technik ...... diese Mikrokontroller haben doch etwas Esoterisches .....
isidor schrieb: > diese Mikrokontroller > haben doch etwas Esoterisches Ja! Manche Leute haben sogar Angst, Mikrocontroller in Schaltungen zu benutzen, an denen schon mal eine höhere Spannung hängt. Weil wenn der Controller sich mal verhaspelt, dann kann es ganz schön blitzen! Hat man mir erklärt....
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.