Hallo, irgendwie habe ich ein Problem. Bei meinem Controller ATXMEGA128A1 lassen sich die Clock und Osziparameter nicht verstellen. Will eigentl. zu Testzwecken beide auf 32 MHZ einstellen. //Clock-Speed 32 MHz CLK.CTRL = 0x01; //Oszi-Speed 32 MHz OSC.CTRL = 0x01; //Vorteiler A,B,C auf 0 einstellen CLK.PSCTRL = 0x00; //Timer-Wert mit 0 laden-->??? wird das hiermit gemacht ??? TCC0.CNT = 0x00; /*Timer-Top-Wert setzen*/ TCC0.PER = 31249; /*8 Vorteiler*/ TCC0.CTRLA = 0x05; /*Timer im Normalmodus*/ TCC0.CTRLB = 0x00; /*Interrupt konfigurieren*/ TCC0.INTCTRLA = 0x03; sei(); //ISR ISR(TCC0_OVF_vect){ LEDPORT.OUTTGL = 0b10101010; } LEDPORT-Einstellungen habe ich mal weggelassen. Probleme: 1. Einstellen auf 32 Mhz funzt nicht. Weder am Testboard noch in der Simulation im AVR Studio. Fehlt da etwas? Oder müssen die Einstellungen an eine bestimmte Stelle? 2. Der Controller arbeitet offenbar mit den Voreinstellungen. D.h. 2 MHz und Vorteiler Clockvorteiler 0 und Timer-Vorteiler 8. Nach meiner Rechnung sollte da-->8 Mhz / 8 = 250000 --> (1/250000)*31250=0,125 s --> die Test-LED mit pro Sek 8 mal toggeln. Passiert aber nicht. Sondern sie toggelt jede Sekunde. Warum ist das der Fall? Danke für eure Antworten!
hmm, hab jetzt nach 3 Stunden rumtüfteln und i-net durchforsten selber rausgefunden. Die Berechnung mit 2 Mhz / 8 = 250000 --> (1/250000)*31250=0,125 s, stimmt soweit. Keine Ahnung was vorhin falsch war. Um den Timer auf dem XMega umzustellen nutzt man folgenden Code: //es ist erforderlich erst einmal den Oszi auf den gewünschten Wert einzustellen OSC.CTRL = 0x02; // hier 32 MHz, 2 MHz entspricht 0x00 //Warten bis das eben vereibarte im Oszi-Status Register eingetragen ist while(!(OSC.STATUS & 0x02)); //Write/Execute Protection umgehen hierfür ist 0xD8 einzutragen CCP = 0xD8; //nun kann auch der Clock auf den gewünschten Wert eingestellt werden CLK.CTRL = 0x01; //wie gewünscht hier 32 MHz Gruß.
Hallo Talisker, Talisker schrieb: > hab jetzt nach 3 Stunden rumtüfteln und i-net durchforsten selber > rausgefunden. An der richtigen Stelle gesucht haette es vermutlich nur 3min. gedauert. ;-) Ich kann Dir nur waermstens die Application Notes (und die Beispiele dazu) empfehlen. http://www.atmel.com/dyn/products/documents.asp?category_id=163&family_id=607&subfamily_id=1965 Da gibt es auch eine Application Note fuer das Clock System mit Beispielcode. (AVR1003) MfG, Balze aka AVR Noob
Is ja nich so als hätte ich es nicht offen gehabt. Also das AVR1003 Dokument. Wenn ich jedoch ein Fuchs gewesen wäre, hätte ich einfach mal, wie du sagtest, die Beispiele angeschaut. Naja aus Fehlern lernt man. Das nächste mal schau ich mir gleich die Beispiele an. Spart Zeit und Nerven. Besten Gruß.
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.