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
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-Tutorial#Datenaustausch_mit_Interrupt-Routinen . 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.
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?
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 ?
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.
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.
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?
@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.
> 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.
@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
> 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...
>> 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?
@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...
@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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.