www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer1 löst aus wenn Timer1 Interrupt "ge"-enabled wird


Autor: Sebastian Kreuzer (bastik)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

schreibe gerade fleißig an meinem Programm.

Dabei ist mir aufgefallen, dass mein Timer1 Interrupt scheinbar auslöst 
wenn ich den Interrupt von Compare 1 A enable? Also ohne das Erreichen 
von dem Compare 1 A Wert gleich am Anfang wenn ich Enabel setze auslöst.

Hat dafür jemand eine erklärung oder ähnlich Erfahrungen?

Danke schon mal!

Autor: Christian Paier (christian_paier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also noch mal zusammenfassen?

Wenn du den Timer 1 COMPA Interrupt aktivierst springt die MCU nicht auf 
den TIMER1_COMPA_Vect sondern auf den TIMER1_OVFL_Vect ????

Ist der Comparewert zu dem zeitpunkt schon richtig geladen?

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde sagen, dass an Zeile 42 in deinem Code liegt. Leider ist meine 
Kristallkugel gerade im Urlaub...

Autor: Sebastian Kreuzer (bastik)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, tut mir leid.

ich versuch es nochmal...:

Also , ehm also folgendes:

1)Zunächst ist mein Timer1 ( ich spreche bei Timer1 immer von dem 
Compare 1A ) auf disable gesetz

2) Jetzt fülle ich das Compare 1A register mit 147456

3) Im nächsten Schritt, etwa 3 Code Zeilen später setze ich Timer1 auf 
enable

4) Und jetzt löst der Timer1 sofort aus, obwohl unmöglich 1ms vergangen 
sein kann?!

