Bei: O0 --> 16sek
O1 --> 16sek
O2 --> 1sek
O3 --> 1sek
Os --> 1sek
dass er ohne optimierung die zeit nicht einhält ist seltsam, hab ich noch nicht probiert
um wie viel weicht es denn ab ?
Bei: O0 --> 16sek
O1 --> 16sek
O2 --> 1sek
O3 --> 1sek
Os --> 1sek
also 16 sekunden sagt mir, dass irgendwas mit der takteinstellung nicht hinhaut!
vermutlich vergehen zu viele takte zwischen
versuchs mal mit ner zwischenvariable oder nem festwert, alsoCode:CCP = CCP_IOREG_gc; CLK.CTRL = (CLK.CTRL & ~CLK_SCLKSEL_gm) | CLK_SCLKSEL_RC32M_gc;
alternativ kannste dir die bitmaske für das CLK.CTRL register direkt reinschreiben also 0bxxxxxxxx ... berichte mal über die ergebnisseCode:unsigned char temp = (CLK.CTRL & ~CLK_SCLKSEL_gm) | CLK_SCLKSEL_RC32M_gc; CCP = CCP_IOREG_gc; CLK.CTRL = temp;
PS : laut datenblatt gibt es geschützte register wie z.B. das clocksource CLK.CTRL, die können nur beschrieben werden, wenn vorher das CCP register mit dem pasenden wert beschrieben wird und dann auch nur exakt 4 takte lang, also wenns zu lang dauert pustekuchen ^^
Also mit der zwischenvariable funkt!!!!!
danke dir ^^ gleich mal im datenblatt vermerkt ^^
aber dass der beim optimieren sooo sehr schlampt und die formel aus festwerten nicht auflöst find ich schon ein wenig krass ....
ist vielleicht jemand der hier mitließt firm genug den zeitlichen unterschied zwischen der optimierten MIT formel variante und der OHNE formel variante zu vergleichen ?
ich dachte immer, dass macht kein unterschied ob ich bits schiebe oder gleich binär/hex schreibe O_o
Das Problem ist, dass hier zuerst der aktuelle Wert des CLK.CTRL-Registers ausgelesen werden muss. Somit besteht die Verknüpfung nicht nur aus Festwerten und kann daher auch nicht direkt aufgelöst werden.
Da aber nach dem Reset alle Bits des CLK.CTRL-Registers sowieso komplett auf 0 stehen, kann man sich dasauch sparen und einfach nurCode:(CLK.CTRL & ~CLK_SCLKSEL_gm)schreiben, das verkürzt die ganze Sache ungemein.Code:CCP = CCP_IOREG_gc; CLK.CTRL = CLK_SCLKSEL_RC32M_gc;
Gruß,
askazo
ach stimmt ja ... arrrgh kein-kaffee-blind ... naja das register aber vorher mal auszulesen ist aber auch nicht unbedingt verkehrt!
nur in der situation ohne optimierung natürlich n killer ^^, es sei denn man machts mit ner variable vor dem freischalten
Lesezeichen