Gast
#355751
Hallo Leute! Ich programmiere AVR-MEGAs mit dem Codesvision. Beim aktuellen Projekt verwende ich den 16-Bit Timer 1 des ATMEGA2561. Wenn ich jetzt z.B. das 16-Bit OCR1A-Register beschreiben möchte sieht das so aus. OCR1AH=0x10; OCR1AL=0xFE; Der 16-Bit Wert wird erst übernommen wenn der zweite Befehl durch ist. Zwischen den beiden Befehlen darf laut Datenblatt, so wie ich das verstanden habe, kein IRQ auftreten, da sonst der gesamte 16-Bit Wert nicht geschrieben werden kann. Die einzige Möglichkeit besteht nun darin, die IRQs zu sperren. Dies mach ich mit: #asm("CLI") OCR1AH=0x10; OCR1AL=0xFE; #asm("SEI") Nun könnte es aber in diesem Fall sein, dass der IRQ von einer übergeordneten Funktion, aus welchen Gründen auch immer, bereits gesperrt wurde und von dieser Timerwertzuweisung nicht freigegeben werden darf. Wie kann ich feststellen, ob die IRQs bereits gesperrt sind oder nicht? Danke für eure Antworten. Tut mir leid, bin leider noch nicht ganz so sattelfest. Tschüss Martin