Forum: Mikrocontroller und Digitale Elektronik ATXMega256D3, bzw D3er Serie


von MOBA 2. (Gast)


Lesenswert?

Hallo ich bin es mal wieder,

ich baue gerade an einem Displaycontroller via I²C mit Touchscreen 
resitiv.
Mit den Graphiken komme ich schnell an die Grenze der 128kB ATMegas, 
auch der ATMega2561 reicht nicht, da er nur 8kb RAM besitzt - leider :(.
Naja ich habe dann gedacht mache ich es mit einem ATXMega - das 
gestaltet sich wohl schwieriger als erwartet. Das Datenblatt finde ich 
nicht so toll.
Ich nutze die 256D3, also die D3 (den billigsten). Laut Datenblatt hat 
er mehr als genug für mich; I²C ist bei PORTE bei TWIE angeschlossen, 
die nötigen ADCs sind 7-11 auf PORTB.

So, jetzt wollte ich mal den ADC und das TWI konfigurieren - geht nicht.
ATMELStudio kennt bei dem Prozessor kein TWIE Register, auch irgendwie 
nur Channel0 während des ADC. Vll. mache ich aber auch was komplett 
falsch.

1
ADCA.CH0.CTRL=ADC_CH_INPUTMODE_SINGLEENDED_gc;
2
ADCA.CH0.CTRL |= ADC_CH_START_bm;
3
4
while (ADCA.CH0.INTFLAGS);
5
6
return (ADCA.CH0.RES);

Vorher habe ich ihn folgendermaßen initialisiert:

1
ADCA.REFCTRL=ADC_REFSEL_VCC_gc;
2
ADCA.CTRLB=ADC_RESOLUTION_12BIT_gc;
3
ADCA.PRESCALER=ADC_PRESCALER_DIV32_gc;  //Max. ADC Sampling 2MSPS 
4
ADCA.CTRLA=ADC_ENABLE_bm;

Müsste ich jetzt nicht eigentlich ADC7-ADC11 nutzen, sprich dort 
CH7-CH11 eintragen? Der kennt aber nur CH0. Ich bin echt am verzweifeln, 
beim TWI das gleiche. Ich wollte das gerne als Slave initialisieren. Ich 
finde auch kaum etwas im Internet dazu. Beim TWI komme ich noch gar 
nicht klar wie ich den als Slave initialisiere mit Interrupt.

Achso: Auslagern von den Bilddaten oder so ist nicht gewünscht, jetzt 
muss es sowieso der ATXMega werden.

von Robert W. (robwa)


Lesenswert?

Hallo, ich kenne die Xmega der D3-Serie nicht (abae bisher immer nur mit 
der A-Serie gearbeitet), es scheint aber eine offensichtliche Diskrepanz 
zwischen dem Datenblatt 
http://www.atmel.com/Images/Atmel-8134-8-16-bit-Atmel-XMEGA-D3-Microcontroller_Datasheet.pdf 
und der Definitionsdatei iox256d3.h aus dem avr-Toolchain bezüglich des 
TWIE (ist im Datenblatt auf Seite 52 angeführt, fehlt aber in er 
Headerdatei) zu geben. Weiters ist im Datenblatt auf Seite 51 angeführt, 
dass der ADC auf Port B als ADCA bezeichnet wird, beim Xmega 256A3 wird 
deieser ADC jedoch als ADCB bezeichnet und der fehlt ebenfalls in der 
Headerdatei. Ich tippe in beiden Fällen (TWIE und ADCB) auf Fehler in 
der Definitionsdatei (oder im Datenblatt) und würde diesbezüglich an den 
Atmel-Support eine Anfrage senden. Das hat mir in einem anderen Fall 
auch schon geholfen, ich habe bereits am nächsten Tag eine Antwort 
erhalten.

BG,
Robert.

von MOBA 2. (Gast)


Lesenswert?

Hallo,

wenigstens einer der mich versteht :)

Ich gucke gerade, bzw habe mit dem Konfigurationsdatenblatt gearbeitet.
So nach und nach komme ich wieder wie mit den Mega's und Tiny's 
klar(er).

Laut Datenblatt:
http://www.atmel.com/Images/Atmel-8210-8-and-16-bit-AVR-Microcontrollers-XMEGA-D_Manual.pdf

hat Atmel das anders unterteilt, mit CH0 meinen die, dass es ein ADC mit 
Multiplexer ist, die A-Version hat 2 CH (CH0 das ist ADCA und CH1 das 
ist ADCB); den Kanal wählt man dann noch über das MULTIPLEX-Register mit 
den Bits 3-6, sofern man nur positiv messen möchte. Den negativen Kanal 
gibt man dann mit den Bits 0-2 an.

Ich habe die Hardware leider noch nicht hier, sodass ich erstmal nur so 
mein Programm von Mega nach XMega umschreiben kann/muss; hoffe das 
klappt nachher auch so wie vorgestellt. Wie funktioniert der ADC bei 
dir? Stabil und zuverlässig wie bei den Mega's? Habe in einigen Foren 
gelesen, dass diese nicht so toll sein sollen, was ich mir aber gar 
nicht vorstellen kann.

Das mit dem TWI ist allerdings doof, an welche Mailadresse hast du dich 
gewendet.

Benutzt du zufällig TWI bei deinen XMega?

von Robert W. (robwa)


Lesenswert?

Hallo,

ich habe damals an die offizielle Supportadresse unter 
http://support.atmel.no/bin/customer.exe geschrieben (ich habe mich 
vorher auf der Atmel-Website registriert und hatte eine Frage bezüglich 
der Programmierung eines Xplained-boards mit dem Jtagice3). Wie bereits 
erwähnt bekam ich bereits am nächsten Tag eine qualifizierte Antwort die 
mir weitergeholfen hat.
In meinen Projekten mit den Xmegas (ich habe mit diesen Controllern, 
abgesehen von einem Projekt mit einem PIC, erst begonnen und kenne mich 
daher mit den ATMEGAs und Tinys nicht so aus) nutze ich den ADC 
hauptsächlich für die Auswertung eines resistiven Touchpanels mit dem 
Xmega256A3. Dies funktioniert ausreichend zufriedenstellend, ich kann 
damit am Display Freihandlinien zeichnen und mit dem Finger problemlos 
kleine "Tasten" erreichen um Sollwerte einzugeben oder die Uhrzeit zu 
stellen.
Auch TWI nutze ich für die Kommunikation mit der RTC. Hier habe ich eine 
Bibliothek von der Hochschule Mittweida bekommen, die ich für meine 
Zwecke leicht modifiziert habe. Die Kommunikation mit der RTC macht 
ebenfalls keine Probleme.
Ich wünsche Dir auf jeden Fall viel Erfolg mit Deinem Projekt und hoffe 
Deine Probleme lassen sich schnell beseitigen!

von Mark (Gast)


Lesenswert?

Marius Dege schrieb:
> Mit den Graphiken komme ich schnell an die Grenze der 128kB ATMegas
Und warum willst Du keinen externen EEPROM oder seriellen Flashspeicher 
verwenden?

Grüße,
Maik

von MOBA 2. (Gast)


Lesenswert?

Hi,

der Displaycontroller ist ein Board mit Touchscreen für mein Hausbus, 
die Graphik/Interface kommt mit der Firmware, da darauf angepasst. 
Updates bekommt er vom Master via I²C. Daher hatte ich ext. 
Speicherquellen ausgeschlossen, weil das sonst schwierig mit den 
Interface-Bildern wird bei Softwareupdates (wenn es im Interface 
Änderungen gibt).

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
Noch kein Account? Hier anmelden.