Guten Tag! Habe nun den Code hier aus der Seite für eine stinknormale Uhr übernommen. Ich arbeite mit dem AVR Studio und programmiere den ATmega16. #include <avr/interrupt.h> #include <stdlib.h> volatile unsigned int sekunde; volatile unsigned int minute; volatile unsigned int stunde; int main(void) { //lcd_init(); TCCR0A = (1<<WGM01); TCCR0B |= (1<<CS01); OCR0A = 125-1; TIMSK |= (1<<OCIE0A); sei(); while(1) { } } ISR (TIMER0_COMPA_vect) { sekunde++; if(sekunde == 60) { minute++; sekunde = 0; } if(minute == 60) { stunde++; minute = 0; } if(stunde == 24) { stunde = 0; } } Nur bekomme ich für jedes Register die Meldung "undeclared", an was könnte das denn liegen? würde mich über eine schnelle Antwort sehr freuen (:
Gast
#2723793
Du hast #include <avr/io.h> vergessen...
Gast
#2723794
Hi >Nur bekomme ich für jedes Register die Meldung "undeclared", an was >könnte das denn liegen? Falscher Controller eingestellt? MfG Spess
Gast
#2723795
Michael E. schrieb: > Nur bekomme ich für jedes Register die Meldung "undeclared", an was > könnte das denn liegen? Siehe http://www.nongnu.org/avr-libc/user-manual/group__avr__io.html
Nein, der AVR Simulator ist eingestellt, sowie der ATmega16. Zum obigen, avr/io.h ist inkludiert, hatte nur eine Zeile zu wenig kopiert (;
Gast
#2723802
Hi > OCR0A = 125-1; OCR0A gibt es nicht -> OCR0 >ISR (TIMER0_COMPA_vect) dürfte es auch nicht geben. MfG Spess
Gast
#2723806
=> Datenblatt lesen, verstehen, Code anpassen. Oder die Quelle, von der du den Code kpoierst, genau lesen, und die wenigstens verstehen (und den richtigen Prozesortyp verwenden) .Ganz ohne "verstehen" funktioniert das nicht. Oliver
Gast
#2723813
Die Register bei den "alten" AVRs heisen ein wenig anders ->wie schon erwähnt ORC0 statt OCR0A (beim Mega16 gibt einfach nur eine Compare-Einheit für den Timer0) Deswegen sollte man bei der Übernahme von fremdem Code erst schauen, für welchen Typ genau der geschrieben ist, und dann schauen, ob die Register gleich benamst sind..
Hab mich nun ein bisschen mit dem Datenblatt "vergnügt" und habe es nun umgeändert -> compiliert nun einwandfrei!
Gleich vorweg ein Sorry für den Doppelpost. Nur habe ich jetzt das Problem, das mein Display leider nicht mehr funktioniert bzw. nicht das ausgibt, was ich will. Versorgung u. Kontrastregelung durch ein Potentiometer funnktionieren. Nur gibt es mehr einfach nichts aus. Es werden lediglich diese Balken angezeigt (Progressbar ähnlich). Das Ganze hat schon einmal einwandfrei funktioniert, jedoch aus unerklärlichen Gründen funktioniert es jetzt nicht mehr.
Michael E. schrieb: > Das Ganze hat schon einmal einwandfrei funktioniert, jedoch aus > unerklärlichen Gründen funktioniert es jetzt nicht mehr. falsche takt-einstellung (F_CPU, quarz, fuses)?
Leider ist das wohl größte Problem, dass es ein LCD ist, dass ich geschenkt bekommen habe bzw. in der Schule gefunden habe. Somit ist nichts bekannt, kein Name ist auf dem Display zu finden u. auch folglicherweise kein Datenblatt.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.