Forum: Mikrocontroller und Digitale Elektronik AVR32 Dokumentation?


von Stephan K. (mul1)


Lesenswert?

Hi,

ich bin gerade an der Uni dazu gezwungen meinen Prozessor zu wechseln 
und zwar auf einen AVR32UC3... . Ich hab jetzt mein Board bekommen. Der 
Digitalteil ist nicht auf meinem Mist gewachsen und läuft (mit 
FreeRTOS). Meine Aufgabe ist es jetzt den Analogteil anzusteuern und ihm 
Messwerte zu entlocken. Dinge mit denen ich umgehen muss sind 6 
SPI-Devices, 1-2 Timer und Interrupts. Rein theoretisch alles kein 
Problem, viel Code existiert schon und es müssen z.B. nur Ports 
angepasst werden.

Problem:
Mein Problem ist, dass ich keine sinnvolle Dokumentation habe/finde, die 
mir Grundlegendes erklärt.

Beispiel:
Die SPI-Kommunikation für meinen LTC2756 ist eigentlich fertig. Er hängt 
nur an anderen Ports.

Der Code in 'user_board.h' sagt:
1
#define SPI0_SCK_PIN       AVR32_SPI0_SCK_2_PIN        //PB12
2
#define SPI0_SCK_FUNC      AVR32_SPI0_SCK_2_FUNCTION
3
#define SPI0_NPCS1_PIN     AVR32_SPI0_NPCS_1_1_PIN      //PA13
4
#define SPI0_NPCS1_FUNC    AVR32_SPI0_NPCS_1_1_FUNCTION

Mein LTC2756 hängt an CS0 des SPI0, also muss da sowas wie:
1
#define SPI0_NPCS0_PIN     AVR32_SPI0_NPCS_0_?_PIN      //PA13
2
#define SPI0_NPCS0_FUNC    AVR32_SPI0_NPCS_0_?_FUNCTION

zwischen. Das ? ist in dem Fall evtl. noch zu erraten, da die Folgepins 
mit den anderen CSs alle eine 1 haben. Beim AVR32 sind die Funktionen an 
den Pins gemultiplext, somit wird wohl durch die richtige Zahl 
eingestellt, welcher Pin an welchem Port der ein CS_0 für SPI0 
übernehmen kann das tut.

Das Datenblatt sagt, dass die Muxerei der Pins über PMRn Register 
gesteuert werden.

Im mir vorliegenden Code, werden diese Register nicht benutzt, bzw. 
maximal Indirekt durch AVR32_SPI0_NPCS_0_?_PIN

Ich habe z.B. nach 'AVR32_SPI0_NPCS_1_1_PIN' im gesamten Projekt 
gesucht, um ggf. eine Datei zu finden, in der das mapping steht. 
Fehlanzeige.
Ich hab in der Toolchain die 'io.h' gesucht, die eigentlich nur je nach 
Prozessor auf andere Dateien verweist. Den Eintrag für meinen Prozessor 
hab ich gefunden. Die Datei nicht.

Frage:
Wo finde ich eine ordentliche Dokumentation zum AVR32, wo diese Basics 
erklärt sind? Die Datenblätter kenne ich, helfen aber nicht, wenn 
Registerzugriffe hinter defines und Makros versteckt sind. Wenn ich 
irgendwas zum AVR32 googel, finde ich Tonnen zu den 8-bit-AVRs, aber 
wenig bis nichts Hilfreiches zum AVR32.

Umgebung:
Ich nutze AVRStudio 6 auf Windows. Dem konnte ich bis jetzt aber noch 
nicht mal eine ordentliche Hilfe entlocken. Immer wenn ich die Hilfe 
aufrufe kann ich weitere Bücher für VisualStudio installieren.

Viele Grüße, Stephan

von andreas (Gast)


Lesenswert?


von Purzel H. (hacky)


Lesenswert?

Alternativ kann man auch bei der Techsupport email von Atmel anfragen, 
die sind sehr schnell und geben sich Muehe.

von Stephan K. (mul1)


Lesenswert?

Danke für die Antworten.

Das AVR32-Wiki ist ja schon mal eine Anlaufstelle, für spezifische 
Infos.

Das oben beschriebene Problem ist seit gestern auch gelöst, nachdem ein 
Doktorand den Cursor erst in das 2. Schlüsselwort des Defines bewegt und 
dann in AVR-Studio auf 'GO' geklickt hat. AVR-Studio hat dann die für 
meinen Kontroller spezifische und in der io.h verlinkte Datei geöffnet, 
wo die fehlende Zuordnung gemacht wurde.

Mir ist immer noch unklar wo im Dateisystem die blöde Datei liegt, da 
ich an allen für mich sinnvollen Orten gesucht habe, aber AVR-Studio 
weiß es :) Das werde ich heute rausfinden und dann mögliche Lösungen mal 
ins Netz schreiben.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Stephan Klein schrieb:
> Das oben beschriebene Problem ist seit gestern auch gelöst, nachdem ein
> Doktorand den Cursor erst in das 2. Schlüsselwort des Defines bewegt und
> dann in AVR-Studio auf 'GO' geklickt hat.

zu irgendwas muß die (angehende) Promovierung ja nützlich sein.

von Marc (gierig) Benutzerseite


Lesenswert?

>Mir ist immer noch unklar wo im Dateisystem die blöde Datei liegt

unter dem Motto: kenne deine IDE

Nach dem Compiler durchlauf hast du im "Solution Viewer" im Baum oben
deine Abhänikeiten also auch die IO.h. Klicke doppelt drauf und du 
kannst sie öffnen....

Schau bei einfach geklickt auf die Datei ins Eigenschaften Fenster und
da steht dann der komplette Pfad.

von Stephan K. (mul1)


Lesenswert?

>unter dem Motto: kenne deine IDE

Bin ich auch sehr für.

Mein Problem ist, dass ich 2,5 Monate vor Ende meiner Arbeit lernen 
muss, wie ich dem AVR32 die Messwerte entlocke, dabei habe ich von 
AVR-Studio keine Ahnung, mit dem AVR32 arbeite ich zum ersten mal und 
FreeRTOS gab's bei mir auch noch nicht. Das alles ist schön verpackt in 
einem großen Softwareprojekt, das über 1,5 Jahre gewachsen ist und in 
dem der/die Programmierer nix von Coding-Style-Konventionen halten. 
Heißt, Zeilenlängen von 200 Zeichen sind keine Seltenheit und Funkionen 
gerne mal 200 oder 300 Zeilen lang.

Somit wird der 'Solution Explorer' zum 'Problem Explorer'. Ich bin ganz 
glücklich, dass ich dank der Vorlesung über Nebenläufige Programmierung 
wenigstens Mutex und Semaphore von einem Kochtopf unterscheiden kann, 
mit FreeRTOS kann ich deshalb immer noch nicht umgehen.

Aber immerhin sind meine Pins jetzt definiert und ich kann die H-Brücke 
ansteuern. Jetzt nur noch "schnell" aus dem Projekt das herausfiltern, 
was ich brauche, den Rest wegwerfen, dann wird die eigentliche 
Programmierung glaube ich gar nicht so wild.

Btw. hat AVR-Studio 6 wirklich keine Hilfe, oder bin ich nur zu blöd die 
zu installieren/aktivieren?

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.