XMega-Verwirrung & DOGXL

  • 1
  • 2
  • 3
  • Page 1 of 3
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2133
Registered: 03 / 2003
Subject:

XMega-Verwirrung & DOGXL

 · 
Posted: 06.04.2012 - 13:43  ·  #1
Hallo @ all,

ich bin gearde dabei mein erstes XMega-Projekt anzugehen und mir ist schonmal aufgefallen, daß ich hier 2 verschiedene Datenblätter des Typs A3 hier hab. Beim einen ist Pin 35 und 45 GND und Pin 34 und 44 VCC. Beim anderen Datenblatt genau anderst herum. Ich habe inzwischen heraus gefunden, daß wohl 34 und 44 GND und 35 und 45 VCC stimmt (Kurzschlussprüfung mit Ohmmeter) - dummerweise nachdem der µC eingelötet war. Ich habe also diese 4 Pins am µC gekappt - alle anderen Versorgungspins stimmen und sind richtig verbunden. Der µC war mit falschem Layout nicht unter Spannung also gehe ich davon aus, daß er noch ganz ist. Große Preisfrage: müssen die gekappten Pins zwangsweise angeschlossen werden ?

Was ich noch nicht ganz verstehe: der µC wurde als XMega128-A3 bestellt (wohl gemerkt kein A3U), die Beschrifung lautet jedoch
Code

ATXMEGA128-A3
AU 1130

Ist das nun ein U oder nicht ? Das AU in der 2.Zeile verwirrt mich.

gruss
Harry
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: XMega-Verwirrung

 · 
Posted: 06.04.2012 - 13:59  ·  #2
Hallo Harry,

das "AU" ist das Gehäuse und Temperatur Bereich. "1130" ist das Produktions Datum, 30.KW 2011.
Das USB-U muss direkt hinter "A1" bzw. "A3" stehen.
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2133
Registered: 03 / 2003
Subject:

Re: XMega-Verwirrung

 · 
Posted: 06.04.2012 - 15:45  ·  #3
Hallo Rolf,

danke :)

Aber ich bin echt am Verzweifeln. Ich möchte die Hintergrundbeleuchtung meines Displays per SoftPWM ansteuern und schon das klappt nicht.
Code

Define
  SoftPWMport    = PortA;           { use PortA for PWM output}
  SoftPWMtimer   = Timer_C1, 10;    { use timerx, PWM cycle time msec}
  SoftPWMres     = 100;             { PWM resolution is 100 points}
  SoftPWMchans   = 3, 0;            { x channels, bity is the first bit}

Procedure Init_Ports;
  Begin
    DDRA:=%00000111;                             // PWM PortA 0..2
    PortA:=%00000000;
  End Init_Ports;

Procedure Start;
  Begin
    SoftPWMarr[1]:=100;
    SoftPWMarr[2]:=100;
    SoftPWMarr[3]:=100;
  End Start;


Hab ich was vergessen ? Gibts da was, daß bei XMegas anderst ist ? Das Programm wird via ISP3 in den µC geschrieben und auch ein extra Verify zeigt, daß das Prog im µC ist. Die Taktfrequenz ist doch im Auslieferungszustand 32 MHz intern ? Die Fuses verändere ich nicht, da ich sie (so glaube ich) nicht richtig auslesen kann und im Datenblatt (A3 complete) keine Default-Fuses stehen.

gruss
Harry
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: XMega-Verwirrung

 · 
Posted: 06.04.2012 - 15:55  ·  #4
Hallo Harry,

1. es gibt keine default Fuses beim XMega
2. der CPU Clock ist im Auslieferzustand 2MHz soweit ich mich erinnere.
3. jede XMega App muss den gewünschten Clock selbst einstellen.

Stellen Sie mal das komplette Programm hier rein. Aus Schnipseln kann man oft nichts genaues sehen.

rolf
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2133
Registered: 03 / 2003
Subject:

Re: XMega-Verwirrung

 · 
Posted: 06.04.2012 - 15:57  ·  #5
Hallo Rolf,

aber gerne doch:
Code

Program I2C_DOGXL;

{$NOSHADOW}
{ $WG}                     {global Warnings off}

Device = xmega128A3, VCC=3.3;
{ $BOOTRST $10000}         {Reset Jump to $10000}

Import SysTick, LCDGraphic, TWI_C, SoftPWM;

From System Import ;

