www.mikrocontroller.net

Forum: Compiler & IDEs Fehlermeldung TIMSK und interrupt.h


Autor: Andreas L. (andreasl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich bin ein Anfänger in Sachen AVR und GCC, und ich brauche einen 
Hinweis.
Ich habe eine Lauflicht Code im Netz gefunden und möchte den nun in 
einen Mega88 überspielen. Leider spielt mein AVR Studio/WINAVR nicht mit 
und erhalte eine Fehlermeldung: ../main.c:28: error: `TIMSK' undeclared 
(first use in this function)
Ich habe ein wenig nachgelesen und TIMSK soll in der interrupt.h 
declared sein. Wenn ich diese Datei mit einem Editor öffne finde ich 
keine Zeile mit TIMSK.

der Programm Code:
#define F_CPU 80000000

#include <avr/io.h>
//#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdint.h>
#include <stdio.h>
//---------------------------------------------------------------------------
//Globale Variablen
//---------------------------------------------------------------------------

volatile unsigned int takt_1s = 0; //Wird alle 1s von Timer-ISR auf
                  //1 gesetzt und in main() bearbeitet.

volatile unsigned int schritt = 0; //aktueller Programmschritt

//---------------------------------------------------------------------------
//Hauptprogramm
//---------------------------------------------------------------------------



int main(void)
{
  DDRB=0b11111111;    //Port B alles Ausgaenge

  TIMSK=(1<<TOIE1) | (1<<=OCIE1A) | (1<<OCIE1B); //Timer 1 Overflow      und Compare
                        //Match Interrupts einschalten



  TCCR1B=(1<<CS12);  //Timer 1 mit Prescaler=256 von int. Clock (bei 16Mhz wird
            //Timer 1 alle 16us um 1 erhoeht)


  OCR1AH=0b00000010;  // Timer 1 Compare Match A bei 625
  OCR1AL=0b01110001;  // (erzeugt Takt von 10ms)

  sei();        // Globale Interrupts einschalten

  while(1);      // Beginn der Endlosschleife

    {
      if(takt_1s==1)
        {
          takt_1s=0;

          if(schritt==0)    PORTB=0b00000000;
            
            else if (schritt==1) PORTB=0b00000001;
            else if (schritt==2) PORTB=0b00000010;
            else if (schritt==3) PORTB=0b00000100;
            else if (schritt==4) PORTB=0b00001000;
            else if (schritt==5) PORTB=0b00010000;
            else if (schritt==6) PORTB=0b00100000;
            else if (schritt==7) PORTB=0b01000000;  
            else if (schritt==8) PORTB=0b10000000;

            schritt++;
            if (schritt>=9) schritt=0;
        }//if schleife
    }//while(1)

  return(0);
}//void main


//-------------------------------------------------------------------------
// Interrupt Subroutinen
//-------------------------------------------------------------------------


ISR (TIMER1_OVF_vect)          // Timer 1 Ueberlauf

{

}

ISR (TIMER1_COMPA_vect)          // Timer Compare Match A

  {
    static unsigned long int zaehler=0;
    TCNT1H=0;            // Timer 1 zurücksetzen
    TCNT1L=1;
    zaehler++;            // Zaehler alle 10ms erhoehen
    if (zaehler>=100)        // Zaehler >100 bedeutet 1s
    
    {
      zaehler=0;
      takt_1s=1;
    }
  
  }
  
  
ISR (TIMER1_COMPB_vect)          // Timer 1 Compare Match B

{

}
  

was mache ich falsch. Ich habe diesen Code von Hand eingegeben und zur 
Sicherheit den Code noch einmal fertig von der HP gezogen, aber es kommt 
die gleiche Fehlermeldung.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich habe ein wenig nachgelesen und TIMSK soll in der interrupt.h
> declared sein.

Nein, es ist in der zum Controller gehörenden ioXXX.h definiert (wird 
von io.h eingebunden). Aber beim Mega88 gibt es kein TIMSK, sondern 
TIMSK0, TIMSK1 und TIMSK2.
Der Code ist nun mal nicht für einen Mega88, du musst ihn erst 
umschreiben.

Autor: Andreas L. (andreasl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, da werd ich wohl einiges dazu im Datenblatt zum Mega88 finden.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Extra für dich hat Atmel auch was dazu geschrieben:

http://www.atmel.com/dyn/resources/prod_documents/...

Oliver

Autor: Andreas L. (andreasl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das kauf ich dir ab!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.