Hallo, ich wollte den im Forum gefundenen Code der für einen mega8 geschrieben ist für meinen mega16 anpassen. also habe ich .include"m8def.inc" in .include"m16def.inc" geändert. dann die entsprechende Frequenz eingetragen .equ xtal = 16000000 als nächstes im AVR Studio mit Build F7 auf Fehler getestet Hier bekomme ich jetzt folgende Fehlermeldungen C:\Programme\Atmel\AVR Tools\AvrStudio4\timer1.asm(34) : warning: Immediate byte operand out of range C:\Programme\Atmel\AVR Tools\AvrStudio4\timer1.asm(64) : warning: Immediate byte operand out of range Program memory usage: Code : 41 words Constants (dw/db): 0 words Unused : 11 words Total : 52 words Assembly complete with no errors. Deleting 'C:\Programme\Atmel\AVR Tools\AvrStudio4\timer1.eep' Wenn ich den wert von ".equ debounce = 256" auf 255 ändere bekomme ich keine Fehlermeldung mehr aber damit dürfte ein Sekundengenauer Takt nicht mehr funktionieren. Ich habe zur Kontrolle an PIN 1 (PB0)eine LED angschlossen wie kann ich diese in den Code einbinden damit sie im Sekundentakt leuchtet?
Hab' mir den Code nicht genau angesehen, aber debounce dient doch lediglich der Tastenentprellung, denke ich.
soweit ich den code verstanden habe wird mit debounce ein wert festgelegt der für die Berechnung des Comparewertes OCR1A benötigt. hier die originalerklärung Als Beispiel wird 11,0592MHz gewählt, welches ein übliches Baudratenquarz ist, d.h. damit können die UART Standardbautraten erzeugt werden. Der Softwareteiler wird mit 256 gewählt und kann somit nur mit einem einzigen Byte realisiert werden. Für größere Werte muß der Softwareteiler als int (2 Byte) deklariert werden. Bei kleineren Werten als 256 muß man beachten, daß der 2.Faktor immer noch in 2 Byte paßt, um als Comparewert für T1 verwendet zu werden. Mit 256Hz ergibt sich eine Timerinterruptzeit von 4ms, die auch sehr gut zum Entprellen von Tasten benutzt werden kann. Eine Entprellroutine kann also bequem in den Timerinterrupt mit eingefügt werden ende des Zitates als demnach wird 265 als wert für den softwareteiler verwendet und wenn ich diesen wert ändere ist der sekundentakt nicht mehr genau oder??
hallo ist denn hier keiner der sich damit auskennt? Es sind bestimmt Anfängerfehler die ich mache mfg torsten
ldi prescaler, debounce lade Register R18 mit 256. kann ja sein, dass Peter's Compiler in früheren Versionen nicht gemeckert hat, aber wenn man in ein Register 256 schreibt, kommt man vielleicht auf eins oder so...? Ich weiss jedenfalls nicht, was mit dem 9ten bit passiert, jedenfalls gibt es einen Überlauf. Gruß Axel
hi Axel, kann ich den Code so verwenden oder muss angpasst werden und wenn schon mal jemand antwortet den zweiten Teil meiner Frage betreffend ich habe an PIN 1 PB0 ein Led inkl. Vorwiederstand an VCC wie kann ich den Sekundentakt ausgeben? mfg Torsten
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.