Hallo,
erstmal Verzeihung für den Titel, das Board frustet mich ziemlich :-)
Ich habe ein Problem mit o.g. Board (was auch sonst). Ich möchte hier
bitte keine Diskussion über Qualität der Pollin Produkte auslösen und
bitte alle herzlichst davon Abstand zu nehmen.
Mein Problem: Ich habe ein einfaches Programm, das "hallo" auf ein LCD
schreibt. Das ging bisher einwandfrei, jetzt bleibt das Display
neuerdings schwarz (alle Pixel an). Wenn ich jetzt den Stecker zum
EvaBoard ein paar Mal rein raus ziehe, springt der ATmega16 irgendwann
an und das erwartete "hallo" erscheint.
Kann sich bzw. mir irgendjemand erklären, was das Problem sein kann?
Ich habe keine Veränderungen vorgenommen. Das Programm lief vorher
tadellos, und am nächsten Tag nicht mehr.
Vielen Dank.
Die Resetzeit des LCD's könnte sich verlängert haben (Alterung, zb:
Kontakte, Kondensatoren...)
Verlängere mal die Wartezeit bis zur Initialisierung des LCD's.
Klingt nach einem Timing Problem, verlängere mal die delay loop in der
Display Initialisierung. Dein LCD-Controller braucht länger zum booten
als der Avr...
Gruß Jonas
Danke für die bisherigen Posts. Das werde ich probieren.
Nach Feierabend teste ich es mal.
Klaus Wachtler schrieb:> Welchen Stecker? Strom? ISP?
Geflasht wird über ISP. Strom kommt vom Board.
-----------
Was ich noch dazusagen sollte: Wenn er diesen "hänger" hat, lässt er
sich auch nicht flashen.
1
Enteringprogrammingmode...FAILED
Das spricht eher gegen ein Software-Initialisierungsproblem, oder?
Klaus Wachtler schrieb:> Welchen Stecker? Strom? ISP?
Das klingt so als ob der Programmer es nicht schafft den Controlller in
den Reset zu zwingen. Was hasten fürn Widerstand am Reset ?
Wie sieht deine Spannungsversorgung aus?
Gruß Jonas
Jonas Biensack schrieb:> Das klingt so als ob der Programmer es nicht schafft den Controlller in> den Reset zu zwingen. Was hasten fürn Widerstand am Reset ?> Wie sieht deine Spannungsversorgung aus?>> Gruß Jonas
Alles Pollin-Board originalwerte: Der Reset hängt über 10k an 5V.
Länge Kabel vom PC zum ISP Stecker des Boards? Hatte da mal Probleme
weil ich Horst halt unbedingt den Controller im Nebenraum flashen
wolllte...
Gruß Jonas
Scheint das Dein µC nicht richtig läuft.
Überprüfe mal die Stromversorgung.
Schau auch mal nach kalten Lötstellen im Bereich Reset, Stromversorgung,
evt.
Quarz...
Manfred John schrieb:> Schau auch mal nach kalten Lötstellen im Bereich Reset, Stromversorgung,> evt.> Quarz...
Hab ich soweit es geht bereits. Nichts gefunden. Auch ist der ISP vom
Programmer bis zu den uC Pins richtig connected. Ich hätts damals besser
als Bausatz gekauft, dann könnte ich sowas ausschließen :-)
Dietrich L. schrieb:> Taktprobleme? Schwingt der Quarz (falls verwendet)? Fuses für genügend> lange Anschwingzeit gewählt?
Noch nicht. Wird ebenfalls ausprobiert. Danke für den Tipp.
Alle mögliche Delay TImes, und auch die max. Anlaufzeit für den Quarz
haben keinen Erfolg gebracht.
Hat noch einer eine Idee? In der zwischenzeit geh ich mal auf die Suche
nach einem Hardwaredefekt.
Ein sehr einfaches und vor allem übersichtliches Testprogramm findest Du
hier:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=102296
Ich hab auch mal längere Zeit nen blöden Fehler gesucht: Der /WR-Pin
hatte keinen richtigen Kontakt zu GND, sondern hing in der Luft.
Peter
ich habe jetzt ein sehr interessantes Phänomen:
Ich habe jetzt eine Testschaltung auf Platine aufgebaut und das Problem
ist das gleiche. Ich verwende eine völlig andere Stromquelle und auch
der Quarz ist ein anderer. Also ist es doch ein Software oder COntroller
Problem?
Ich verzweiel... arrr....
Das Pollin-Board hat einen Gleichrichter aus Dioden, der eher als
Verpolungsschutz dient. EIn 7805-Regler macht aus der Spannung 5 V mit
maximalen 500mA. Wennd as Board mehr als nur einen Chip zu versorgen
hat, so kann die Spannung einbrechen. Bei mir ist die bei der Nutzung
eines Servos die Spannung so eingebrochen, dass der Prozessor resetted
wurde, die LED hat geflackert.
Hartmut Wagener schrieb:
Wennd as Board mehr als nur einen Chip zu versorgen
> hat, so kann die Spannung einbrechen. Bei mir ist die bei der Nutzung> eines Servos die Spannung so eingebrochen, dass der Prozessor resetted> wurde, die LED hat geflackert.
Das kann ich ausschließen.
Ich betreibe den ATmega16 mit 16MHz Quarz. Eingestellt habe ich bei den
Fuses: Ext. Crystal 16k CK + 64ms. Das ist doch sehr konservativ und
müsste auf Nummer sich er sein, oder?
Keiner mehr eine Idee?
TicTac schrieb:> Keiner mehr eine Idee?
Überprüfe mal den Transistor, der Reset nach GND zieht. Ersetze ihn mal
durch einen Transistor mit höherer Stromverstärkung.
...
>Ich betreibe den ATmega16 mit 16MHz Quarz. Eingestellt habe ich bei den>Fuses: Ext. Crystal 16k CK + 64ms. Das ist doch sehr konservativ und>müsste auf Nummer sich er sein, oder?>>Keiner mehr eine Idee?
BOD Fuses auf höchsten Wert stellen.
Alternativ ein dickes Delay mit mindestestens 250ms
vor LCDInit().
Ich wiederhole nochmal:
Ich habe mit nem einfachen 7805 ne extra Platine aufgebaut, auf der
weiter nichts ist als die Grundschaltung wie sie hier zu sehen ist
aufgebaut:
http://www.rn-wissen.de/index.php/Bild:Avrtutorial_grundschaltung_mitquarz.gif
Vor dem 7805 habe ich eine 9V-Block Batterie. Ich habe also kein Teil
vom Board verwendet, sondern alles neu aufgebaut. Gleicher Effekt: Die
LED am Ausgang bleib aus. Nachdem ich die Stromversorgung unterbrochen
habe geht sie irgendwann dann doch an und blinkt wie sie soll.
>Vor dem 7805 habe ich eine 9V-Block Batterie. Ich habe also kein Teil>vom Board verwendet, sondern alles neu aufgebaut. Gleicher Effekt: Die>LED am Ausgang bleib aus. Nachdem ich die Stromversorgung unterbrochen>habe geht sie irgendwann dann doch an und blinkt wie sie soll.
Schaltungsproblem, ganz eindeutig. Mach es richtig, dann gehts auch.
Da fehlen doch irgenwelche Leitungen. Ob VCC oder GND musst du
selber suchen.
Du meinst die Platine hat genau da einen Kabelbruch, wo ich jetzt beim
Neuaufbau eine vergessen habe? Eher unwarscheinlich.
Schaltungsfehler schließe ich aus. µC habe ich gewechselt.
Display habe ich auch gewechselt. Ich vermute ein Softwareproblem.
Das Programm macht jedoch nur folgendes:
Sorry nicht genau ausgedrückt oben:
Du meinst das Programmierboard hat exakt den gleichen Defekt
wie ich bei meinem Neuaufbau gestern Abend? Das glaube ich
nicht. Ich habs ja extra zum testen neu aufgebaut.
Fummler schrieb:> Das Programm macht jedoch nur folgendes:
Das sind ja alles unbekannte Funktionsaufrufe, damit kann keiner was
anfangen. Du mußt schon den Code aller benutzten Funktionen posten.
Ein Programm muß ohne Warnungen und Fehler compilierbar und linkbar
sein. Erst dann kann man was dazu sagen.
Peter
TicTac schrieb:> Sorry. Wollte es aufs wesentliche beschränken
Wesentlich wären ja die LCD-Routinen und die fehlen.
Vermutlich sind auch einige Defines nötig.
Peter
TicTac schrieb:> sei();
Wofür ist das sei() gut? Um die INTx-Interrupts aus initExtInt()
freizuschalten? Wo sind Deine Interrupt-Service-Routinen dazu?
Kommentiere das sei() und den Aufruf von initExtInt() aus und teste
nochmal. Oder brauchen die LCD-Funktionen Interrupts? Wenn ja, welche?
Nur als Tip am Rande, mit Flachbandkabeln als Verbindung zwischen
Programmer (bei mir STK500) und Zielbaugruppe hatte ich wg.
Wackelkontakten
schon öfters Ärger. Die Fehlerbilder waren ähnlich. Wenn die
Pfostenstecker
mit Zugentlastungen versehen sind wird die Sache deutlich stabiler.
Ja, das sei ist für die externen Interrupts um sie freizuschalten.
Ich habe die ISRs aber alle Schritt für Schritt bei der Fehlersuche
rausgeworfen.
Gruß TicTac
Guter Rat schrieb:> Nur als Tip am Rande, mit Flachbandkabeln als Verbindung zwischen> Programmer (bei mir STK500) und Zielbaugruppe hatte ich wg.> Wackelkontakten> schon öfters Ärger. Die Fehlerbilder waren ähnlich. Wenn die> Pfostenstecker> mit Zugentlastungen versehen sind wird die Sache deutlich stabiler.
Habe ich auch überprüft. Keine Fehler im Kabel :-/
TicTac schrieb:> Ich habe die ISRs aber alle Schritt für Schritt bei der Fehlersuche> rausgeworfen.
Sehr gut, dann funktioniert garantiert nichts.
Jeder Interrupt macht dann ein Reset.
ISRs darf man erst dann rausnehmen, wenn der dazugehörende Interrupt
disabled ist.
Peter
Peter Dannegger schrieb:> Sehr gut, dann funktioniert garantiert nichts.> Jeder Interrupt macht dann ein Reset.>> ISRs darf man erst dann rausnehmen, wenn der dazugehörende Interrupt> disabled ist.>>> Peter
Danke. Wird heut Abend ausprobiert.
Zusatz: Problem bestand aber auch, als die ISRs noch drin waren. Und
wenn der uC dann mal läuft, dann geht alles einwandfrei. Nur das
"Anspringen" nicht... :-/ frust
Fuse den AVR mal auf interne 8MHZ RC-Takt.
Quarze können manchmal sterben oder schlecht anschwingen.
Das würde auch die Programmierprobleme erklären.
Peter
Peter Dannegger schrieb:> Fuse den AVR mal auf interne 8MHZ RC-Takt.> Quarze können manchmal sterben oder schlecht anschwingen.> Das würde auch die Programmierprobleme erklären.>>> Peter
Ich habe das Problem wie gesagt auch auf der extra Platine. Dort habe
ich nen anderen Quarz, andere Kondensatoren, anderen Spannungsregler
usw. Das MUSS am uC, bzw. an der Software liegen :-D
Krapao schrieb:>> Vor dem 7805 habe ich eine 9V-Block Batterie.>> Frisch oder schon fast leer gelutscht?
Frisch. Ich suche schon eine ganze Weile nach dem Fehler.
TicTac schrieb:> Ich habe das Problem wie gesagt auch auf der extra Platine. Dort habe> ich nen anderen Quarz, andere Kondensatoren, anderen Spannungsregler> usw. Das MUSS am uC, bzw. an der Software liegen :-D
Dann mach doch mnal ein schlichtes Programm ohne Interrupts, nur eine
Endlosschleife mit delay_irgendwas() und ein Pin wackeln.
Wenn das dann auch zickt, weiß man wo man suchen muß.
Bauchgefühl: das wird funktionieren.
Probier mal mein Testprogramm aus dem obigen Link aus.
Das ist nicht so riesengroß und unübersichtlich, wie das Fleury-Zeugs.
Und wenn das auch nicht geht, dann poste es mal komplett mit Deinen
angepaßten Defines als Zip.
Peter
TicTac schrieb:>>> Vor dem 7805 habe ich eine 9V-Block Batterie.>>>> Frisch oder schon fast leer gelutscht?>> Frisch. Ich suche schon eine ganze Weile nach dem Fehler.
Auch nen anderen Clip für den 9V Block benutzt?
Die machen auch gern mal ärger.
> Schleierhaft ist mir aber, warum ich dann wenn es hängt nicht flashen> kann. Der Atmega verweigert dann jeden Dienst!
Dann kann es IMHO doch nur am Oszillator liegen.
CKOPT gesetzt?
Ich werde alles hier genannte mal ausprobieren. Problem ist nur, dass
ich nichtmal zum flashen komme. Ich muss den Stecker etliche male ziehen
bis er anspringt. Und erst dann kann ich flashen. :-/
TicTac schrieb:> Crystal 16k CK + 64ms. Das ist doch sehr konservativ und> müsste auf Nummer sich er sein, oder?
Nein, 16 MHz ist nah am Limit. Da musst Du CKOPT aktivieren (full swing)
und ggf. auch das Timing des LCD-Zugriffs überprüfen, besonders die
Wartezeit vor dem Initialisieren.
...
Nur mal so am Rande:
Hast Du die beiden 15..30pF Kondensatoren am Quarz drann? Wenn ja,
passen diese zu den Daten vom Quarz und nicht nur zum Datenblatt vom
AVR?
Wenn diese Cs fehlen, schwingt das Quarz nicht an, wenn deren Werte
falsch sind, bzw. nicht zum Quarz passen, dann schwingt das Quarz auf
einer falschen Oberwelle und liegt dann fernab von dem, was der AVR
verarbeiten kann.
Gruß, Ulrich
Ulrich P. schrieb:> Nur mal so am Rande:> Hast Du die beiden 15..30pF Kondensatoren am Quarz drann? Wenn ja,> passen diese zu den Daten vom Quarz und nicht nur zum Datenblatt vom> AVR?
2x 22pf wo sie hingehören. Betreibe es schon seit jahren in dieser
Konfiguration. Das Board lief auch tadellos bisher.
Also ich habe besagtes CKOPT Fuse gebrannt und alles was mit lcd zu tun
hat rausgeworfen. Es läuft stabil. Ich zieh immer mal wieder den
Stecker, aber es scheint zu funktionierten.
Später will ich dann mal die lcd Funktionen von Peter Danegger
reinhauen.
Danke für die vielen Hilfreichen Beiträge bisher.
Volker schrieb:>> Schleierhaft ist mir aber, warum ich dann wenn es hängt nicht flashen>> kann. Der Atmega verweigert dann jeden Dienst!>> Dann kann es IMHO doch nur am Oszillator liegen.> CKOPT gesetzt?
Was soll ich sagen? Es läuft. Ich danke dir. 4 Tage fehlersuche... :-(
CKOPT CKOPT CKOPT CKOPT CKOPT CKOPT CKOPT