mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer controller


Autor: J.Pascal (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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".

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.