www.mikrocontroller.net

Forum: Compiler & IDEs Periodendauer


Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich messe die Periodendauer eines Rechtecksignals, mit Hilfe von Input
Capture.
Das ganze habe ich schon auf einem AT90 PWM3 realisiert. Jetzt soll es
auf einem MEGA644 erledigt werden. Allerdings springt mein Programm
nicht in die Timer 1 Capture ISR. Mir kommt es so vor als ob ich dazu
noch ein Bit aktivieren muss. Hat jemand einen Tipp für mich?

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ICPIE?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein ICPIE gibt es nicht. Das ICIE1 Input Capture Interrupt Enable habe
ich gesetzt.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du das ICIE1 im richtigen Register gesetzt?

Hast du den Interruptvektor richtig benannt (TIMER1_CAPT_vect)?

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...Code...?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja hab ich:

TIMSK1 |= (1<<ICIE1)|(1<<OCIE1A);
ISR(TIMER1_CAPT_vect)

Autor: Matthias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Den Code hab ich in den Anhang gehängt

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zur Erklärung kann ich noch sagen:
Die Timer Überläufe bekommt mein Programm wohl mit, d.h. der Timer 1
läuft. LED an PB2 leuchtet
Mein Rechtecksignal liegt an PD6 an. Jedoch leuchtet PB1 nicht, d.h.
die ISR wird gar nicht ausgelöst.

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Jedoch leuchtet PB1 nicht

Ähm.... LED verpolt? ggg

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, daran liegt es nicht.

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal ganz nebenbei... Was hast du mit dieser Zeile vor???

>> TCCR1A |= 0x00;

...macht nicht wirklich Sinn...

Gruß,
Magnetus

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du auch die richtigen Defs included? Vielleicht compilierst du ja
immer noch den Code für den 90PWM3 ???

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du recht. Da stand erst ein anderer Wert drin, den ich dann in 0x00
geändert hab, da ist es wohl stehen geblieben. Da es so oder so mit 0x00
initialisiert kann ich die Zeile rauswerfen.
Hast du keine Idee woran das liegt, dass die ISR nicht aufgerufen
wird?
Ich wäre dir sehr dankbar. Sitz nämlich schon den halben Tag vor dem
Problem.
Viele Grüße Matthias

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab im AVR Studio schon auf den 644er umgestellt. Der Code an sich ist
im Prinzip der gleiche. Register sind gleich benamt.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähem, AVR Studio?  Heißt das, du hast das noch gar nicht auf
realer Hardware getestet?

Sorry, aber die Simulation hat erfahrungsgemäß eher mal einen
Bug als das echte Silizium...

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doch, ich teste es in der Hardware. Habe die Platine vor mir, die LED
sind real. Es verwundert mich, dass er in die eine ISR reinspringt. Ihn
das Rechtecksignal am ICP Pin jedoch wohl unbeeindruckt lässt. Hab schon
nachgemessen, am Rechtecksignal gibts nichts auszusetzen. Das Signal
liegt auch am richtigen Pin an.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK. Ich habe den Fehler gefunden.
Ich hatte zuerst mit meinem kompletten Programm getestet, da hat bei
der Periodenmessung aber irgendwas nicht gestimmt. Also hab ich den
entsprechenden Teil rauskopiert um diesen Programmteil einzeln testen
zu können. Dabei muss mir irgendwie die Einstellungen um den
Multiplexer, der das Signal auf den Atmel schaltet, verlorengegangen
sein.  Nachdem ich den Code herauskopiert hatte hab ich dann das Signal
nicht mehr nachverfolgt, und so ist mir entgangen, dass es gar nicht bis
zum Atmel kommt.
Vielen Dank um eure kreativen Ideen, obwohl es an meiner eigenen
Dummheit lag.
Naja, aus Fehlern lernt man.

Gruß Matthias

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kleine Ursache, große Wirkung ;)

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.