Forum: Mikrocontroller und Digitale Elektronik XMega über MKII erst nach 100 Programmzeilen programmierbar?!


von Chris B. (fetzen)


Lesenswert?

Servus,

ich habe heut das EvalBoard von 
ALVIDI(http://www.alvidi.de/shop/product_info.php?info=p34_AVR-ATxmega-USB-Extended-Modul-mit-ATxmega256A3.html) 
bekommen und wollte gleich los legen. Hab mir ein Tutorial gesuch.

Unter Device Programming kann ich mir die Target Voltage und die 
Signatur anschaunen und die Fuse Bits auslesen... also Verbindung habe 
ich.

Mit folgendem Programm wollte ich die Board eigenen LEDs ansteuern:

#include <avr/io.h>

int main(void)
{

  PORTF.DIRSET = 0xFF;
  PORTF.DIRCLR = 0xF0;

  while(1){
  }

}

was aber nicht funktioniert hat die LEDs blieben aus.

Nach ein bissal testen habe ich die Codezeile "PORTF.DORCLR = 0xF0;" 100 
mal kopiert. Nach dem Uploaden haben die 4 LEDs geleuchte.

Nun bin ich am verzweifeln. Hat jemand von euch zufällig einen Plan 
warum das so ist?

Merci schon mal.

von Ronny M. (hobby-coder)


Lesenswert?

versuchs mal proberweise so:
1
#include <avr/io.h>
2
3
int main(void)
4
{
5
6
  while(1){
7
    PORTF.DIRSET = 0xFF;
8
    PORTF.DIRCLR = 0xF0;
9
  }
10
11
}

von Chris B. (fetzen)


Lesenswert?

Nein funktioniert leider auch nicht.

von Timmo H. (masterfx)


Lesenswert?

Du schaltest ja nur die Ports auf Output bzw. Input.

Probiere mal das:
1
#include <avr/io.h>
2
3
int main(void)
4
{
5
6
  PORTF.DIRSET = 0xFF;
7
  PORTF.OUTCLR = 0xF0;
8
9
  while(1);
10
11
}

von Chris B. (fetzen)


Lesenswert?

Ohhh... Sorry hab mich verschrieben hab es gerade noch mal überprüft 
funktioniert mit .OUTSET nicht auser ich kopier den Befehl 100mal :(

von Timmo H. (masterfx)


Lesenswert?

OUTCLR musst du machen nicht OUTSET. Die LEDs gehen an, wenn die PINs 
auf LOW geschaltet werden.
Und die Jumper JP5-1 - JP5-4 hast du ja gesteckt, richtig, sonst würde 
ja gar nichts passieren mit den LEDs.

von Detlev T. (detlevt)


Lesenswert?

Benutzt du vielleicht das AVR-Studio 6 mit SP2? Da gibt es leider einen 
Bug, weswegen die letzte Seite nicht geschrieben wird. Ohne SP2 gehts.

von Timmo H. (masterfx)


Lesenswert?

Achja, wenn das Board mit Bootloader ausgeliefert wird, hast du den 
Bootloader vermutlich beim Brennen auch gelöscht, und musst daher das 
Fuse-bit "BOOTRST" auch wieder auf Application stellen.

von Timmo H. (masterfx)


Lesenswert?

Detlev T. schrieb:
> Benutzt du vielleicht das AVR-Studio 6 mit SP2? Da gibt es leider einen
> Bug, weswegen die letzte Seite nicht geschrieben wird. Ohne SP2 gehts.
Wobei da eigentlich dann auch ein Verify Error kommen sollte.

von Gerhard G. (g_g)


Lesenswert?

Hallo,

so funktioniert es! Blinken geht sehr schnell! Nur mit Oszi.
Oder halt mehr _delay_ms() einbauen


int main(void)
{

  PORTF.DIRSET = PIN0_bm; // PORTF PIN0 Als Ausgang verwenden


  while(1){

  PORTF.OUTCLR = PIN0_bm; // Ausgang low
  _delay_ms(100);

  PORTF.OUTSET = PIN0_bm;  // Ausgang high
  _delay_ms(100);

   PORTA.OUTCLR = PIN0_bm; // Ausgang low

  }

}


Gruß G.G.

von Ingo (Gast)


Lesenswert?

Detlev T. schrieb:
> Benutzt du vielleicht das AVR-Studio 6 mit SP2? Da gibt es leider einen
> Bug, weswegen die letzte Seite nicht geschrieben wird. Ohne SP2 gehts.

??? Was ???

von Timmo H. (masterfx)


Lesenswert?

Nur Doof, das bei dem Board vom Chris keine LEDs an PORTF Pin0 sind.
Also wenn dann so:
1
#include <avr/io.h>
2
#include <util/delay.h>
3
4
int main(void)
5
{
6
7
  PORTF.DIRSET = (1<PIN7) | (1<PIN6) | (1<PIN5) | (1<PIN4); //LED Pins auf Ausgang
8
9
  PORTF.OUT = (1<PIN7) | (1<PIN5);  //LED an Pin4 und Pin6 einschalten
10
11
  while(1){
12
     //LEDs Toggeln
13
    PORTF.OUTTGL = (1<PIN7) | (1<PIN6) | (1<PIN5) | (1<PIN4);
14
    _delay_ms(500);
15
  }
16
17
}
Dann sollten die LEDs im 500ms-Takt wechselblinken (sofern F_CPU richtig 
gesetzt ist)

Ingo schrieb:
> Detlev T. schrieb:
>> Benutzt du vielleicht das AVR-Studio 6 mit SP2? Da gibt es leider einen
>> Bug, weswegen die letzte Seite nicht geschrieben wird. Ohne SP2 gehts.
>
> ??? Was ???

Ja SP2 hat ein Bug mit einigen Xmegas. Kommt dann auch immer ein Verify 
error. Lieber 6.1 Beta nehmen.

von Detlev T. (detlevt)


Lesenswert?

Ingo schrieb:
>> Ohne SP2 gehts.
>
> ??? Was ???

Das Programmieren des Controllers.

von Ingo (Gast)


Lesenswert?

Hmm, also ich hatte bisher keine Probleme mit einem Xmega32A4. Wo steht 
der Bug irgendwo? Bin leider gerade mit'n Handy on, da kann man sich 
pdfs schlecht angucken...

von Chris B. (fetzen)


Lesenswert?

Also mit dem Atmel Studio 6.1 funktioniert jetz einwandfrei! Vielen 
dankt für die schnelle Hilfe.

Schönen Abend noch
   Chris

von Detlev T. (detlevt)


Lesenswert?

Ingo schrieb:
> Wo steht
> der Bug irgendwo?

Guckst du hier: http://asf.atmel.com/bugzilla/show_bug.cgi?id=2941

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.