Forum: Mikrocontroller und Digitale Elektronik Startprobleme mit dem XMEGA A1 USB Board


von Markus (Gast)


Lesenswert?

Hallo!

Ich hab emir das XMEGA A1 USB Board aus dem shop gekauft

http://shop.avr-praxis.de/development-tools/mc-module/xmega-a1-usb.html

und will es mit dem AVRStudio4 und dem AVRisp mkII programmieren.
Da leider das Datenblatt des XMEGA A1 USB nicht gerade aussagekräftig 
ist, bin ich mir nicht sicher, ob ich die Spannungsversorgung richtig 
angeschlossen habe. Ich habe 3,0 V an die PINs AVCCA und AVCCB angelegt 
(Datenblatt XMEGA A1 USB Seite 4 
http://shop.avr-praxis.de/media/docs/xmega-a1-usb_datasheet.pdf). Wenn 
ich nun im AVRStudio mich mit dem AVRisp mkII verbinde und ein hex File 
aufspiele, steht unten in der Statusleiste auch überall OK!. Mein 
Programm ist folgendes:

#include <avr/io.h>

int main (void)
{
   PORTF.DIR = 0xFF;
   PORTF.OUT = 0xFF;

   while(1)
   {
      if(PORTF.OUT == 0xFF)
    {
       PORTF.OUT = 0x00;
    }
    else
    {
         PORTF.OUT = 0xFF;
    }
   }

   return 0;
}

Also einfach nur die PortBank F als Ausgang definiert und die Pins der 
Portbank solen dann ständig toggeln. Ich habe eine LED angeschlossen, 
jedoch tut sich nichts. Weiß jemand einen Rat für mich?

Gruß, Markus

von Merino (Gast)


Lesenswert?

Du fragst PORTF.OUT ab - muss da nicht PINF stehen?

von Simon K. (simon) Benutzerseite


Lesenswert?

Probier mal:
1
int main (void)
2
{
3
   PORTF.DIR = 0xFF;
4
5
   while(1)
6
   {
7
        PORTF.OUTTGL = 0xFF;
8
   }
9
10
   return 0;
11
}

von Simon K. (simon) Benutzerseite


Lesenswert?

Ach so, das Toggeln siehst du mit einer LED natürlich nicht...
Da musst du noch ein _delay_ms(500) o.ä. einbauen (Nicht vergessen dem 
Projekt die Taktfrequenz mitzuteilen). Ansonsten blinkt die LED viel zu 
schnell.

von Markus (Gast)


Lesenswert?

So, hab meinen Code jetzt mal mit PORT Bank A versucht und es läuft, 
warum das mit F nicht geht muss ich nochmal nachgucken. Jedenfalls weiß 
ich jetzt schonmal, dass der µC funktioniert :-D.

Trotzdem Danke für eure Mühe!

Gruß, Markus

von Stefan (Gast)


Lesenswert?

Hallo Markus,

ich nutze das Mikrocontrollermodul ebenfalls. Ich weiß nicht ob du dein 
Problem inzwischen gelöst hast. Also wegen der Betriebsspannung, hier 
gilt natürlich die Betriebsspannungsgrenzen des Xmega128A1, also 
Obergrenze ist 3,6V.
Du setzt den ganzen PortF einfach als Output, bedenke dass der Usart0 
von PortF an der USB-UART-Bridge angeschlossen ist, bzw. am 
Leveltranslator zur Bridge. RXD von USARTF0 sollte Input bleiben!

Die OnBoard-LED (PQ3) kannst du so toggeln:
1
PORTQ.DIRSET = (1<<PIN3);
2
3
while(1) {
4
5
  PORTF.OUTTGL = (1<<PIN3);
6
7
  delay_ms( 250 );  
8
9
}

Wahrscheinlich hast du das schon gemacht, ansonsten schau dir mal bei 
avr-praxis das Thema "Schnellstart" im Supportbereich des Moduls an, mir 
hat es jedenfalls sehr geholfen, da ich bisher nur mit normalen AVRs zu 
tun gehabt habe und der Xmega ist doch etwas anders zu programmieren

Stefan

von Stefan (Gast)


Lesenswert?

Sorry, wenn ich nochmal poste.

Bei dem C-Beispiel meinte ich natürlich
1
PORTQ.OUTTGL = (1<<PIN3);

Stefan

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.