Forum: Mikrocontroller und Digitale Elektronik Registernamen AT32UC3A1512


von D. B. (d_b)


Lesenswert?

Hallo zusammen,

ich habe folgendes Board mit einem AT32UC3A1512 µC: 
http://www.alvidi.de/shop/product_info.php?info=p7_AVR32-Modul.html

Mein Anliegen ist es, wie im AVR-GCC-Tutorial aufgeführt, die IO-Pins 
über die Register DDRx, PINx, PORTx per Bitmanipulation zu steuern.

Ich benutze das Atmel AVR32 Studio, als "Target Device" ist der passende 
µC-Typ eingestellt. Es ist mir jedoch nicht gelungen die Bezeichnungen 
für die Register und Pins herauszufinden, weder aus den passenden 
include-dateien gpio.h noch aus dem Datenblatt, die im Tutorial 
aufgeführten funktionieren jedoch nicht. So müsste ich immer die 
GPIO-Funktionen ( gpio_set_gpio_pin, ... ) nutzen.

Wie kann ich nun die Registernamen herausfinden?

Gruß, Dominik

von Dummy (Gast)


Lesenswert?

Datenblatt? Header für AVR32 UC3* bzw. Quellcode von 
gpio_set_gpio_pin()?

von D. B. (d_b)


Angehängte Dateien:

Lesenswert?

Hier das Datenblatt: 
http://www.atmel.com/dyn/resources/prod_documents/doc32058.pdf

Ein Beispielprogramm (welches auch läuft) wäre folgendes:
1
#include "gpio.h" //driver of atmel include in AVR32 UC3A Framework C:\AT32UC3x-1.x.x\DRIVERS\GPIO
2
#include "compiler.h" //driver of atmel include in AVR32 UC3A Framework C:\AT32UC3x-1.x.x\UTILS
3
int main(void)
4
{
5
  U32 i; //you will find this definition of >U32< in driver "compiler.h"
6
  while(1)
7
  {
8
    gpio_set_gpio_pin(AVR32_PIN_PA03); //set the pin 3 on port A as high-output
9
    for(i=0; i<1000; i++); //wait loop
10
    gpio_clr_gpio_pin(AVR32_PIN_PA03); //set the pin 3 on port A as low-output
11
    for(i=0; i<1000; i++); //wait loop
12
  }
13
}

gpio.h bzw gpio.c habe ich angehängt. Dort ist folgende Definition zu 
finden:
1
void gpio_set_gpio_pin(uint32_t pin)
2
{
3
  volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
4
  gpio_port->ovrs  = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 1.
5
  gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin.
6
  gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
7
}

Ich schätze mit "Header für AVR32 UC3*" war die Datei uc3a1512.h 
gemeint.

Vielen Dank schon mal für die Hilfe.

von Stefan O. (avrstefan)


Lesenswert?

Also die Register für die gpio lauten
AVR32_GPIO.port[0].gper für Enable.
AVR32_GPIO.port[0].oder für Output

AVR32_GPIO.port[0].ovr direkt auf das Port schreiben, und der Rest is 
aus dem Datenblatt zu entnehmen. Fas das noch nicht hilfreich war 
einfach fragen. Antwort gibt's dann aber vom pc aus denn das Telefon hat 
ne bescheuerte Tastatur.

von Dummy (Gast)


Lesenswert?

Dominik B. schrieb:
> Ich schätze mit "Header für AVR32 UC3*" war die Datei uc3a1512.h
> gemeint.

Ja, da stehen alle registernamen usw. drin die du wohl haben wolltest, 
oder?


> Vielen Dank schon mal für die Hilfe.

Was genau war jetzt noch die verbleibende Frage? Du möchtest die AVR32 
Library nicht benutzen sondern alles von Hand machen? (wenn ja, warum?)

Die DDR*, PINx, usw. Namen aus dem AVR-Tutorial haben gar nichts mit dem 
AVR32 zu tun, das kannst du gleich wieder alles vergessen, falls du das 
meintest. AVR (8 Bit) Controller != AVR32 UC3* Controller.

von D. B. (d_b)


Lesenswert?

Stefan O. schrieb:
> Also die Register für die gpio lauten
> AVR32_GPIO.port[0].gper für Enable.
> AVR32_GPIO.port[0].oder für Output
>
> AVR32_GPIO.port[0].ovr direkt auf das Port schreiben, und der Rest is
> aus dem Datenblatt zu entnehmen. Fas das noch nicht hilfreich war
> einfach fragen. Antwort gibt's dann aber vom pc aus denn das Telefon hat
> ne bescheuerte Tastatur.

okay vielen Dank, das funktioniert so;)


Dummy schrieb:
> Was genau war jetzt noch die verbleibende Frage? Du möchtest die AVR32
> Library nicht benutzen sondern alles von Hand machen? (wenn ja, warum?)
>
> Die DDR*, PINx, usw. Namen aus dem AVR-Tutorial haben gar nichts mit dem
> AVR32 zu tun, das kannst du gleich wieder alles vergessen, falls du das
> meintest. AVR (8 Bit) Controller != AVR32 UC3* Controller.

na da fällt es mir doch wie Schuppen von den Augen ;) Ich werde also die 
Library benutzen und mich durch die Programmbeispiele von Atmel 
arbeiten. Ein AVR32 Wiki bzw Tutorials scheint es ja leider noch nicht 
zu geben.

Danke euch, sehr hilfreiches Forum hier :)

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.