mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt in ausgelagerter Funktion?


Autor: marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ich habe da mal eine Frage zum Timer-Interrupt.
Ich verwende den ATmega16 zum programmieren.

Also ich habe meine Funktionen in *.c bzw. *.h Dateien ausgelagert.
In einer meiner Funktionen brauche ich einen Timer, den habe ich auf 1ms 
eingestellt. Im main-Programm brauche ich auch einen Timer.

Ich wollte es so machen, dass ich in der Funktion den Timer1 und im 
main-Programm den Timer0 verwende.


Aber irgendwie bin ich da skeptisch, ob die Profis das so machen würden 
;-)
Soll ich es lieber so machen, dass die Variable, die in der Funktion 
hochgezählt werden soll, einfach beim Funktionsaufruf mit übergebe?

Autor: Haudrauf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein. Im TimerInterrupt setzt man ein flag : TimerCame=1 und im main 
prueft man dieses Flag :

if (Timercame==1) {
 ...
 TimerCame=0;
 }

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Im main-Programm brauche ich auch einen Timer.
Wofür?

Üblicherweise setzt man in der ISR ein Flag und fragt das in der 
main-Loop ab.

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo marc,

ich habe nicht verstanden, was du da machen willst. Aber wenn du zwei 
Timer brauchst und zwei Timer hast, warum nicht?


Gruß, DetlevT

Autor: marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi! Ich habe einen Tip bekommen.

Wenn ich die Variable, die in der hauptdatei im Interrupt hochgezählt 
wird, in der ausgelagerten Funktion verwenden will, geht das mit dem 
extern-Befehl:

extern volatile int x;


Genau das hab ich gebraucht :D
Kannte ich bis jetzt noch ni..

Also danke jungs

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
marc schrieb:

> Genau das hab ich gebraucht :D
> Kannte ich bis jetzt noch ni..

Dann wirds Zeit, dass du dir ein C-Buch kaufst und durcharbeitest!

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder wenigstens den Artikel Interrupt liest . . .

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.