www.mikrocontroller.net

Forum: Compiler & IDEs Interrupt löst nicht aus


Autor: Daniel H. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich sitze mal wieder vor dem Code und es funzt einfach nicht. Hab jetzt
auf die neue WinAvr version umgestellt und schon gehen meine ganzen
Interrupts nicht mehr. Hab das Prog mal als anhang drangehängt. Ich
denke ich hab alles gemacht hab mir auch das Tutorial durchgelesen.

Hardware seitig hab ich einfach den ICP pin an ein stück draht gehängt
und kann so 5v drauf geben. Mir Signal hat das alles geklappt aber
nicht mit ISR. Vielleicht kann ja mal jemand drüber gucken. Danke schon
mal im vorraus.

MFG
Daniel

Autor: Qwerty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier mal

volatile unsigned long int temp;

Es kann sein, dass der Compiler in der for-Schleife "temp" nur einmal
liest, da er der Meinung ist, dass es sich in der Schleife nicht
verändern kann (es wird ja auch "von außen" verändert). Siehe auch
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
.

Außerdem würde ich einen 16-Bit-Typ nehmen, nicht "long" (32 Bit).
Oder du solltest statt itoa() die passende long-taugliche Funktion
nehmen, also ultoa(). itoa() ist übrigens für signed-Typen, bei
unsigned müsste es ohnehin utoa() sein.

Autor: Daniel H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab jetzt mal die variable so umgebaut wie du es geschrieben hast aber
leider ohne erfolg. Selbst wenn ich ein einfachen Bit setze in der
Interrupt routine klkappt es nicht er springt nicht rein.

Noch jemand eine Idee?

Autor: Dirk Broßwick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

schreibe mal bitte welchen mC du benutzt. Oder benutzt du de falschen
interrupt-vector ? Und schreibe was du genau machen willst, zeit
messen, oder den timer starten mit ICP ?

Autor: Daniel H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Dirk

Ist ein Atmega 8L

Will die Zeit zwischen 2 impulsen messen (z.b. Drehzahl eines
Elektromotors oder Benzinmotors)

Der Teil zum diffrenz ermitteln ist noch nicht drin weil er noch
garnicht in die interrupt rutine rein geht.

Gute nacht noch.

Autor: Qwerty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Eingrenzen des Fehlers: konfiguriere doch mal einen freien Pin auf
Ausgang und setz ihn vor dem sei() auf 0. In der ISR setzt du ihn auf
1. Dann kannst du schonmal sehen, ob die ISR vielleicht doch
angesprungen wird, aber die Auswertung bzw. Werteübernahme ins
Hauptprogramm so nicht passt.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch zum Eingrenzen des Fehlers:
Was genau verleitet Dich denn zu der Annahme, dass die ISR nicht
angesprungen wird? Wird ein falscher Wert oder gar kein Wert im Display
angezeigt?

Autor: Daniel H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@qwerty werde ich gleich mal testen wenn ich zu hause bin.

@johnny

Hab ja alle Variblen verschiedene werte gegeben.

So hat Temp den Wert 50 time 10 und temp wird wärend des interrupts auf
100 geändert. Der Lcd funzt ich seh das was er anzeigen soll aber anhand
des wertes weiß ich wo es hängt (in etwa). momentan hat time den wert 50
also klappt die übergabe von temp zu time. Aber temp ändert sich nicht
also keine rückgabe vom interrupt.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> an ein stück draht gehängt und kann so 5v drauf geben.

Fiel mir grad so auf: Wie stellst Du Dir das vor? Du hast nirgends
einen Pin konfiguriert, d.h. an Deinem ICP ist undefiniertes Potenzial!
Du solltest den Pull-Up aktivieren und den Pin dann nicht auf 5V sondern
auf Masse ziehen, um ein Signal zu erzeugen.

Autor: Daniel H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Johnny

du glaubst es nicht. Ich könnte ................

Hab mal aus Spass ein anderen Mikro rein und schwups gings. Das Teil
ist im Arsch. Aber wie soll man auf sowas kommen. Gibts da ein
testgerät für? oder hat da schonmal jemand selber sowas gebaut?

Jetzt sitz ich schon 4 Tage an dem mist und der doofe Mikro ist kaputt
aber halt nicht komplet nur zum teil. Ausgänge schalten ging ja.

Wäre nett wenn mir jemand sagen könnte ob es sowas gibt oder ob jemand
sowas schon mal gebaut hat.

Man man man könnte mich grün und blau ärgern aber wo bleibt denn dann
der Spass.

Schöne Nacht noch und grüsse aus FFM
Daniel

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das Teil ist im Arsch...

Da gehört es ja auch nicht hin! Frage mich, wie es da rein gekommen
ist... Außerdem pieksen die Pins dann immer so...

Nen Port zerschießen ist vergleichsweise leicht, v.a. dann, wenn man,
wie Du es anscheinend gemacht hast, mit nem Draht 5V einfach irgendwo
dranlegt ohne Widerstand dazwischen. Man lege niemals VCC direkt an
einen Portpin! Wenn der als Ausgang konfiguriert ist und der
Ausgangstreiber auf '0' steht, gibt das nen satten Kurzschluss.
Danach kannste den Pin vergessen...

Autor: Dr.Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Das Teil ist im Arsch...
>
> Da gehört es ja auch nicht hin! Frage mich, wie es da rein
> gekommen ist...

Du glaubst nicht, was manche Leute für Neigungen haben ;-)

> Außerdem pieksen die Pins dann immer so...

Du hast also Erfahrung damit?

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Dr. Sommer:
Nein, ich habe keine Erfahrung damit, aber ich besitze hinreichend viel
Vorstellungsvermögen, um mir denken zu können, dass etwas, das in den
Finger piekst auch woanders pieksen könnte...

Autor: Daniel H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@johnny

Da war ja ein 470 Ohm Wiederstand dazwischen. Was mich halt gewundert
hat war das der lcd immer heller geworden ist bei jedem mal wo ich ein
puls drauf gegeben hab.

Aber ein Test Gerät scheint es nicht zu geben.

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.