Autor: Christian Paier (christian_paier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt gibst für dich 2 möglichkeiten:

1. Versuch mal deinen Code mit dem Simulator (Optimierungsstufe 0) 
schritt für schritt durchzugehen, und beobachte dabei akribisch die 
Timerregister, inbesondere die Interruptflags. Vielleicht fällt dir was 
auf.

2. Gibts diesen Thread auch in C? Sonst pack ich wirklich noch die 
Kristallkugel aus. (Code posten! Am besten kompilierbar)

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

Bewertung
0 lesenswert
nicht lesenswert
Sebastian Kreuzer schrieb:
> ja, tut mir leid.
>
> ich versuch es nochmal...:

Du sollst deinen Code nicht beschreiben, du sollst den Code posten!

Das ist für dich einfacher und wir können dasselbe sehen, was auch der 
Compiler bzw. der µP sieht.

Autor: Sebastian Kreuzer (bastik)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schäm, ich progge halt immer noch mit Bascom. Bin aber grad am 
Umsteigen, verwende immer mehr direkt die Register.

Ich schätz mal wenn ich jetzt Bascom poste , dann erwürgen mich gleich 
ein paar Leute hier...

Ich hab halt schon im Datenblatt gelesen, ob da irgenwas drinnen steht, 
von wegen start up time oder so... nix

ich dachte vielleicht gibt es da irgendeinen allgemeinen Trick den nur 
ich nicht mitbekommen hab.

wird mir wohl nichts übrig bleiben als wircklich mal die Register zu 
beobachten!

Autor: André (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja. Vorm Enablen einfach sicherstellen, dass TOV1 nicht gesetzt ist 
(sonst rennt er nach dem Enablen direkt in die ISR):

TIFR1 |= 1<<TOV1

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

Bewertung
0 lesenswert
nicht lesenswert
Sebastian Kreuzer schrieb:
> Schäm, ich progge halt immer noch mit Bascom. Bin aber grad am
> Umsteigen, verwende immer mehr direkt die Register.
>
> Ich schätz mal wenn ich jetzt Bascom poste , dann erwürgen mich gleich
> ein paar Leute hier...
>
> Ich hab halt schon im Datenblatt gelesen, ob da irgenwas drinnen steht,
> von wegen start up time oder so... nix
>
> ich dachte vielleicht gibt es da irgendeinen allgemeinen Trick den nur
> ich nicht mitbekommen hab.
>
> wird mir wohl nichts übrig bleiben als wircklich mal die Register zu
> beobachten!

Achte vor allen Dingen darauf, wann der Timer loszuticken beginnt.

Müsste jetzt das Datenblatt studieren, aber der Comparematch wird meines 
Wissens ständig gemacht, also auch wenn der Timer steht!
Und ein Timerwert von 0 matcht nun mal mit einem Comparewert von 0 (d.h. 
noch ehe irgendetwas am Timer eingestellt wurde)

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Schäm, ich progge halt immer noch mit Bascom. Bin aber grad am
>Umsteigen, verwende immer mehr direkt die Register.

Traust du einem C-Compiler nicht zu, genauso "gut" zu arbeiten, wie dem 
BASCOM-Compiler?

>Ich schätz mal wenn ich jetzt Bascom poste , dann erwürgen mich gleich
>ein paar Leute hier...
Dass hier jemand wegen BASCOM-Programmierung erwürgt wurde, ist noch 
nicht vorgekommen. Es ist eher der Programmierstil, den diese 
BASCOM-"Programmierer" an den Tag legen.

>Ich hab halt schon im Datenblatt gelesen, ob da irgenwas drinnen steht,
>von wegen start up time oder so... nix
Start-up-Time hängt mit dem Oszillator zusammen; nicht mit dem Timer.

>ich dachte vielleicht gibt es da irgendeinen allgemeinen Trick den nur
>ich nicht mitbekommen hab.
Leute, die sich mit Mikrocontrollern auskennen, gehören dem Magischen 
Zirkel an...

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
André schrieb:
> Naja. Vorm Enablen einfach sicherstellen, dass TOV1 nicht gesetzt ist
> (sonst rennt er nach dem Enablen direkt in die ISR):
>
> TIFR1 |= 1<<TOV1

Nein, richtig wäre hier ein "=".

Autor: André (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtig ist offenbar auch das, oder kannst du einen direkten Unterschied 
in der Wirkungsweise ausmachen? "Writing a logical one" machen offenbar 
beide Varianten.

Gruessle

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Sebastian Kreuzer schrieb:
>> ja, tut mir leid.
>>
>> ich versuch es nochmal...:
>
> Du sollst deinen Code nicht beschreiben, du sollst den Code posten!

Vielleicht stellt einer der Admins endlich mal ein, daß, wenn man eine 
Datei zum Upload ausgewählt hat, diese auch dann erhalten bleibt, wenn 
man auf "Vorschau" gedrückt hat!

Nur so als kleiner Tipp.

Ist schon 1000x passiert daß Leute Code posten wollten und genau aus dem 
Grund war dann doch nix da, obwohl eine Datei angewählt wurde.

Und dann weden sie angemotzt...

Johann

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
André schrieb:
> Richtig ist offenbar auch das, oder kannst du einen direkten Unterschied
> in der Wirkungsweise ausmachen? "Writing a logical one" machen offenbar
> beide Varianten.

Aber meine Variante schreibt nur die eine 1, deine schreibt zusätzlich 
überall da eine 1 rein, wo im Register eine 1 steht. Deine Variante 
löscht also alle gesetzten Flags in dem Register.

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

Bewertung
0 lesenswert
nicht lesenswert
Johann L. schrieb:
> Karl heinz Buchegger schrieb:
>> Sebastian Kreuzer schrieb:
>>> ja, tut mir leid.
>>>
>>> ich versuch es nochmal...:
>>
>> Du sollst deinen Code nicht beschreiben, du sollst den Code posten!
>
> Vielleicht stellt einer der Admins endlich mal ein, daß, wenn man eine
> Datei zum Upload ausgewählt hat, diese auch dann erhalten bleibt, wenn
> man auf "Vorschau" gedrückt hat!

Tja. Andi kennt das Problem. Nur leider gibt es keine Möglichkeit das 
abzustellen. Den Dateinamen kann man nicht von einem Formular ins 
nächste retten (wurde zumindest mir gesagt)

> Ist schon 1000x passiert daß Leute Code posten wollten und genau aus dem
> Grund war dann doch nix da, obwohl eine Datei angewählt wurde.
>
> Und dann weden sie angemotzt...

Angemotzt werden sie, wenn sie offensichtlich nicht den Code, sondern 
stattdessen 20 Zeilen posten, in denen sie beschreiben, wie ihrer 
Meinung nach ihr Code funktioniert.

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.