Start mit Atmel ASF &instance

Gast #4207692
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
Gast #4207838
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 ...
#4208097
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)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren