Forum: Mikrocontroller und Digitale Elektronik Register werden nicht erkannt


von Michael E. (fischos)


Lesenswert?

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 (:

von nicht "Gast" (Gast)


Lesenswert?

Du hast
#include <avr/io.h>
vergessen...

von spess53 (Gast)


Lesenswert?

Hi

>Nur bekomme ich für jedes Register die Meldung "undeclared", an was
>könnte das denn liegen?

Falscher Controller eingestellt?

MfG Spess

von Rolf Magnus (Gast)


Lesenswert?

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

von Michael E. (fischos)


Lesenswert?

Nein, der AVR Simulator ist eingestellt, sowie der ATmega16.

Zum obigen, avr/io.h ist inkludiert, hatte nur eine Zeile zu wenig 
kopiert (;

von spess53 (Gast)


Lesenswert?

Hi

>  OCR0A = 125-1;

OCR0A gibt es nicht -> OCR0

>ISR (TIMER0_COMPA_vect)

dürfte es auch nicht geben.

MfG Spess

von Oliver (Gast)


Lesenswert?

=> 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

von nicht "Gast" (Gast)


Lesenswert?

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..

von Michael E. (fischos)


Lesenswert?

Hab mich nun ein bisschen mit dem Datenblatt "vergnügt" und habe es nun 
umgeändert -> compiliert nun einwandfrei!

von Michael E. (fischos)


Lesenswert?

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.

von Daniel F. (df311)


Lesenswert?

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)?

von Michael E. (fischos)


Lesenswert?

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.

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
Noch kein Account? Hier anmelden.