Habe einen AT MEga 8515 mit einem externen 8 MHZ tackt betrieben. in AVR Studio geht alles, in Realität erkene ich an den LED´s an port A, das der erste interrupt nach 7,5 Sekunden auftritt. jedoch muss er dann diesen interrupt sehr häufig ausführen, da, wenn ich das Bord mit den LED´s schüttel ein Blinken feststellen kann. Hatte zuerst die Fusebits in verdacht, habe die dann in den Auslieferungzustand laut Datenblatt gebracht, doch der Timer ging immer noch nicht. Vermute das ich einen Fiesen Fehler im Programm habe. ich habe aus dem Programm nun alles ausser den Timer rauskopiert, funzt aber immer noch nicht. Habe bis jetzt noch nicht mit einem Timer gearbeitet. hat jemand ne Ide, was ich falschgemacht habe ? Marco Marco
Ob der ASM Code stimmt weiss ich nicht, aber ich hatte mal ein Problem mit dem Timer eines 8515 weil ich ihm zu wenig Spannung gegeben hatte... Soweit ich mich erinnern kann waren es etwas unter 4.5V, und ausser den Timern lief auch alles richtig... mfg Andreas
"The TCNTn, OCRnA/B/C, and ICRn are 16-bit registers that can be accessed by the AVR CPU via the 8-bit data bus. The 16-bit register must be byte accessed using two read or write operations".... "To do a 16-bit write, the high byte must be written before the low byte. For a 16-bit read, the low byte must be read before the high byte." Du beschreibst nirgends OCR1AL. Das Beschreiben des Low-Bytes eines 16-Bit-Registers triggert den Schreibvorgang - zumindest interpretiere ich das Datenblatt so.
Genau, das ist ein beliebter Fehler. Seite 99 im Datenblatt beschreibt den Zugriff. Der Wert wird erst beim Schreiben des Low-Bytes übernommen, in Deinem Fall also nie.
out ocr1ah,high(DELAYF) out ocr1al,low(DELAYF) Versuchs mal so ;)
> out ocr1ah,high(DELAYF) > out ocr1al,low(DELAYF) Das dürfte so nicht gehen, denn "out" geht nur mit Registern, nicht mit Konstanten, "high()" und "low()" dagegen geht nicht mit Registern, sondern nur mit Konstanten. Duck & wech... ...
DELAYF ist ein Register, das 8 Bit breit ist. Da gibts eh kein 'High' und 'Low'. Warum auch so kompliziert? Einfach ldi TEMP, 0x00 out ocr1ah, DELAYF out ocr1al, TEMP
Danke, Fehler behoben !!! Seber baut man(n) immer Fehler ein, und findet sie nie. Danke an alle Marco
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.