Blödes Pollin Programmierboard + LCD

Gast #2579258
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.
Gast #2579286
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?
#2580437
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.
Gast #2580457
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?
Gast #2580500
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.
Gast #2580518
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.
Gast #2580757
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 :-/
Gast #2580829
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
Gast #2580850
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 :-/
Gast #2580869
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
#2580886
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.
(Firma: DC3AX) #2581090
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren