PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeitmessung mit externen Interrupts



Einfachkrank
13.08.2009, 15:54
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

cmock
13.08.2009, 19:30
in DDRD sind die INT0 und INT1-pins als output definiert...

Einfachkrank
13.08.2009, 22:36
in DDRD sind die INT0 und INT1-pins als output definiert...Hab ich verändert, brachte aber leider keine Veränderung. Der zweite Interupt der das Ende des Signals mitbekommen sollte, wird einfach nicht ausgelöst.

cmock
14.08.2009, 00:29
eigenartig. bist Du sicher, daß die hardware OK ist?

ich hab nämlich letztens meinen endlich funktionierenden ps2-maus-code auch sauber strukturiert und dann hat er nimmer funktioniert. nach 2 abenden hab ich mich gefragt, ob die lötstellen auf der billigmaus wirklich so schlecht sind, wie sie aussehen, und nachgelötet, und dann ging's :-/

Hubert.G
14.08.2009, 09:49
Nachdem du PortC verwendest musst du auch AVCC und AGND anschließen, sonst zeigen sich dort ganz eigenartige Effekte.

Einfachkrank
17.08.2009, 13:55
eigenartig. bist Du sicher, daß die hardware OK ist?

ich hab nämlich letztens meinen endlich funktionierenden ps2-maus-code auch sauber strukturiert und dann hat er nimmer funktioniert. nach 2 abenden hab ich mich gefragt, ob die lötstellen auf der billigmaus wirklich so schlecht sind, wie sie aussehen, und nachgelötet, und dann ging's :-/
Auf die Frage habe ich auch gleich mal alle Verbindungen geprüft und es schien als hätte ich auch eine unsaubere Lötstelle am mega8, worauf ich die etwas unschönen Lötstellen nachbessern wollte und dabei erstmal GND und VCC verbunden habe ](*,) Habe alles in SMD gefertigt und jetzt kann ich den mega8 neue verlöten. Naja, morgen kommt die Reichelt-Bestellung... Hoffentlich funktioniert es danach gleich...


Nachdem du PortC verwendest musst du auch AVCC und AGND anschließen, sonst zeigen sich dort ganz eigenartige Effekte.Bis jetzt hatte ich mit dem PortC keine Probleme, so weit ich das beurteilen kann. Werde mir das genauer ansehen, wenn der neue mega8 verlötet ist.

Schonmal vielen Dank für die Tipps bis hierhin :-)

Einfachkrank
19.08.2009, 20:19
So... jetzt habe ich den mega8 neu verlötet und habe alle Verbindungen überprüft. Hardware scheint vollkommen in Ordnung zu sein. Durch Setzen von LEDs hab ich versucht herauszufinden, was passiert und was nicht. Interrupts werden leider keine ausgelöst, aber das Programm läuft an sich. Bin jetzt völlig ratlos :-(

yaro
19.08.2009, 23:29
Um Interrupts zu aktivieren, musst du sie im Status-Register aktivieren. In C geht das mit dem Befehl sei().

Gruß, Yaro

McJenso
20.08.2009, 09:15
Hallo,

ist AVCC und AGND denn jetzt angeschlossen? Poste doch noch einmal das Programm mit den LEDs. Wie ist denn der SFR05 angeschlossen. Im Datenblatt ist die Reihenfolge +, Echo, Trigger, Modus, GND. Bei dir ist die Reihenfolge +, Trigger, Echo, GND. Wobei Modus nicht angeschlossen sein darf.

Gruß

Jens

Einfachkrank
21.08.2009, 10:33
Hallo,

ist AVCC und AGND denn jetzt angeschlossen? Poste doch noch einmal das Programm mit den LEDs. Wie ist denn der SFR05 angeschlossen. Im Datenblatt ist die Reihenfolge +, Echo, Trigger, Modus, GND. Bei dir ist die Reihenfolge +, Trigger, Echo, GND. Wobei Modus nicht angeschlossen sein darf.

Gruß

Jens
Du hast Recht! Ich hatte schon mal die zwei Pins (Trigger, Echo) vertauscht. Das war jetzt schonmal ein Rießenfortschritt... Jetzt sieht es so aus:
Interrupts werden ausgelöst, Messungen funktionieren in einzelnen Fällen und die rote LED blinkt im Messtakt am SRF05. Dazu habe ich schonmal hier im Forum gelesen, dass ein kleiner Elko helfen kann um den Triggerstrom zu stärken... Das werde ich heute nochmal versuchen.

Bis hierhin schonmal vielen Dank! :-)