Moin,
ich habe auf dem ATtiny25 auch noch kein Assembler geproggt, gut geklaut ist aber halb programmiert (
). Nur, wie kommst Du auf, dass es auf dem ATmega8 so "einfach" sei wie auf dem tiny?
Wenn Du nach "CLKPR" im Tiny-Doc suchst, findest Du "prescaler".
Wenn Du nach "CLKPR" im ATmega8-Doc suchst, findest Du nix.
Mit "prescaler" in der Suche beim ATm8 nur den "Counter" und den "Watchdog".
Beim Tiny hast Du einen 8MHz internen Oszillator, der normalerweise durch den Teiler auf 1 MHz clock (der Prozessor "fühlt" nur 1 MHz) reduziert wird. Beim ATmega8 kannst Du keinen Teiler per Soft einstellen, ergo auch nicht die gefühlte Geschwindigkeit des Prozessors (korrigiere man mich bitte, falls ich hier Mist erzähle).
Zum Setzen auf 8MHz nimmt man beim ATmega8 am besten die Fuse bits, siehe besonders CKSEL (suche "CKSEL3..0") und CKOPT.
Das OSCCAL, das Du ansprichst, ist das "Calibration Byte", mit dem Du die Frequenz etwas hin- und herschieben kannst (ggf. zum -> Kalibieren), aber kein Teiler im Sinne wie beim Tiny.
Aber hier ein Beispiel für OSCCAL: So kann man den internen Prozessortakt etwas (!) entschleunigen (oder beschleunigen, mit OSCCAL=255). Obacht: Serielle Kommunikation und EEPROM-Zugriff gehen dann eventuell nicht mehr...
Code:
dim OSCCALval as Byte ' für den Originalwert...
OSCCALval=OSCCAL ' OSCCAL merken zum zurückschreiben
OSCCAL=0 ' Es ruhiger angehen lassen, es ist eh' dunkel (nix passiert...)
' hier langsamer (ca. 50%)
' . . .
OSCCAL=OSCCALval ' Originalwert
' hier wieder "normal"
Cheers
Christoph
Lesezeichen