Hallo, ich brauche eure Hilfe. Ich benutze das AT91SAM7S256-EK Board und wollte mit Hilfe des Timers LED mit 1 Hz blinken lassen. Beim debuggen sieht man, dass der Timerausgang (MTIOA) nicht wechselt. Habt ihr einen Tipp für mich was ich bei den Timereinstellungen falsch mache? Ich wäre sehr dankbar! P.S.: Den Quellcode ist im Anhang! Gruß Alex
Glaube du mußt die Clock erst starten indem du TC_CCR.SWTRG=1 schreibst
Ah, das war ein sehr guter Tipp, danke! Der Timer läuft, aber die LED blinkt immer noch nicht. Ist der Befehl zum Auslesen des MTIOA-Registers eigentlich richtig? (Habe gerade ein Brett vor Kopf...)
Guck dir doch nochmal das Blockschaltbild genau an. So wie ich das sehe sind MTIOx externe Eingänge, mit denen man einen Capture auslösen kann, keine Ausgänge. Aus dem Quellcode werde ich deshalb nicht ganz schlau. Was du brauchst ist vermutlich Register TC_RC und das TC_SR.CPCS flag...
Ich benutze ja keinen Capture Mode, sondern Waveform Mode und da sind sie die Ausgänge. Wie gesagt, der Timer funktioniert, MTIOA wechselt fleißig zwischen 1 und 0, nur am PIOA kommt nichts davon an.
Ähhh, ja moment, das hier ist Käse:
1 | if (AT91C_BASE_TC2->TC_SR == AT91C_TC_MTIOA) |
Muss natürlich heißen:
1 | if ((AT91C_BASE_TC2->TC_SR & AT91C_TC_MTIOA) != 0u) |
Das Einzige, was sich ändert ist MTIOA. CPAS und CPCS sind 0, wie der Rest auch.
jaaa, das war es, danke! Das Einzige, was mich noch bisschen stört ist die Tatsache, dass das Tastverhältnis der Led >50% ist, d.h. die LED ist längere Zeit an als aus. da muss ich mir wohl noch die RA- und RC-Register genauer anschauen.
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.