Hallo Community, ein ATmega16 ist in der Grundschaltung aufgebaut. VCC und GND liegen an (gemessen), 10kOhm gegen VCC am Resetpin und zusätzlich noch ein "Resettaster" gegen GND am Resetpin. Der µC startet das Programm (in C) erst sobald man RESET-PIN gegen GND zieht und fährt nicht automatisch an. Kann mir jemand sagen warum? Gruß Markus
Das Program startet schon, bloß bleibt es hängen, weil IO-Pins nicht den von Dir erwarteten Pegel haben.
ok und nach einem manuellen Reset ist das dann anders?
Peter D. schrieb: > Das Program startet schon, bloß bleibt es hängen, weil IO-Pins nicht den > von Dir erwarteten Pegel haben. Markus schrieb: > ok und nach einem manuellen Reset ist das dann anders? Das würde mich auch interessieren :) Kannst du nicht ne Debug ausgabe machen irgendwie... um zu sehen wo er hängt?!
falls ihr meint, dass mein Programm fehlerhaft wäre oder hängen bleibt, das kann ich verneinen. Es ist eine simple Ultraschallmessung die (nach einem manuellen Reset) permanent wie gewünscht funktioniert. Ich würde nur gerne verstehen, warum der µC erst diesen "Anstoß" per Reset benötigt.
Brownout aktivieren und ein 100nF Kondensator parallel zum Taster...
BODEN Fuse ist gesetzt. den Taster hatte ich Testweise komplett entfernt. Habe nun einen Watchdog einprogrammiert der einen Reset durchführt, würde das Problem aber trotzdem gerne verstehen.
Markus schrieb: > BODEN Fuse ist gesetzt. > den Taster hatte ich Testweise komplett entfernt. > > Habe nun einen Watchdog einprogrammiert der einen Reset durchführt, > würde das Problem aber trotzdem gerne verstehen. ATmega 16 manual: Table 5. Start-up Times for the Crystal Oscillator Clock Selection
Vielleicht ist dein Ultraschallsensor noch nicht bereit, wenn dein AVR nach einem Power On loslegt. Kommentier den Quellcode mal aus und nimm eine Komponente nach der anderen wieder rein, um zu sehen, wo der Controller stehen bleibt. Oder kannst du beweisen, das der Controller wirklich nicht anläuft. (Taktquelle schwingt nicht oder dergleichen). Lass zum Test ganz am Anfang mal eine LED einschalten und schaue, ob die auch erst nach einem Reset angeht.
Danke für den Denkanstoß Max, hatte direkt nach main eine LED eingeschaltet und es war wohl tatsächlich so, dass der Ultraschallsensor nicht bereit war (die LED leuchtete, der Rest blieb regunslos). Ein einmaliges Delay von 50ms schaffte Abhilfe. Danke für euere Tipps, manchmal sieht man den Wald vor lauter Bäumen nicht mehr.
Markus schrieb: > ok und nach einem manuellen Reset ist das dann anders? Ja. Nach dem Poweron ist das Programm losgelaufen und hat z.B. Ports initialisiert. Nach den Reset Drücken geht wieder alles in tristate, aber die Pegel halten sich noch Weile und das kann schon ausreichen.
Markus schrieb: > Ein einmaliges Delay von 50ms schaffte Abhilfe. Besser ist es, ein Timeout aufzusetzen, damit man nicht ewig auf die Antwort eines externen Gerätes wartet. Dann kann man mehrere Versuche starten bzw. eine Fehlermeldung ausgeben.
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.