xmega und HW-PWM

OP (Firma: none) #1469843
Lesenswert?

Hallo,
ich "spiele" gerade mit nem XMega32a4 herum.
Das Teil schreit auf Grund seiner features geradezu danach
als Ambilight zu arbeiten.

PWM habe ich auf 6 Kanälen mit 16 Bit am laufen (funzt ganz gut)
ist über ISRs realisiert.
Jetzt stellt sich mir eine Frage:
Kann der XMega32A4 das auch komplett hardwaremäßig abbilden?
Was ich meine ist, kann der Timer selbstständig Pins an und ausschalten?
Wenn ja, wie viele Kanäle mit 16Bit und evtl hat jemand einen 
Codeschnipsel.
Danke
Gruß
Andreas
OP (Firma: none) #1471132
Lesenswert?

@sabler
Jo, genau den nehme ich dafür (AVR ISP Mk2). Der kann, wenn Du das 
aktuelle AVR-Studio benutzt, nach Firmware update PDI!
Als Software nehme ich AVR-Studio+WinAVR. Klappt alles ganz prima!
Habe mir in Eagle ein (minimalistisches) Breakoutboard gemacht damit ich 
auf dem Breadboard
experimentieren kann (falls jemand Interesse hat, würde ich das Layout 
posten).

Klappt alles super!

@Simon, nach dem ich das Datenblatt nun fast auswendig kann ;-) ...
habe ich das auch herausgefunden (trotzdem Danke).

Für alle die in die Materie Xmega einsteigen hänge einfach mal
2 codefragmente an für HW-PWM und 3 channel ADC.

TIMER für HW PWM configurieren:

 // Setup Timer D0 to HW-PWM
  PORTD.DIR = 0xFF;
  PORTD.OUT = 0x00;
  TCD0.CTRLA = 0x03;    // divide clock by 4
  TCD0.PER = 0xFFFF;    // set resolution to 16Bit
  TCD0.CCA = 0x4FA0;    // Dutycycle A
  TCD0.CCB = 7000;      // B
  TCD0.CCC = 8000;      // C
  TCD0.CCD = 40000;     // D
  TCD0.CTRLB = 0xF3;    // enable frequency generation for all 4 
Channels


ADC mit ADC0 ADC1 und ADC2:

 // Setup ADC
  ADCA.CTRLA = 0x01;      // enable
  ADCA.CTRLB = 0x0C;      // unsigned mode 8Bit and freerun
  ADCA.REFCTRL = 0x10;    // internal reference to VCC/1.6
  ADCA.EVCTRL = 0xC0;     // sweepmode for channel 0,1 and 2
  ADCA.PRESCALER = 0x02;  // prescaler to 16 = 2MHz@32Mhz Systemclock
  // Channel 0
  ADCA.CH0.CTRL = 0x01;   // input mode single-ended-positive
  ADCA.CH0.MUXCTRL = 0x04;// muxctrl to ADC0Pin
  // Channel 1
  ADCA.CH1.CTRL = 0x01;   //input mode single-ended-positive
  ADCA.CH1.MUXCTRL = 0x08;// muxctrl to ADC1Pin
  // Channel 2
  ADCA.CH2.CTRL = 0x01;   //input mode single-ended-positive
  ADCA.CH2.MUXCTRL = 0x10;//muxctrl to ADC2Pin


  // Enable IRQs@all Levels (High, Middle und Low)
  PMIC.CTRL=0x07;
  asm("sei");

jetzt kann man den ADC pollen:

    while ((ADCA.INTFLAGS & 0x07) != 0x07)
    {
      asm("nop");
    } // wait for ADCA to be ready

    b3=ADCA.CH0RESL;        // read 8Bit value
    ADCA.INTFLAGS |= 0x07;  // restart conversion
Angehängte Dateien:
#1471470
Lesenswert?

Hab auch mal gerade nach dem PWMs geschaut, der hat ja noch den Port E 
mit 4 PWM Kanäle. Das wären dann 3x4+2x2 und damit sollte man doch schon 
ein nettes Ambilight a 4 x RGBW / RGBY zusammenbauen können. Halt eine 
Farbe für jede Ecke :). Da könnt ich ja fast schwach werden und meine 
1xRGBY Platine überarbeiten (wenn wieder Zeit ist).
OP (Firma: none) #1471503
Lesenswert?

Ich sag ja, der schreit förmlich danach ;-)
Habe noch keinen controller gesehen, der besser passen würde.
Bei dem Preis des 32A4 kommt man auf Gesamtkosten der Schaltung
von etwa 10-15 EU.
Da die ADCs ja jetzt auch ralativ schnell sind, müßte da was
echt brauchbares bei rauskommen.
Ich habe mal ein Ambilight mit nem Mega88 gebaut und selbst das
Ding hat ganz gut funktioniert (es waren aber definitv zu wenig
Messungen möglich).
Gruß
Andreas
#1471618
Lesenswert?

Andreas B. schrieb:

> Ich habe mal ein Ambilight mit nem Mega88 gebaut und selbst das
> Ding hat ganz gut funktioniert (es waren aber definitv zu wenig
> Messungen möglich).

Hast du das mal irgendwo dokumentiert? Schaltplan o.ä.? Ich hab zwar 
keinen Fernseher, aber eine Verwendung finde ich bestimmt ;)
OP (Firma: none) #1471865
Lesenswert?

Leider nein, hatte das Ding auf Lochraster aufgebaut.
Dein Eingangsteil hatte ich abgekupftert vom Aurrolight oder so hieß das
Ding glaube ich.
Ich bin aber gerade dabei die Platine für die Version mit dem XMega zu
layouten.
Wenn du noch etwas wartest kann ich Dir die schicken.
Gruß
Andreas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren