Timer controller

Gast #515006
Lesenswert?
• ▲
▼
Hallo Leute, ich versuche ein programm im c zu schreiben. in meinem 
programm möchte ich jede 70ms ungefährt ein interrupt aufrufen um das 5. 
bit des Ports D(OC1A)Toggle. ich habe ein code geschrieben aber bei der 
kompilierung habe ich 2 fehler meldung und ich verstehe nicht was die 
fehler bedeutet. ich zeige hier Ihnen mein code und untern steht die 
Fehler meldung. und ich bitte Ihre Hilfe P.S.: meine Platine ist die 
ATmega16 von ATmel und ich bin eine new kommen im Bereich 
Mikrocontroller Programmierung
und ich Bitte Ihre verständnis.


#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#define isr(vector)

int main(void){
 DDRD=0x32;                       /*pin 5 des Ports D setzen*/
 TCNT=0x0000;                    /*Counter auf null initialisieren*/
 OCR1A=0x03EA;                   /*es wird bis zu 1000 dez. gezählt*/


      ISR_Timer(){

        TIMSK=0x10;       /*output Compare A Match Interrupt Enable*/
        TIFR=0x10;        /*Aufruf des Interrupt um das bit zu Toggle*/
        }
 while(1){
            }


        return 0;
        }

Fehler meldung:
-------- begin --------
avr-gcc (GCC) 4.1.1 (WinAVR 20070122)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is 
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.

make.exe: *** No rule to make target `main.o', needed by `main.elf'. 
Stop.

> Process Exit Code: 2
Gast #515049
Lesenswert?
• ▲
▼
Ich glaube, Dir fehlen wirklich grundlegende Verständnisse. Du solltest 
Dir das Tutorial durcharbeiten. Da steht eigentlich alles drin.

> TIMSK=0x10;       /*output Compare A Match Interrupt Enable*/
Wenn Du den Compare-Ausgang OC1A toggeln willst, brauchst Du den 
Interrupt nicht freizugeben. In Deinem Fall sogar im Gegenteil: Wenn Du 
ihn freigibst, aber keine ISR dazu geschrieben hast, führt jedes 
Compare-Ereignis unweigerlich zu einem Reset!

> TIFR=0x10;        /*Aufruf des Interrupt um das bit zu Toggle*/
Damit löschst Du nur das Interrupt-Flag. Du kannst "den Interrupt" nicht 
auf diese Weise vom Programm aus "aufrufen".
Gast #515053
Lesenswert?
• ▲
▼
Ach ja, die Fehlermeldung besagt eigentlich nur, dass Du vermutlich 
vergessen hast, bestimmte Einstellungen zu machen. Ich gehe davon aus, 
dass Du mit AVRStudio arbeitest. Da musst Du erst mal in den 
Configuration Options den Controllertyp (wichtigst, da sonst nicht 
bekannt ist, welche io.h eingebunden werden soll) und die CPU-Frequenz 
(in Deinem Fall eher egal, weil sie in Deinem Programm nicht verwendet 
wird) eingeben und solltest auch das Optimierungslevel auf -Os stellen 
(jedenfalls nicht auf -O0 lassen).

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.