Define
  OSCtype        = int32MHz,
                   PLLmul=4,
                   prescB=1,
                   prescC=1;
  SysTick        = 10;             {msec}
  StackSize      = $0200, iData;
  FrameSize      = $0200, iData;
  
  LCDGraphic     = 160, 104, 8;     { x-pix, y-pix, accesswidth}
  GViewports     = 1, iData;        { logical ViewPorts, scalings}
  
  TWIPrescC      = TWI_BR400;
  
  SoftPWMport    = PortA;           { use PortA for PWM output}
  SoftPWMtimer   = Timer_C1, 10;    { use timerx, PWM cycle time msec}
  SoftPWMres     = 100;             { PWM resolution is 100 points}
  SoftPWMchans   = 3, 0;            { x channels, bity is the first bit}

Implementation

{$IDATA}
{------------------------------------------------------------------------------}
{ Type Declarations }
Type
{------------------------------------------------------------------------------}
{ Const Declarations }
Const
  LCDAdr_C : Byte = $3C;
  LCDAdr_D : Byte = $3D;
{------------------------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
Var

{------------------------------------------------------------------------------}
{ functions }
Procedure Init_LCD;
  Begin
    PortC:=%00000100;                       // Set I²C
    PortD:=%00000010;                       // /Reset
    MDelay(10);
    PortD:=%00000011;                       // Reset
    MDelay(10);
    TWIOutC(LCDAdr_C,$F1,$67);              // Set COM to 103
    TWIOutC(LCDAdr_C,$C0);                  // COM and ROW normal
    TWIOutC(LCDAdr_C,$40,$50);              // StartLine 0
    TWIOutC(LCDAdr_C,$2B);                  // Panelloading
    TWIOutC(LCDAdr_C,$EB);                  // BIAS 1/12
    TWIOutC(LCDAdr_C,$81,$5F);              // Contrast
    TWIOutC(LCDAdr_C,$89);                  // Auto Increment
    TWIOutC(LCDAdr_C,$AF);                  // Display on
  End Init_LCD;
  
  
Procedure Clr_LCD;
  Var Counter : Word;
  Begin
    TWIOutC(LCDAdr_C,$F1,$67);
    TWIOutC(LCDAdr_C,$C0);
    TWIOutC(LCDAdr_C,$40,$50);
    TWIOutC(LCDAdr_C,$89);
    For Counter:=0 to 4159 do
      TWIOutC(LCDAdr_D,$ff);
      EndFor;
  End Clr_LCD;
  
  
UserDevice GraphIOS(cmd:Byte;adr:Word;mask,pixel:Byte):Byte;
  Begin
  (* commands passed to user defined function "GraphIOS" *)
  (*  0  display init   adr = none      mask = none   pixel = none   result = none   *)
  (*  1  display clear  adr = fillpatt  mask = none   pixel = none   result = bool   *)
  (*  2  write byte     adr = byte adr  mask = byte   pixel = mode   result = none   *)
  (*  3  read byte      adr = byte adr  mask = none   pixel = none   result = byte   *)
  (*  4  set pixel      adr = byte adr  mask = mask   pixel = pixel  result = none   *)
  (*  5  clear pixel    adr = byte adr  mask = mask   pixel = pixel  result = none   *)
  (*  6  xor pixel      adr = byte adr  mask = mask   pixel = pixel  result = none   *)

    Case cmd of
      0  : Init_LCD;
           cmd:= 0; |                    // display init
      1  : Clr_LCD;
           cmd:= 0; |                    // display clear
      2  : cmd:= 0; |                    // write byte
      3  : cmd:= 0; |                    // read byte
      4  : cmd:= 0; |                    // set pixel
      5  : cmd:= 0; |                    // clear pixel
      6  : cmd:= 0; |                    // xor pixel
    Endcase;
    Return(cmd);
  End GraphIOS;


Procedure Start;
  Begin
    SoftPWMarr[1]:=100;
    SoftPWMarr[2]:=100;
    SoftPWMarr[3]:=100;
  End Start;
  
  
Procedure Init_Ports;
  Begin
    DDRA:=%00000111;                             // PWM PortA 0..2
    DDRB:=%00000000;                             // Touch & Erweiterung
    DDRC:=%00011100;                             // Display SPI/I²C & Steuerung
    DDRD:=%00000011;                             // Display-Steuerung
    PortA:=%00000000;
    PortB:=%00000000;
    PortC:=%00000000;
    PortD:=%00000000;
  End Init_Ports;
{------------------------------------------------------------------------------}
{ Main Program }
{$IDATA}

Begin
  EnableInts($87);
  Init_Ports;
  Init_LCD;
  Clr_LCD;
  Start;
  Loop
    PortA:=%00000111;
  Endloop;
End I2C_DOGXL.



gruss
Harry
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2133
Registered: 03 / 2003
Subject:

Re: XMega-Verwirrung

 · 
Posted: 06.04.2012 - 18:31  ·  #6
Also so wie es aussieht läuft der µC nicht los, wenn der Programmer eingesteckt ist. Wenn ich ihn ausstecke kommt nach dem Display-Init (das aber noch nicht funktioniert) die Hintergrundbeleuchtung. Es ist dabei egal ob ich das Proggerkabel am Progger oder an meiner ProgBuchse ausstecke (der PDI-Adapter von E-Lab ist angesteckt). Es reicht aber nicht, wenn ich ausstecke, ich muß die Spannung kurz abschalten.

Beschaltung wie in dem Schaltplan von Gunter in meinem I2C-Port-Geschwindigkeits-Thread (außer daß der C nur 100nF hat).

Irgendeine Idee ?

gruss
Harry
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2133
Registered: 03 / 2003
Subject:

Re: XMega-Verwirrung

 · 
Posted: 07.04.2012 - 10:59  ·  #7
Jetzt ists soweit, daß ich garnix mehr verstehe. Ich habe ein Oszi an den Reset-Pin angeschlossen und wenn ich per avrprog den µC gestoppt habe, messe ich folgendes (siehe Image007.jpg). Sollte das nicht ein schönes, sauberes Lo sein ? :'(

Ich habe inzwischen den Reset-R auf 4.7K verkleinert und die R/C-Kombination nach der Diode auf 4.7K und 1µF geändert.

Ich sehe übrigens immer noch (wie schon vor längerer Zeit in einem anderen Thread geschrieben), daß ein "Run" den Reset 2x frei gibt. Siehe Image008.jpg

gruss
Harry

Edit: Ich habe gerade in Betrieb den Progger ausgesteckt und der Sägezahn war immer noch da (Oszi blieb am Prog-Kabel angeschlossen, nicht am µC). Also kommt der vom ISP3 :sick: :'(
Attachments
XMega-Verwirrung & DOGXL
Filename: IMAGE007.jpg
Filesize: 11.26 KB
Title:
Download counter: 202
XMega-Verwirrung & DOGXL
Filename: IMAGE008.jpg
Filesize: 9.8 KB
Title:
Download counter: 199
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2133
Registered: 03 / 2003
Subject:

Re: XMega-Verwirrung

 · 
Posted: 07.04.2012 - 12:33  ·  #8
Alle Firmwareversionen und Programme sind nun auch auf dem aktuellen Stand (vorher 10.03.2012 jetzt 21.03.2012), ich hab mir ein pac für meinen UPP-2 gebaut und mit dem sowohl remote als auch Stand-Alone geflasht - das Programm startet immer noch nicht, wenn ich nicht die Spannungsversorgung der Schaltung kurz abschalte. Seltsamerweise zeigte mit der ISP-3 3.34V und der UPP-2 im Stand-Alone-Betrieb 3.81V an. Es sind mit dem Multimeter gemessene 3.32 V.

Noch irgendeine Idee ? Ich kann doch nicht ein Programm schreiben wenn ich jedes Mal nach dem Flashen die Spannung abschalten muß.

Hier noch das Layout - vielleicht fällt ja noch irgendwas auf *hoff*. Momentan ist nur der SD-Halter bestückt aber leer, der GPS-Empfänger nicht. Zum Flashen verwende ich eine MicroMatch-Buchse - Beleging Pin 1-6 wie beim e-lab-XMega-Adapter.
Rechts unten der Spannungsregler (MP2357), rechts oben Touch-Anschuss, links daneben 2 Jumper für SPI/I²C-Umschaltung, links unten SD und drüber GPS.

gruss
Harry

[EDIT]Hab grad alles was mit TWI, I²C und Display zu tun hat aus dem Programm entfernt und jetzt startet das Programm nach dem Flashen. Ich werde mal alles nach und nach rückgängig machen und schaun wann es nicht mehr geht.

[EDIT #2]Wenn ich nur alles was mit TWI zu tun hat entferne gehts auch.
Attachments
XMega-Verwirrung & DOGXL
Filename: Layout.jpg
Filesize: 84.16 KB
Title:
Download counter: 211
  • 1
  • 2
  • 3
  • Page 1 of 3
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 17 · Cache Hits: 15   139   154 · Page-Gen-Time: 0.029372s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI