Dunuin
27.09.2011, 23:35
Moin,
Ich habe die neuste Version von Bascom und wollte eben ein altes Programm kompilieren, was früher ging, aber nun lässt mich Bascom nicht mehr "Config Watchdog = 8192" nutzen und es wirft eine Fehlermeldung mit "...[8192]..." (ich gucke morgen bei der Arbeit nochmal, welcher Fehlercode es genau war) für die Zeile aus. Nun haben ja nicht alle AVRs einen Prescaler von 1024k, um auf die 8192ms zu kommen, also habe ich noch einmal ins Datenblatt geguckt und der Atmega48 kann das.
Daraufhin habe ich mir dann mal die m48def.dat angeguckt und ich glaube da stehen auch falsche Werte drin.
Dann wollte ich die WDP0 bis WDP3 Bits im Register mit "WDP0 = 1" und "Reset WDP0" usw. selbst auf 1001 setzen, um den WDT auf 8 Sek zu stellen, aber die Formulierung mag Bascom auch nicht, obwohl WDP0 bis WDP3 richtig farblich hervorgehoben werden auch die Abkürzung auch so in der m48def.dat für die jeweiligen Bits steht.
Kann sich da mal vielleicht jemand die m48def.dat ansehen und gucken, ob da wirklich was nicht stimmt? Ich habe die selbst versucht abzuändern, aber dann passte das Timing des WDTs überhaupt nicht mehr und der WDT Interrupt wurde ständig ausgeführt.
Was mich auch wunderte war, dass wenn ich die Definitionsdatei vom atmega48 und dem atmega48p vergleiche, unter der gleichen Einstellung für den WDT bei dem normalen atmega48 die Prescalerwerte in Tausenderschritten (also 2 bis 1024) angegeben werden und bei dem atmega48p die daraus resultiende Zeit in Millisekunden (also 16 bis 8192).
Edit:
Kann es sein, dass die Bits nicht direkt ansprechen kann und stattdessen "WDTCSR.WDP0 = 0" schreiben muss? Muss ich morgen auch noch einmal testen.
Ich habe die neuste Version von Bascom und wollte eben ein altes Programm kompilieren, was früher ging, aber nun lässt mich Bascom nicht mehr "Config Watchdog = 8192" nutzen und es wirft eine Fehlermeldung mit "...[8192]..." (ich gucke morgen bei der Arbeit nochmal, welcher Fehlercode es genau war) für die Zeile aus. Nun haben ja nicht alle AVRs einen Prescaler von 1024k, um auf die 8192ms zu kommen, also habe ich noch einmal ins Datenblatt geguckt und der Atmega48 kann das.
Daraufhin habe ich mir dann mal die m48def.dat angeguckt und ich glaube da stehen auch falsche Werte drin.
Dann wollte ich die WDP0 bis WDP3 Bits im Register mit "WDP0 = 1" und "Reset WDP0" usw. selbst auf 1001 setzen, um den WDT auf 8 Sek zu stellen, aber die Formulierung mag Bascom auch nicht, obwohl WDP0 bis WDP3 richtig farblich hervorgehoben werden auch die Abkürzung auch so in der m48def.dat für die jeweiligen Bits steht.
Kann sich da mal vielleicht jemand die m48def.dat ansehen und gucken, ob da wirklich was nicht stimmt? Ich habe die selbst versucht abzuändern, aber dann passte das Timing des WDTs überhaupt nicht mehr und der WDT Interrupt wurde ständig ausgeführt.
Was mich auch wunderte war, dass wenn ich die Definitionsdatei vom atmega48 und dem atmega48p vergleiche, unter der gleichen Einstellung für den WDT bei dem normalen atmega48 die Prescalerwerte in Tausenderschritten (also 2 bis 1024) angegeben werden und bei dem atmega48p die daraus resultiende Zeit in Millisekunden (also 16 bis 8192).
Edit:
Kann es sein, dass die Bits nicht direkt ansprechen kann und stattdessen "WDTCSR.WDP0 = 0" schreiben muss? Muss ich morgen auch noch einmal testen.