Forum: Mikrocontroller und Digitale Elektronik Zeitmessung durch externen Interrupt (ATmega8)


von Michael E. (einfachkrank)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

ich bastel an einer Füllstandanzeige, die mittels Ultraschall misst. 
Habe mir ein SRF05 Modul bestellt, welches nach einem Trigger Impuls ein 
zeitabhängigen Pegel zurückgibt. Je kürzer der Pegel desto kleiner der 
Abstand je länger der Pegel desto größer ist der Abstand. Nun habe ich 
das an einen ATmega8 so angeschlossen, dass der Pegel durch externen 
Interrupt1 und 0 erfasst werden kann. Das ganze sollte so arbeiten, dass 
bei steigender Flanke die Zeitmessung startet und bei fallender Flanke 
endet. Das schreckliche daran ist, es funktionierte bereits, doch jetzt 
hab ich den Code neu gestaltet und es geht nicht mehr und ich finde den 
Fehler einfach nicht. Hoffe ihr könnt mir helfen. Im Anhang befindet 
sich Schaltplan und Quellcode als Zip. Ist in C geschrieben...
Je nach Länge des Impuls wird grüne, rote oder gelbe LED an einzelnen 
Pins geschaltet...

Bin für jeden Tipp und Rat dankbar!

Gruß,
Michael

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

im DDRD sind die INT0/1 Ports (Bit2&3) auf Ausgang geschaltet!

Für die Funktion würde auch mit einem INT gehen - Einfach auf beide 
Flanken triggern und in der ISR den Zustand auslesen.

Sascha

von Michael E. (einfachkrank)


Lesenswert?

Ich meine, ich hätte irgendwo gelesen, dass das egal ist, aber habs 
geändert und es tut sich immer noch nichts :-(

von STK500-Besitzer (Gast)


Lesenswert?

Ich würde die Sache nicht per INT0/1 machen, sondern per ICP. Dazu ist 
das Ding ja auch da...

von Sascha W. (sascha-w)


Lesenswert?

kannst du denn den Fehler wenigstens irgendwie eingrenzen, also z.B. mal 
LED an wenn INT ausgelöst wird oder so.

Sascha

von STK500-Besitzer (Gast)


Lesenswert?

>Das schreckliche daran ist, es funktionierte bereits, doch jetzt
>hab ich den Code neu gestaltet und es geht nicht mehr und ich finde den
>Fehler einfach nicht.
Was hast du denn geändert?
Es fehlen (mir) noch ein paar Randbedingungen, wie die Taktfrequenz (im 
Quellcode wird der Timer mit 1/8-tel Taktfrequenz betrieben).

Ich vermut eine Taktfrqeunz von 8MHz.

Zur Fehlersuche:
Setze eine LED, sobald ein Impuls empfängen wurde.

von Michael E. (einfachkrank)


Lesenswert?

Ja, 8MHz ist richtig!

Also eingrenzen lies es sich manchmal ja und manchmal nein, deswegen hab 
ich jetzt nochmal die Hardware überprüft und vermutet, dass es 
vielleicht an einer schlechten Lötstelle am mega8 lag. Beim neu verlöten 
ist mir natürlich wie es kommen musste ein Super Gau passiert und hab 
irgendwie einen Kontakt zwischen GND und VCC geschaffen. Jetzt darf ich 
erst den Chip wieder runterlöten und neuen bestellen, da ich alles in 
SMD hergestellt habe... Meld mich spätestens übermorgen wieder, wenn der 
neue Chip verlötet ist. Trotzdem schonmal danke für die Tipps!

von ftf (Gast)


Lesenswert?

was ist denn genau kaputt gegangen? Der Spannungswandler? Schau mal ob 
er evtl. nicht doch noch geht, manche haben eine thermische 
Überlastsicherung.

Wenns der Atmega ist dann sollte an sich ein kurzschluss an seinen Pins 
normalerweise nichts machen, oder?

von Michael E. (einfachkrank)


Lesenswert?

Kaputt gegangen sollte eigentlich gar nichts sein. Hab beim nachbessern 
der Lötkontakte zwei Pins des ATmega8 verbunden und nicht mehr 
voneinander trennen können. Deswegen hab ich ihn runter geschmissen und 
einen neuen verlötet.

Hab also alle Verbingungen nochmal überprüft und es tut sich immer noch 
nichts. Durch Setzen von LEDs hab ich mal versucht heraus zu finden, was 
passiert. Zur Zeit wird kein Interrupt ausgelöst. Ich hab wirklich 
keinen Rat warum sich da nichts tut...

von Michael E. (einfachkrank)


Lesenswert?

Ok, Update! Habe entdeckt, dass die zwei Pins Trigger und Echo am SRF05 
vertauscht hatte. Jetzt tut sich vereinzelt schonmal etwas. Doch in den 
meisten Fällen blinkt die rote LED am SRF05 im Messtakt. Hat dazu jemand 
nen Rat?

Hab irgendwo mal gelesen, dass dann der Triggerstrom zu schwach ist man 
sich da mit einem Elko helfen kann...

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
Noch kein Account? Hier anmelden.