Forum: Mikrocontroller und Digitale Elektronik Start mit Atmel ASF &instance


von Tobi (Gast)


Lesenswert?

Hallo,

ich habe etwas Startschwierigkeiten mit dem ASF im AVR Studio. Bei der 
Konfiguration eines Moduls wird immer der pointer "&tc_instance" o.ä. 
verwendet. Dieser geht dann auf struct tc_module tc_instance;

Wie kann ich aber definieren, welches Modul gemeint ist? In diesem 
Beispiel, welcher der vielen Timer-Counter?

Konkret habe ich das Problem, dass ich nur einen der 3 Timer des SAMD21 
zum Laufen bekommen. Ich verstehe allerdings auch nicht, wie definiert 
wird, welche "instance" gerade angesprochen wird. Bei der 
tc_init(&tc_instance, TC6, &config_tc); ist es klar. Da steht ja direkt 
TC6 drin. Aber wie ist das Konstrukt mit der &tc_instance zu verstehen? 
z.B. bei tc_enable(&tc_instance);

Gruß,
Tobi

von Basti (Gast)


Lesenswert?

Ich kenn die ASF nur für XMega und wunder mich gerade das es hier solche 
Unterschiede gibt. Atmel wirbt ja damit das zwischen XMega und ARM dank 
ASF recht zügig gewechselt werden kann.
Hier meine Idee: In der Init wird die instance mit Werten befüllt und da 
steht unter anderem drin, welcher Timer es ist... Also brauchst du viele 
verschiede instance Ableger und darfst die nicht mit einem andere 
Initaufruf übrschreiben ...

von N. B. (saint1234)


Lesenswert?

Tobi schrieb:
> z.B. bei tc_enable(&tc_instance);

Hallo,

Also das ASF hat bereits defines für deinen Controller angelegt. Dort 
stehen die Adressen der verschiedenen Module.

Wenn du mal ein einen Pin nimmst, bei mir sind die durchs ASF definiert 
als z.B. AVR32_PIN_PA07 in der Controller Headerdatei (uc3l064.h). 
(finden kannst du den Header wenn du ALT+G drückst wenn du einen Pin 
markiert hast und dann in die Headerdatei gehst)

Dort suchst du dann nach TC.

Das Konstrukt verlangt eine Adresse des Timers von dir um diesen zu 
enabeln.

Bsp:

in uc3l064.h

#define AVR32_TC0        (((volatileavr32_tc_t*)AVR32_TC0_ADDRESS))

Dein Funktionsaufruf würde dann lauten :

tc_enable(&AVR32_TC0)

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.