www.mikrocontroller.net

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


Autor: Michael Eberhardt (einfachkrank)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sascha Weber (sascha-w)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Eberhardt (einfachkrank)
Datum:

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

Autor: STK500-Besitzer (Gast)
Datum:

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

Autor: Sascha Weber (sascha-w)
Datum:

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

Sascha

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael Eberhardt (einfachkrank)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: ftf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Michael Eberhardt (einfachkrank)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Michael Eberhardt (einfachkrank)
Datum:

Bewertung
0 lesenswert
nicht 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...

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.