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
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
Ich meine, ich hätte irgendwo gelesen, dass das egal ist, aber habs geändert und es tut sich immer noch nichts :-(
Ich würde die Sache nicht per INT0/1 machen, sondern per ICP. Dazu ist das Ding ja auch da...
kannst du denn den Fehler wenigstens irgendwie eingrenzen, also z.B. mal LED an wenn INT ausgelöst wird oder so. Sascha
>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.
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!
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?
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.