Mikrocontroller

EmbeddedsystemeDokumentation und Interpretation/Analyse vom ARM XMega und ATMega Quellcode für die Phasenansteuerung über DMA


Für ein technisches Konzept haben wir die Evaluierung von zwei Mikrocontrollern, einem ATMEGA 16 und einem XMEGA A, übernommen. Zum einen wurden zwei Quellcodes zur Generierung von Sinussignalen dokumentiert und verglichen, zum anderen wurde die DMA-Steuerung untersucht.

In dem Programmbeispiel ist eine Signalgenerierung mit einem ATMEGA 16 aufgelistet. Die Generierung setzt die oben angegebene Hardware voraus. Wesentliches Element ist dabei das Widerstandsnetzwerk. Dieses bildet einen preisgünstigen Digital-Analogwandler. Die Widerstände sind jeweils 20kOhm und teilen die Spannung an den Ausgängen von Port B (im Quellbeispiel ist es Port A). Es können max. 256 verschiedene Spannungszustände mit 8 Bit erzeugt werden (2^8=256). In einer kurzen Assemblerroutine, die über einen Timer- Interrupt aufgerufen wird, wird die hinterlegte Wertetabelle nacheinander auf dem Port ausgegeben.

In dem Programmbeispiel des XMEGA A wird das Signal aus 12bit erzeugt. Dies ermöglicht eine wesentlich höhere Auflösung (2^12=4096). Die Ausgabe erfolgt über interne DA-Wandler. Die Generierung der Tabelle erfolgt über einen Funktionsaufruf, der die Tabelle erzeugt. Damit ist es einfach, andere Funktionen zu implementieren. Die Ausgabe der Tabellenwerte erfolgt über DMA und ist damit mit geringster Belastung der CPU verbunden und sehr präzise (Stichwort: Zeitäquidistante Ausgabe versus variable Interruptlatenz-Zeiten). Die XMEGA A- Lösung beansprucht weniger Platinenplatz und ist in jeder Hinsicht der ATMEGA 16-Lösung überlegen.