Forum: Mikrocontroller und Digitale Elektronik Blödes Pollin Programmierboard + LCD


von TicTac (Gast)


Lesenswert?

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.

von M. J. (manfred-64)


Lesenswert?

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.

von Jonas B. (jibi)


Lesenswert?

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

von Jonas B. (jibi)


Lesenswert?

Ah...Dar war einer schneller...

Gruß Jonas

von Bernd B. (Firma: BB) (berndb)


Lesenswert?

Hallo,

Eventuell ein Timing Problem beim Initialisieren des LCD. Mal gehts mal 
nicht.
Das liegt aber nicht am Board.

Gruß Bernd

von Klaus W. (mfgkw)


Lesenswert?

Welchen Stecker? Strom? ISP?

von TicTac (Gast)


Lesenswert?

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
Entering programming mode... FAILED

Das spricht eher gegen ein Software-Initialisierungsproblem, oder?

Klaus Wachtler schrieb:
> Welchen Stecker? Strom? ISP?

von Jonas B. (jibi)


Lesenswert?

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

von TicTac (Gast)


Lesenswert?

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.

von Jonas B. (jibi)


Lesenswert?

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

von TicTac (Gast)


Lesenswert?

Länge < 20cm

von M. J. (manfred-64)


Lesenswert?

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...

von TicTac (Gast)


Lesenswert?

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 :-)

von Dietrich L. (dietrichl)


Lesenswert?

Taktprobleme? Schwingt der Quarz (falls verwendet)? Fuses für genügend 
lange Anschwingzeit gewählt?

von TicTac (Gast)


Lesenswert?

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.

von TicTac (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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

von TicTac (Gast)


Lesenswert?

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....

von Hartmut W. (killozap)


Lesenswert?

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.

von TicTac (Gast)


Lesenswert?

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?

von Hannes L. (hannes)


Lesenswert?

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.

...

von holger (Gast)


Lesenswert?

>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().

von TicTac (Gast)


Lesenswert?

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.

von holger (Gast)


Lesenswert?

>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.

von Fummler (Gast)


Lesenswert?

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:
1
int main(void)
2
{
3
  //initial values
4
  initIO();
5
  initExtInt();
6
7
  _delay_ms(500);  //test
8
  lcd_init(LCD_DISP_ON);
9
  _delay_ms(500);  //test
10
11
  lcd_clrscr();
12
  lcd_gotoxy(0,0);
13
  lcd_puts("hallo";
14
  
15
  sei();
16
17
  while(1)
18
  { ; }
19
20
  return 0;


Hallo erscheint eben nur sproradisch :-/

von TicTac / Fummller (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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

von TicTac (Gast)


Lesenswert?

Sorry. Wollte es aufs wesentliche beschränken

1
//working machine: ATmega16
2
#ifndef F_CPU 
3
#define F_CPU 16000000UL 
4
#endif
5
6
#include "lcd.h"    //by Peter Fleury
7
#include <util/delay.h> 
8
#include <avr/interrupt.h>
9
#include <avr/io.h>
10
11
12
void initIO()
13
{
14
  //DAC = OUTPUT
15
  DDRD |= 0xF0;  //for Higher Nibble
16
  DDRB |= 0xF0;  //for Lower Nibble
17
  //LCD = OUTPUT
18
  DDRA = 0xFF;
19
  //Keys = INPUT
20
  DDRC = 0xFF;
21
  DDRC &= ~(_BV(PC0) | _BV(PC1) | _BV(PC6) | _BV(PC7));
22
}
23
24
void initExtInt()
25
{
26
  //INT0, INT1, INT2 = falling edge
27
  MCUCR |= _BV(ISC11) | _BV(ISC01);
28
  MCUCSR &= ~(_BV(ISC2));
29
  GICR |= _BV(INT0) | _BV(INT1) | _BV(INT2);
30
}
31
32
33
int main(void)
34
{
35
  //initial values
36
  initIO();
37
  initExtInt();
38
  _delay_ms(500);  //test
39
  lcd_init(LCD_DISP_ON);
40
  _delay_ms(500);  //test
41
42
  lcd_clrscr();
43
  lcd_gotoxy(0,0);
44
  lcd_puts("hallo");
45
  
46
  sei();
47
48
  while(1)
49
  {;}
50
51
  return 0;
52
}


Das Ergebnis ist ein schwarzes LCD

von Peter D. (peda)


Lesenswert?

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

von TicTac (Gast)


Lesenswert?

Schleierhaft ist mir aber, warum ich dann wenn es hängt nicht flashen 
kann. Der Atmega verweigert dann jeden Dienst!

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

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?

von Guter Rat (Gast)


Lesenswert?

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.

von TicTac (Gast)


Lesenswert?

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

von TicTac (Gast)


Lesenswert?

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 :-/

von Peter D. (peda)


Lesenswert?

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

von TicTac (Gast)


Lesenswert?

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.

von TicTac (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von TicTac (Gast)


Lesenswert?

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

von Krapao (Gast)


Lesenswert?

> Vor dem 7805 habe ich eine 9V-Block Batterie.

Frisch oder schon fast leer gelutscht?

von TicTac (Gast)


Lesenswert?

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.

von Klaus W. (mfgkw)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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

von M. J. (manfred-64)


Lesenswert?

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.

von Volker (Gast)


Lesenswert?

> 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?

von TicTac (Gast)


Lesenswert?

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. :-/

von TicTac (Gast)


Lesenswert?

Volker schrieb:
> Dann kann es IMHO doch nur am Oszillator liegen.
> CKOPT gesetzt?

Das sagt mir nichts.

von Volker (Gast)


Lesenswert?

Poste doch mal deine Fuse-Einstellungen

von TicTac (Gast)


Lesenswert?

Volker schrieb:
> Poste doch mal deine Fuse-Einstellungen

CKOPT ist nicht gesetzt

von Volker (Gast)


Lesenswert?

Dann programmier es mal - vielleicht hilft es

von Hannes L. (hannes)


Lesenswert?

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.

...

von Ulrich P. (uprinz)


Lesenswert?

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

von TicTac (Gast)


Lesenswert?

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.

von TicTac (Gast)


Lesenswert?

Jetzt komm ich mit dem ISP nicht mehr ran um die Fuses einzustellen.
Er verweigert jeden Dienst :-/

von TicTac (Gast)


Angehängte Dateien:

Lesenswert?

...

von TicTac (Gast)


Lesenswert?

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.

von TicTac (Gast)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.