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
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.