Hi, es ist schon spät - vielleicht bin ich auch nur deswegen am Holzweg und finde nix mehr.. Aber: in Bascom wird ja die Taktfrequenz festgelegt $regfile = "m644def.dat" $crystal = 8000000 Jetzt würde ich gerne im Programm in Abhängigkeit von der eingestellten Taktfrequenz den Timer stellen. Wie kann ich auf die eingestellte Frequenz zugreifen? z.B. sekunde = 8000000 / 1024 /(256-ctimer2preload) 'aus dem Timerintervall Sekunde ableiten Das funktioniert, aber wie kann ich statt 8000000 den Wert von $crystal dynamisch übernehmen? so gehts jedenfalls (natürlich) nicht: Const Csekunde = $crystal / 1024 /(256 -ctimer2preload) Und gleich als nächstes: den Prescaler würd ich auch gleich weiterverwenden, muss ich da in Bascom wirklich auf die Registerebene lesen gehen oder gibts doch fertige Konstanten für diese Parametereinstellugnen.
die Angabe $crystal = 8000000 dient nur dem Compiler um Wartezyklen für Wait, Waitms usw. zu errechnen. Genau so werden die Wartezyklen für die serielle Übetragung beim Compilieren festgelegt. Diese Werte sind dann fest im Code (.hex) eingetragen und werden auf den Atmega übertragen. Bei einem Timer wird, ob mit oder ohne Prescale, immer der Takt als Ausgangstakt benutzt, der intern eingestellt ist (1MHz, 2MHz, .. 8MHz) oder der Takt, der durch eine externe Quelle, z.B. einen Quarz, vorgegeben ist. joe
Die Frequenz steht für dich zugreifbar in der Konstanten _XTAL. Weitere Konstanten findest du unter "Show Result" (CTRL-W) im Abschnitt "Constant".
mue-c schrieb: > Die Frequenz steht für dich zugreifbar in der Konstanten _XTAL. > Weitere Konstanten findest du unter "Show Result" (CTRL-W) im Abschnitt > "Constant". Super, vielen Dank - das wars - jetzt ist es nämlich möglich, durch Ändern des Quarzes einfach den Parameter $crystal anzupassen ohne sonst Programmänderungen durchführen zu müssen. Damit wird der Programmcode wieder ein Stück portabler, Übrigens einen workaround hätte ich auch gefunden (vielleicht für andere Konstanten) Const Cx = 8000000 'meine Frequenz $crystal = Cx const Cprescaler=cx/1000000 'weitere abgeleitete Konstante Wundert mich, dass der Compiler versteht, er dürfte wirklich einfach alle Konstanten durch Zahlen tauschen Jetzt geht sowohl _XTAL oder cx
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.