Timer im Tiny13

OP #215156
Lesenswert?

Moin moin

Irgendwie habe ich gerade leichte schwierigkeiten den Timer im Tiny13
für mein Programm richtig zu verwenden.

Der Codeauszug:

interrupt:
  in savesreg,sreg
  inc r21
  cpi r21,10
  brne _int0
  sbr flags,refresh_display
  clr r21
_int0:
  out sreg,savesreg
  reti

Stück aus dem hauptsprogramm:

ende:
  sbrc flags,refresh_display
  rjmp mai0
  rjmp ende

Das ganze soll alle 10 Interrupts halt das refresh_display bit setzen
in einem selbstgebastelten Flag register, damit das Hauptprogramm das
display mit neuen Daten füttert.

Das tolle ist: es geht nicht :)

wenn ich in der interrupt routine "manuell" ein zeichen immer wieder
auf das display ausgebe, funktioniert das einwandfrei. ergo= der
timerinterrupt funktioniert.

allerdings halt nicht mehr in dieser obigen kombination.

Umgebung: Tiny13,AVR Studio,PonyProg
Gast #215161
Lesenswert?

Hi

Esgibt einen Unterschied zwischen den Befehlen SBI und SBR (abgesehen
vom Ziel). Bei SBI gibt der Parameter die Bitnummer (0..7) an.
Der Parameter von SBR ist eine Bitmaske (0..255). Das heisst wenn du 0
benutzt wird kein Bit gesetzt. Der Wert 1 den du dann benutzt hast
entspricht der Maske für Bit 0.

MfG HG
#215162
Lesenswert?

@Hartmut:
Danke, genau das meine ich die ganze Zeit...

Thorsten:
Du solltest öfters mal die Online-Hilfe zu AVR-Studio benutzen. Cursor
auf einen (unklaren) ASM-Befehl setzen und F1 drücken. Das ist manchmal
sehr aufschlussreich. Leider kommt man damit nicht an die Hilfe zu den
Direktiven und Operatoren, die erreichst du aber über den Menüpunkt
HELP.

Bit- & Bytebruch...
...HanneS...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren