Forum: Mikrocontroller und Digitale Elektronik AVR32 Timer/Interrupt


von D. H. (Firma: Heazog) (heazog)


Lesenswert?

Hallo,

ich habe nun schon zwei Tage mit dem Thema Timer/Interrupt am AVR32 
verschwendet.
Ich habe schon die ganzen Beiträge in diesem Forum durchgelesen, teile 
des Datenblattes vom Mikrocontroller und 
http://www.atmel.com/Images/doc32012.pdf.
nun seit Ihr meine letzte Hoffnung. :)

Ich verwende:
- Atmel Studio 6
- EVK1105 (AT32UC3A)

Ich möchte:
- 4 Modellbauservo Ansteuerungssignale erzeugen
- Oder einfach ein Interrupt das mind. alle 1ms aufgerufen wird.


Mit den zwei Datenblättern (AT32UC3A & 
http://www.atmel.com/Images/doc32012.pdf) habe ich Anfangs eine 
"Waveform" generiert.
Als es jedoch darum ging auf welchem Port ich es ausgeben möchte, kam 
ich zu 
http://www.atmel.com/webdoc/evk1105/evk1105._expansion_headers.html

Wenn man diese zwei "Expansions Header" mit dem AT32UC3A Datenblatt 
vergleicht sieht man dass nur am TWI Header EIN möglicher Pin zur 
Ausgabe zu Verfügung steht. Da ich aber 4 brauche kann ich es so nicht 
machen.
Oder sieht das jemand anders?

Im forum hab eich folgende Datei gefunden:
http://www.mikrocontroller.net/attachment/highlight/156879

Jedoch verstehe ich da ein paar Sachen nicht:
-
1
AVR32_TC0.channel[0].cmr= 0x1 | AVR32_TC_WAVE_MASK;
Ist es überhaupt möglich Waveform zu verwenden obwohl man es nicht 
ausgibt sondern ein Programminterrupt auslößt? Wie könnte man dann auf 
ein TIOA/TIOB Ereignis auslösen?

Warum funktioniert clock 1 (0x0) nicht? Es löst dann einfach überhaupt 
nicht mehr aus..
(AT32UC3A "TABLE 12-4"
TIMER_CLOCK1: 32 KHz Oscillator
TIMER_CLOCK2: PBA clock / 2
)

-
1
INTC_register_interrupt(&timer1, AVR32_TC0_IRQ0,AVR32_INTC_INT0);
IRQ0 ist von channel[0], IRQ1 wäre von channel[1] oder?

Von wo genau kommt das "AVR32_INTC_INT0"?
egal ob hier INT0 oder INT1, die LED Blinkt gleich schnell..

Danke im Voraus. :)

: Bearbeitet durch User
von DingsDa (Gast)


Lesenswert?

Warum nimmst Du so ein überladenes EV-Board, wenn Du noch keine 
wirkliche Ahnung von der Materie hast?
Kauf Dir eine billiges Board von Pollin oder so, ein Programmer, eine 
Hand voll ATmega32 (oder ATtinys ) und gut ist.
Und lerne damit erst einmal die Basics.
Dann wirst Du auch verstehen, wie man so ein Teil handhabt und für seine 
Zwecke einsetzen kann.
Erst danach, wird Dir das EV-Board von Atmel Spass machen.

von D. H. (Firma: Heazog) (heazog)


Lesenswert?

Ne Hand voll ATmega32 habe ich eh.. auch schon viel Programmiert mit 
denen.. nur jetzt wollt ich mir eine Smartphone Steuerung basteln, und 
da ich dieses EV Bord schon zu Hause liegen gehabt habe, dachte ich dass 
ich gleich dieses nehme..
Hab mir dann zu dem MACB-Example noch dazuprogrammiert dass es eine 
TCP-Verbindung aufbauen kann und einen mini HTTP-Server..

das alles funktioniert auch schon super, jetzt fehlt eben nur noch die 
Servo ansteuerung..

von Fritz (Gast)


Lesenswert?

Daniel Herzog schrieb:
> ich habe nun schon zwei Tage mit dem Thema Timer/Interrupt am AVR32
> verschwendet.

Wenn du dabei etwas gelernt hast, waren sie nicht verschwendet.

Daniel Herzog schrieb:
> Ich habe schon die ganzen Beiträge in diesem Forum durchgelesen

In nur zwei Tagen? Wow.


Ok, genug mit dem Quatsch:

Daniel Herzog schrieb:
> Wenn man diese zwei "Expansions Header" mit dem AT32UC3A Datenblatt
> vergleicht sieht man dass nur am TWI Header EIN möglicher Pin zur
> Ausgabe zu Verfügung steht. Da ich aber 4 brauche kann ich es so nicht
> machen.
> Oder sieht das jemand anders?

Der Timer hat 3 Kanäle mit je 2 Ausgängen. Dann schaust du ins 
Datenblatt unter 12.7 und stellst fest, dass diese 6 Ausgänge auf 
PB23:28 oder PX14:19 gelegt werden können.

Und dann findest du heraus, welche 4 von diesen 12 Pins auf deinem Board 
am einfachsten zugänglich sind. Dafür stellt Atmel leider nur das hier 
zur Verfügung:

http://www.atmel.com/Images/EVK1105-Schematics_BOM.zip

Und du liegst richtig: Von den 12 Pins ist nur einer über einen 
Pin-Header zugänglich (PX16, gehört zur TCA1) und der Rest geht in 
Touchbuttons, LEDs, SDRAM, TFT und USB. Ob und wie du da ran kommst, 
musst du selbst herausfinden.

Da du dieses ganze Gedöns aber offensichtlich im Moment nicht brauchst, 
ist das ganz einfach das falsche Board für deinen Zweck.


Daniel Herzog schrieb:
> Im forum hab eich folgende Datei gefunden:

Wessen Code war das und in welchem Zusammenhang wurde er geposted? Woher 
weißt du, dass das funktioniert und kein Fehlersuchbild ist?

von D. H. (Firma: Heazog) (heazog)


Lesenswert?

Vielen Danke für die Antwort.

Fritz schrieb:
> Daniel Herzog schrieb:
>> ich habe nun schon zwei Tage mit dem Thema Timer/Interrupt am AVR32
>> verschwendet.
>
> Wenn du dabei etwas gelernt hast, waren sie nicht verschwendet.

Ja stimmt eh.. verschwendet ist vielleicht etwas falsch ausgedrückt.

>
> Daniel Herzog schrieb:
>> Ich habe schon die ganzen Beiträge in diesem Forum durchgelesen
>
> In nur zwei Tagen? Wow.
>
>
> Ok, genug mit dem Quatsch:

Ich meinte damit wenn man mehrlmals nach "AVR32 Timer Interrupt" oder 
ähnliche Begriffe googelt kommt man immer zu den gleichen ca. 7 
mikrocontroller.net-Beiträgen - und die habe ich schon alle gelesen.

>
> Daniel Herzog schrieb:
>> Wenn man diese zwei "Expansions Header" mit dem AT32UC3A Datenblatt
>> vergleicht sieht man dass nur am TWI Header EIN möglicher Pin zur
>> Ausgabe zu Verfügung steht. Da ich aber 4 brauche kann ich es so nicht
>> machen.
>> Oder sieht das jemand anders?
>
> Der Timer hat 3 Kanäle mit je 2 Ausgängen. Dann schaust du ins
> Datenblatt unter 12.7 und stellst fest, dass diese 6 Ausgänge auf
> PB23:28 oder PX14:19 gelegt werden können.
>
> Und dann findest du heraus, welche 4 von diesen 12 Pins auf deinem Board
> am einfachsten zugänglich sind. Dafür stellt Atmel leider nur das hier
> zur Verfügung:
>
> http://www.atmel.com/Images/EVK1105-Schematics_BOM.zip
>
> Und du liegst richtig: Von den 12 Pins ist nur einer über einen
> Pin-Header zugänglich (PX16, gehört zur TCA1) und der Rest geht in
> Touchbuttons, LEDs, SDRAM, TFT und USB. Ob und wie du da ran kommst,
> musst du selbst herausfinden.

Genau das habe ich eben eh auch schon auf diese Weise rausgefunden.
Eine Idee wäre auch noch gewesen über die freien "Löcher" in denen man 
Stiftleiten reislöten kann auf diese Pins zugreifen, jedoch kamm man in 
einem Plan erkennen dass keiner dieser Kontakte direkt zum AT32UC3A 
führt..

>
> Da du dieses ganze Gedöns aber offensichtlich im Moment nicht brauchst,
> ist das ganz einfach das falsche Board für deinen Zweck.
>

Das stimmt, ich glaube am einfachsen wäre es jetzt eh wenn das EVK-Borad 
einfach einen ATmega32 sagt wie schnell die Motoren laufen sollen, und 
der ATmega32 dann einafch dieses Signal erzeugt.

>
> Daniel Herzog schrieb:
>> Im forum hab eich folgende Datei gefunden:
>
> Wessen Code war das und in welchem Zusammenhang wurde er geposted? Woher
> weißt du, dass das funktioniert und kein Fehlersuchbild ist?

Laut Threadersteller funktioniert sein Code am Schluss (drittletzter 
Post)
jedoch hätte er nicht gefragt wenn er sich damit top auskennen würde, 
also könnte es schons ein dass der Code eh falsch ist..

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.