Forum: Mikrocontroller und Digitale Elektronik my AVR+LCD Problem


von Franz (Gast)


Lesenswert?

Hallo Leute hab mir das myAVR borad 1 lpt geholt und auch das LCD aber 
nicht fertig da es nicht lagernd war sondern die teile einzeln gekauft. 
Es sin aber die gleichen!

Das Board funktioniert super jedoch wenn ich das LCD anschließe habe ich 
in jeder Zeile schwarze dicke Striche?

Hab schon alles durchgemessen auf Durchgang und geguckt ob auch die 
Datenleitungen richtig sind jedoch finde ich keinen Fehler?
Wenn ich alle Datenleitungen abschließe tut sich komischer Weise nichts.
Hier mal der Programmcode
1
;---------------------------------------------------------------------------
2
; Title   : Programmbeispiel für myAVR-Board mit LCD Add-On
3
;---------------------------------------------------------------------------
4
; Funktion   : gibt die Zeichenkette "Hallo myAVR" auf dem myAVR LCD aus
5
; Schaltung   : LCD Add On, R/W=Masse
6
;---------------------------------------------------------------------------
7
; Prozessor   : ATmega8
8
; Takt   : 3,6864 MHz
9
; Sprache   : Assembler
10
; Datum   : 03.02.2005
11
; Version   : 1.6
12
; Autor   : Dipl. Ing. Päd. Alexander Huwaldt
13
;---------------------------------------------------------------------------
14
.include  "AVR.H"
15
;---------------------------------------------------------------------------
16
; Reset- und Interrupt Vector  ;VNr  .Beschreibung
17
  rjmp  main  ;1    POWER ON RESET
18
  reti    ;2    Int0-Interrupt
19
  reti     ;3    Int1-Interrupt
20
  reti     ;4    TC2 Compare Match
21
  reti    ;5    TC2 Overflow
22
  reti    ;6    TC1 Capture
23
  reti    ;7    TC1 Compare Match A
24
  reti    ;8    TC1 Compare Match B
25
  reti    ;9    TC1 Overflow
26
  reti    ;10    TC0 Overflow
27
  reti    ;11    SPI, STC Serial Transfer Complete
28
  reti    ;12    UART Rx Complete
29
  reti    ;13    UART Data Register Empty
30
  reti    ;14    UART Tx complete
31
  reti    ;15    ADC Conversion Complete
32
  reti     ;16    EEPROM Ready
33
  reti     ;17    Analog Comperator
34
  reti     ;18    TWI (I²C) Serial Interface
35
  reti     ;19    Store Program Memory Ready
36
;---------------------------------------------------------------------------
37
; Start, Power ON, Reset
38
main:  ldi  r16,lo8(RAMEND)
39
  out  SPL,r16  ; Init Stackpointer LO
40
  ldi  r16,hi8(RAMEND)
41
  out  SPH,r16  ; Init Stackpointer HI
42
  rcall  LCD_init
43
;---------------------------------------------------------------------------
44
mainloop:  rcall  wait
45
  ldi  r16, 'H'
46
  rcall  LCD_data
47
  ldi  r16, 'a'
48
  rcall  LCD_data
49
  ldi  r16, 'l'
50
  rcall  LCD_data
51
  ldi  r16, 'l'
52
  rcall   LCD_data
53
  ldi   r16, 'o'
54
  rcall   LCD_data
55
  ldi   r16, ' '
56
  rcall   LCD_data
57
  ldi  r16, 'm'
58
  rcall  LCD_data
59
  ldi  r16, 'y'
60
  rcall  LCD_data
61
  ldi  r16, 'A'
62
  rcall  LCD_data
63
  ldi  r16, 'V'
64
  rcall   LCD_data
65
  ldi   r16, 'R'
66
  rcall   LCD_data
67
  ldi   r16, '!'
68
  rcall   LCD_data
69
  ldi   r16, ' '
70
  rcall   LCD_data
71
  rjmp   mainloop
72
;===========================================================================
73
;hier Unterprogramme und Interruptroutinen zufügen
74
;---------------------------------------------------------------------------
75
wait:  push  r24
76
  ldi  r24,0x13  ; hier Delay einstellen 13 = ca. 20yS
77
w1:  subi  r24,0x01
78
   rcall  wait20ms
79
  brcc  w1
80
  pop  r24
81
  ret
82
;---------------------------------------------------------------------------
83
wait5ms:  ldi  r16, 255
84
  ldi  r17,26
85
w5ms:  dec  r16
86
  brne  w5ms
87
  dec  r17
88
  brne  w5ms
89
  ret
90
;---------------------------------------------------------------------------
91
wait20ms:  ldi  r16, 255
92
  ldi  r17,104
93
w20ms:  dec  r16
94
  brne  w20ms
95
  dec  r17
96
  brne  w20ms
97
  ret
98
;---------------------------------------------------------------------------
99
LCD_init:     sbi  DDRD,2          ; LCD RS = OUT
100
    sbi  DDRD,3          ; LCD E  = OUT
101
    sbi  DDRD,4        ; LCD D4 = OUT
102
    sbi  DDRD,5        ; LCD D5 = OUT
103
    sbi  DDRD,6         ; LCD D6 = OUT
104
    sbi  DDRD,7         ; LCD D7 = OUT
105
    cbi  PORTD,2          ; LDC RS = Low
106
107
    ; warte bis PowerUp
108
    ldi  r18,20
109
powerup:  rcall   wait5ms
110
    dec  r18
111
    brne  powerup          ; Power-Up Wartezyklus min 30 ms
112
113
    ; sende Resetsequenz kompatibel zu HD44780 Industriestandard
114
    ldi  r16,0b00110000      ; Reset-Sequenz Teil 1
115
    out  PORTD,r16
116
    rcall  LCD_enable      ; Enable-Impuls
117
    rcall  wait5ms
118
    ldi  r16,0b00110000      ; Reset-Sequenz Teil 2
119
    out  PORTD,r16
120
    rcall  LCD_enable      ; Enable-Impuls
121
    rcall  wait5ms
122
    ldi  r18,100        ; Wartezyklus bei RESET LCD min 100 µs
123
resetLCD:  
124
    nop
125
    nop  
126
    nop
127
    dec  r18
128
    brne  resetLCD
129
    ldi  r16,0b00110000      ; Reset-Sequenz Teil 3
130
    out  PORTD,r16
131
    rcall  LCD_enable      ; Enable-Impuls
132
    rcall  wait5ms
133
134
                ; sende init 1
135
    ldi  r16, 0b00100000        ; 4 Bit Modus aktivieren
136
    out  PORTD, r16
137
    rcall   LCD_enable       ; Enable-Impuls
138
    rcall   wait5ms
139
    ldi  r16, 0b00101000
140
    rcall   LCD_cmd             ; Function Set 4 Bit, 2 Zeilen, 5x7
141
    rcall   LCD_off
142
    rcall   LCD_clear
143
    ldi  r16, 0x06
144
    rcall   LCD_cmd        ; Entry Mode Set, increase+shifted
145
    rcall   LCD_on
146
    ret
147
;---------------------------------------------------------------------------
148
LCD_data:   ldi  r18,0b0000100  ; RS = hi
149
  rjmp  LCD_out
150
;---------------------------------------------------------------------------
151
LCD_cmd:  ldi  r18,0b0000000  ; RS = lo
152
LCD_out:  mov  r17, r16
153
  swap  r17
154
  andi  r16, 0b11110000
155
  or  r16,r18
156
  andi  r17, 0b11110000
157
  or  r17,r18
158
  out  PORTD, r16
159
  rcall   LCD_enable
160
  out  PORTD, r17
161
  rcall   LCD_enable
162
  rcall   wait5ms
163
  ret
164
;---------------------------------------------------------------------------
165
LCD_enable: sbi  PORTD, 3  ; Enable high
166
  nop    ; kurz warten
167
  nop
168
  nop
169
  cbi  PORTD, 3  ; Enable wieder low
170
  ret
171
;---------------------------------------------------------------------------
172
LCD_clear:  ldi  r16, 0b00000001  ; Display löschen
173
  rcall   LCD_cmd
174
  rcall   wait5ms
175
  ret
176
;---------------------------------------------------------------------------
177
LCD_off:  ldi  r16, 0b00001000
178
  rcall   LCD_cmd
179
  rcall   wait5ms
180
  ret
181
;---------------------------------------------------------------------------
182
LCD_on:  ldi  r16, 0x0E
183
  rcall   LCD_cmd
184
  rcall   wait5ms
185
  ret
186
;---------------------------------------------------------------------------
Wenn ich die R/W Jumper umdrehe passiert auch nichts?
Bitte kann mir jemand helfen.


Frank

von flo (Gast)


Lesenswert?

>jedoch wenn ich das LCD anschließe habe ich
>in jeder Zeile schwarze dicke Striche?
ist der kontrast vielleicht zu hoch eingestellt?
einfach mal ein bisschen am poti drehen...

ansonsten könnte es noch sein das die initialisierung nicht richtig 
funktioniert...

gruß
flo

von Michael U. (amiga)


Lesenswert?

Hallo,

ich habe nur überflogen, aber:
LCD_init:     sbi  DDRD,2          ; LCD RS = OUT
    sbi  DDRD,3          ; LCD E  = OUT
    sbi  DDRD,4        ; LCD D4 = OUT
    sbi  DDRD,5        ; LCD D5 = OUT
    sbi  DDRD,6         ; LCD D6 = OUT
    sbi  DDRD,7         ; LCD D7 = OUT
    cbi  PORTD,2          ; LDC RS = Low
...
    ldi  r16,0b00110000      ; Reset-Sequenz Teil 1
    out  PORTD,r16
    rcall  LCD_enable      ; Enable-Impuls

hier wird E auf L gesetzt.

LCD_enable: sbi  PORTD, 3  ; Enable high
  nop    ; kurz warten
  nop
  nop
  cbi  PORTD, 3  ; Enable wieder low
  ret

hier auch, wie soll das einen L-H-L impuls erzeugen?
Das Display übernimmt die Daten mit der H-L Flanke, die wird aber nie 
erzeugt.

Sorge dafür, daß E immer auf L bleibt und ändere LCD_enable:
LCD_enable: sbi  PORTD, 3  ; Enable high
  sbi  PORTD,3   ; Enable auf H
  nop    ; kurz warten
  nop
  nop
  cbi  PORTD, 3  ; Enable wieder low
  ret

Gruß aus Berlin
Michael

von Lukas M. (luke_)


Lesenswert?

Lustig. Ich habe genau dasselbe Problem doch der Code + die Umänderung 
hat nichts gebracht. Vorher hatte ich den Code drinnen.
1
 #define   F_CPU 3686400
2
#include  <avr\io.h>
3
#include  <util\delay.h>
4
5
6
7
/////////////////////////////////////////////////////////////////////////////
8
// allgemeine-Funktionen
9
//---------------------------------------------------------------------------
10
//  wait_ms(..) - Wartet einige Millisekunden
11
//  Die Dauer ist nicht kalibriert.
12
//  PE:  miliSec=Anzahl der zu wartenden Millisekunden
13
//---------------------------------------------------------------------------
14
void wait_ms(int miliSec)
15
{
16
  _delay_loop_2( 1*(F_CPU/(1000/4)) * miliSec);  // 4 Zyklen warteschleife
17
}
18
void wait_us(int mikroSec)
19
{
20
  _delay_loop_2( 1*(F_CPU/(1000000/4)) * mikroSec);  // 4 Zyklen warteschleife
21
}
22
//////////////////////////////////////////////////////////////////////////////
23
//  LCD-Funktionen für myAVR-Board + myAVR-LCD
24
//  4-BitModus an PortD Bit 4-7
25
//  PortD Bit 2 = RS, high=Daten, low=Kommando
26
//  PortD Bit 3 = E, high-Impuls für gültige Daten
27
//---------------------------------------------------------------------------
28
//  lcd_send(..) - sendet ein Byte an LCD im 4-Bit-Modus
29
//  RS muss vorher richtig gesetzt sein
30
//  PE:  data=zu sendendes Byte
31
//---------------------------------------------------------------------------
32
void lcd_send(char data)
33
{
34
  // aktuelles RS ermitteln
35
  char rs=PORTD;
36
  rs&=4;
37
  // High-Teil senden
38
  char tmp=data;
39
  tmp&=0xf0;
40
  tmp|=rs;
41
  PORTD=tmp;
42
  // Schreibsignal
43
  sbi(PORTD,3);
44
  cbi(PORTD,3);
45
  // Low-Teil senden
46
  tmp=data;
47
  tmp&=0x0f;
48
  tmp*=16;
49
  tmp|=rs;
50
  PORTD=tmp;
51
  // Schreibsignal
52
  sbi(PORTD,3);
53
  cbi(PORTD,3);
54
  // verarbeiten lassen
55
  wait_ms(1);
56
}
57
//---------------------------------------------------------------------------
58
//  lcd_cmd(..) - sendet ein Kommando an LCD
59
//  PE:  cmd=Kommando-Byte
60
//---------------------------------------------------------------------------
61
void lcd_cmd(char cmd)
62
{
63
  cbi(PORTD,2);    // RS löschen = Kommando
64
  lcd_send(cmd);    // senden
65
}
66
//---------------------------------------------------------------------------
67
//  lcd_write(..) - sendet ein Zeichen (Daten) an LCD
68
//  PE:  text=Zeichen
69
//---------------------------------------------------------------------------
70
void lcd_write(char text)
71
{
72
  sbi(PORTD,2);    // RS setzen = Daten
73
  lcd_send(text);    // senden
74
}
75
//---------------------------------------------------------------------------
76
//  lcd_write(..) - sendet eine Zeichenkette an LCD
77
//  Die Zeichenkette muss mit 0x00 abgeschlossen sein
78
//  PE:  pText=Zeiger auf Zeichenkette
79
//---------------------------------------------------------------------------
80
void lcd_write(char* pText)
81
{
82
  while(pText[0]!=0)
83
  {
84
    lcd_write(pText[0]);
85
    pText++;
86
  }
87
}
88
//---------------------------------------------------------------------------
89
//  lcd_write(..) - sendet eine Zeichenkette an LCD
90
//  PE:  pText=Zeiger auf Zeichenkette
91
//    count=Anzahl der zu sendenden Zeichen
92
//---------------------------------------------------------------------------
93
void lcd_write(char* pText, int count)
94
{
95
  while(count!=0)
96
  {
97
    lcd_write(pText[0]);
98
    pText++;
99
    count--;
100
  }
101
}
102
//---------------------------------------------------------------------------
103
//  lcd_home(..) - Cursor auf Position 1,1
104
//---------------------------------------------------------------------------
105
void lcd_home()
106
{
107
  lcd_cmd(0x02);
108
  wait_ms(2);      // warten
109
}
110
//---------------------------------------------------------------------------
111
//  lcd_clear(..) - löscht die Anzeige im LCD
112
//---------------------------------------------------------------------------
113
void lcd_clear()
114
{
115
  lcd_cmd(0x01);
116
  wait_ms(2);      // warten
117
}
118
//---------------------------------------------------------------------------
119
//  lcd_on(..) - schaltet das LCD an
120
//---------------------------------------------------------------------------
121
void lcd_on()
122
{
123
  lcd_cmd(0x0E);
124
}
125
//---------------------------------------------------------------------------
126
//  lcd_off(..) - schaltet das LCD aus
127
//---------------------------------------------------------------------------
128
void lcd_off()
129
{
130
  lcd_cmd(0x08);
131
}
132
//---------------------------------------------------------------------------
133
//  lcd_goto(..) - setzt die Cursorposition
134
//   PE:  row = Zeile 1..2
135
//    col = Spalte 1..16
136
//---------------------------------------------------------------------------
137
void lcd_goto(int row, int col)
138
{
139
  row--;        // Null-basierend
140
  row&=0x01;      // sicherheitshalber
141
  row*=0x40;      // Zeile nach Bit 6 bringen
142
  col--;        // Null-basierend
143
  col&=0x0f;      // sicherheitshalber
144
  char tmp=row|col;
145
  tmp|=0x80;      // Cursor setzen
146
  lcd_cmd(tmp);    // senden
147
}
148
//---------------------------------------------------------------------------
149
//  lcd_init(..) - Schaltet die Ports und Initialisiert das LCD
150
//---------------------------------------------------------------------------
151
void lcd_init()
152
{
153
  // Port D = Ausgang
154
  DDRD=0xff;
155
  PORTD=0;
156
  // warten bist LCD-Controller gebootet
157
  wait_ms(50);    
158
  // SOFT-RESET
159
  PORTD = 0x30;  //0b00110000;
160
  sbi(PORTD,3);
161
  cbi(PORTD,3);
162
  wait_ms(5);
163
  PORTD = 0x30;  //0b00110000;
164
  sbi(PORTD,3);
165
  cbi(PORTD,3);
166
  wait_us(100);
167
  PORTD = 0x30;  //0b00110000;
168
  sbi(PORTD,3);
169
  cbi(PORTD,3);
170
  wait_ms(5);
171
  
172
  // 4-BitModus einschalten
173
  PORTD=0x20;      
174
  // Schreibsignal
175
  sbi(PORTD,3);
176
  cbi(PORTD,3);
177
  wait_ms(5);
178
  
179
  // ab hier im 4-Bit-Modus
180
  lcd_cmd(0x28);    // Funktions-Set: 2 Zeilen, 5x7 Matrix, 4 Bit
181
  //lcd_off();
182
  lcd_cmd(0x06);    // Entry Mode
183
  lcd_on();
184
  lcd_clear();
185
}
186
//---------------------------------------------------------------------------
187
// Main-Funktion
188
//---------------------------------------------------------------------------
189
int main (void)
190
{
191
  wait_ms(200);
192
  lcd_init();
193
  lcd_goto(1,1);
194
  lcd_write("  H+");
195
  
196
  while (1) {  } // Mainloop
197
return 0;
198
}
199
//---------------------------------------------------------------------------

Ich hab die lcd_write für die 2. Zeile gelöscht und siehe da 2. Zeile 
wird nicht mehr angezeigt. Doch in der 1. Zeile habe ich nur Balken 
schwarze dicke fette nervige Balken...


Bin echt schon am verzweifeln.. ansich ist das ja ein tolles Anfänger 
Board und übersichtlich aber wenn man das LCD Display nich bekommt muss 
man sich sein eigenes bauen und da happerts ich hab zwar schon 5 mal neu 
verdrahtet aber geändert hat sich nichts....!
Gibts da nicht so einen Stanard Fehler?



Lukas

von Lukas M. (luke_)


Lesenswert?

hat keiner eine Idee?


Lukas

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Wieso verwendest du nicht irgendeine fertige LCD lib, dann musst du 
nicht alle Funktionen selbst definieren. Ich weiß nicht, ob die mit dem 
myAVR- Board funktioniert, aber vielleicht versuchst du mal die lib von 
Peter Fleury, und wenn du mit der auch Probleme hast, versuch mal die 
hier aus dem wiki.

Gruß, Steffen

von Lukas M. (luke_)


Lesenswert?

Ja ich hab auch ne andere Bibliothek probiert aber dasselbe liegts 
vielleicht an der Hardware?


Lukas

von Lukas M. (luke_)


Lesenswert?

ach bitte kommt helft mir ich kack schon 2 Wochen damit rum!

von Teplotaxl X. (t3plot4x1)


Lesenswert?

Du hast keinen Anspruch auf Hilfe ;)

von Lukas M. (luke_)


Lesenswert?

und warum nicht?

von holger (Gast)


Lesenswert?

>>Du hast keinen Anspruch auf Hilfe ;)
>und warum nicht?

Weil hier keiner dazu verpflichtet ist dir zu antworten.

Fassen wir mal zusammen:

>ich hab zwar schon 5 mal neu verdrahtet aber
>geändert hat sich nichts

Wozu? Du musst nur einmal richtig anschliessen. Dann gehts auch.

>liegts vielleicht an der Hardware?

Das kann man mit 50% mit Ja beantworten.
Die restlichen 50% bedeuten Fehler in der Software.

>Gibts da nicht so einen Stanard Fehler?

Nein.

>Vorher hatte ich den Code drinnen.

Und was nimmst du jetzt als Code?

Siehst du nun warum dir keiner mehr antwortet?

Ich sags dir:
a) LCD Probleme wurden hier schon 10000000 mal durchgekaut
b) Niemand weiss ob du dein Display korrekt angeschlossen hast
c) Niemand weiss was du deinem Display schon so alles angetan hast
d) Niemand weiss ob du Kurzschlüsse oder offene Leitungen hast
e) Niemand weiss ob dein Display nicht schon Schrott ist

Was erwartest du? Ein Wunder?

von Lukas M. (luke_)


Lesenswert?

Ja ich kann ja viel dafür das das Thema LCD DISPLAY so brisant ist...

Tschuldigung dass ich gefragt habe..!

von holger (Gast)


Lesenswert?

>Ja ich kann ja viel dafür das das Thema LCD DISPLAY so brisant ist...

Ist es nicht.

>Tschuldigung dass ich gefragt habe..!

Fragen brauchst du nicht WENN DU DAS GOTTVERDAMMTE DATENBLATT
mal lesen würdest. Du kommst damit nicht klar? Macht doch nichts.
Dann bist du halt noch nicht so weit ein LCD anzusteuern.
Als ich mit Elektronik angefangen habe gings mir genauso.
Nach ein paar Jahren Erfahrung sammeln wurde es dann immer besser.
Und heute habe ich selbst mit Grafikdisplays keine Probleme.

von Lukas M. (luke_)


Lesenswert?

Aha und was steht in dem sogenannten Gottverdammten Datenblatt drinnen? 
die Pinbelegung? ddie Betriebstemperatur? Glaub mir ich frage nicht 
vorher ohne alles auszuschließen und als Spass löte ich nicht alles um 
ich hab wirklich schon alles probiert darum habe ich gefragt ob 
vielleicht einer eine Idee hatt , aber naja vielleicht ist es einfache 
ein falsches Forum, dass sowiso nur mehr aus alteingesessen 
Besserwissern besteht die einfach nicht wollen das die Jugend mal was 
anderes macht als Drogen nehmen und KOMA saufen.


Basta

von holger (Gast)


Lesenswert?

>Aha und was steht in dem sogenannten Gottverdammten Datenblatt drinnen?

Alles was wichtig ist. Man muss es nur lesen.

>alteingesessen Besserwissern besteht

Ob du es glaubst oder nicht: Mein erstes LCD habe ich angesteuert
als es noch gar kein Internet gab. Wie hab ich das bloß geschafft?
Haufenweise Seiten auf Papier (das sind diese dünnen weissen Dinger
die man ohne Bier nicht essen kann).

Ich konnte niemanden fragen. Englisch konnte ich auch nicht besonders
gut. Aber da waren diese Bildchen. Timing Diagramme. Wie schön!
Alles so programmiert wie es in den Bildchen zu sehen war und
alles funktioniert tadelos.

Euch Jungschissen kann es einfach nicht schnell genug gehen.
Ist ja auch immer einer da der euch den Arsch abwischt
oder die Schuhe zubindet.

von Lukas M. (luke_)


Lesenswert?

holger wrote:
>>Aha und was steht in dem sogenannten Gottverdammten Datenblatt drinnen?
>
> Alles was wichtig ist. Man muss es nur lesen.
>
 ach wirklich nur blöd dass ich alles durchgearbeitet hab und es 
funktioniert absolut garnichts ausser diese behinderten schwarzen 
Balken.... aber trotzdem Danke

von Hoffi (Gast)


Lesenswert?

Hi,
falls noch wer bei diesen zickenkrieg ne antwort brauch:
habe gerade auch mein ersten LCD in betrieb genommen und hatte auch die 
dicken schwarzen Striche.
Bei mir lag es am Kontrast, konnte wenn ich schräk auf das LCD geguckt 
habe den text erkennen.
eben fix nach dem schaltplan vom AVR-GCC-Tutorial ein poti auf ein 
steckbrett verkabelt, eingeschaltet, bissel rumgedreht, und es tut nun 
einwandfrei

von funky (Gast)


Lesenswert?

> Euch Jungschissen kann es einfach nicht schnell genug gehen.
> Ist ja auch immer einer da der euch den Arsch abwischt
> oder die Schuhe zubindet.

:D schlecht geschissen?

von Lukas M. (luke_)


Lesenswert?

Lustigerweise hab ich mir das stk 500 geholt :) flux den Mega8 rein und 
programmiert dann den uC ins myAvr Board rein... neues LCD von CSD rein 
und habe dasselbe Problem. Zuerst dachte ich es läge an den JTAG-Fuses 
doch die hat mein Controller nicht einmal.

Irgendwie glaube ich ich hab in dem Code ein Initialisierungsproblem....


Lukas

von holger (Gast)


Lesenswert?

AVR Tutorial:

Pin #-LCD  Bezeichnung-LCD  Pin-µC
4          RS               PD4
6          E                PD5
11         DB4              PD0
12         DB5              PD1
13         DB6              PD2
14         DB7              PD3


myAvr Board:

4          RS               PD2
6          E                PD3
11         DB4              PD4
12         DB5              PD5
13         DB6              PD6
14         DB7              PD7

von Lukas M. (luke_)


Lesenswert?

und wass soll das heissen?


Lukas

von holger (Gast)


Angehängte Dateien:

Lesenswert?

>und wass soll das heissen?

Das es nicht egal ist welchen Code du nimmst.

Brenn mal die HEX Datei im Anhang.
Funktioniert die?

von Lukas M. (luke_)


Lesenswert?

HOLGEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEER





du bist der Beste!!!!!!!!!! es funktioniert DANKE DANKE DANKE du bist ab 
sofort mein GOTT DANKEEEEEEEEEEEEEEEEEEEEEEEE


Wenn ich jetzt noch den CODE HABEN KÖNNTE WÄRE ALLES PERFEKT....

von holger (Gast)


Angehängte Dateien:

Lesenswert?

>Wenn ich jetzt noch den CODE HABEN KÖNNTE WÄRE ALLES PERFEKT....

Viel Spass mit meinem Bastelkram ;)
Ist alles andere als perfekt, aber geht meistens.

von Lukas M. (luke_)


Lesenswert?

danke schön!

von Lukas M. (luke_)


Lesenswert?

ich geh jetzt ins bett hab probleme dass ich den quell code builde und 
bin schon zu müde... muss morgen in die Schule

von Lukas M. (luke_)


Lesenswert?

Lustigerweise mache ich heute noch mal den Controller ins myAVR Board 
rein den ich gestern noch im Stk500 umprogramieren wollte. Bin aber 
nicht mehr dazugekommen. Und siehe da es funktioniert nicht.....komisch 
ich hab drei verschiedene Controller reingemacht und immer dasselbe 
wieder die schwarzen balken....




Komisch ist das ich hab gar nichts gemacht ausser ins stk500 gesteckt

von holger (Gast)


Lesenswert?

>Und siehe da es funktioniert nicht.....komisch
>ich hab drei verschiedene Controller reingemacht und immer dasselbe
>wieder die schwarzen balken....

Ist aber schon sehr merkwürdig das meine HEX Datei
nur ein einziges mal funktioniert :(

Was für ein Display hast du eigentlich?
Schon mal am Kontrastpoti gedreht? Bei einigen
LCD muß man da sehr vorsichtig dran drehen.
Oder hast du irgendwo einen Wackelkontakt in deiner
Verdrahtung? Wie sieht die eigentlich aus?

von holger (Gast)


Lesenswert?

>Wie sieht die eigentlich aus?

Kabelllänge z.B. also nicht die Pinnummern.
Die sind ja bekannt.

von Lukas M. (luke_)


Lesenswert?

ca 10cm kabeln die gehen vom Ausgang des avr boards direkt auf ein 
steckbrett wo das lcd auf einer stiftleiste drinnen steckt...


LCD verwende ich dieses http://www.csd-electronics.de/de/index.htm

naja irgendwie tuts mich wundern gestern alles pipifein gegangen dann 
wollte ich es umprogramieren und zwar einen port high schalten für die 
Hintergrundbeleuchtung und den Text ändern bin aber nicht dazugekommen 
heute mach ich den Controller von gestern rein und was ist nichts.... 
ich hab nichtmal das Board berührt .....

von holger (Gast)


Lesenswert?

10cm ist auf jeden Fall nicht zu lang.
Steckbretter sind leider manchmal etwas eigenwillig
weil die Kontaktklammern oft recht schnell auslatschen.
Das ist schon mal eine Fehlerquelle.

>LCD verwende ich dieses

Da gibt es sehr viele LCDs ;)
Eine genaue Bezeichnung oder Bestellnummer
wäre sehr hilfreich.

von Lukas M. (luke_)


Lesenswert?

so das funktioniert nicht hier die Daten
Artikelpreis: 14.95 EUR
Mengenrabatt!

LCD-Punkt-Matrix-Modul

Features:

- weiße LED Hintergrundbeleuchtung
- LCD-STN-Anzeige blau negativ
- Controller KS0070B
- Interface für 4 bit o. 8 bit Datenbus
- ( LxBxH): 80x36x10,5mm
- CGRAM (64 x 8 Bit)



Kenndaten

Spannung.......................................2.7 bis 5.5V
Strom.....................................................0,50mA
Strom (Beleuchtung)...........................55mA (5V)
Character-Size................................2,95x5,55mm
Temp.-Bereich.................................. -20..+70°C





noch zu erwähnen wäre dass es dem LCD egal ist ob  ein Controller 
drinnen ist oder nicht beidemale die selben Sympthome.

Steckbrett ist neu hab ich gestern bekommen ebenso LCD

von Lukas M. (luke_)


Lesenswert?

also gerade getestet es ist egal ob irgend was angesteckt ist nur darf 
ich die Leitungen zu 5V UND 0V nicht abklemmen... ich probiere jetz 
nochmals dass ich den controller aufs steckbrett machen und dann 
verkabel.

Brauch ich den uC eh nur an 5v und GND hängen oder brauche ich einen 
Stützkondensator? Netzgerät ist eins dass wir in der Schule gebaut 
haben.




Lukas

von holger (Gast)


Lesenswert?

>also gerade getestet es ist egal ob irgend was angesteckt ist nur darf
>ich die Leitungen zu 5V UND 0V nicht abklemmen... ich probiere jetz
>nochmals dass ich den controller aufs steckbrett machen und dann
>verkabel.

Nein, das tust du nicht!
Gestern hat es doch geklappt. Was stand eigentlich auf dem Display?
Geh systematisch vor. Controller auf das myavr Board.
Die Verdrahtung bleibt so wie sie ist.

Ich hab dir eine Datei für Ks0066 geschickt.
Das kann ich dir auf KS0070 ändern.
Wieviel Zeilen Spalten hat das Display?
Ich schick dir dann eine neue HEX Datei zum probieren.

von Lukas M. (luke_)


Lesenswert?

oki  donki dan mach ich es wieder rückgängig war dasselbe....


ich hau aber auch für das neue hex file einen anderen atmega hab ja 10 
stück davon :D


16x2



Danke Nochmals dass du dir so viel Zeit nimmst !!!

von holger (Gast)


Angehängte Dateien:

Lesenswert?

So, hier für KS0070.

von Lukas M. (luke_)


Lesenswert?

es ist wieder dass gleiche.... aber warum funktionierts gestern und 
heute nicht????

achja zum programmen verwende ich immer den grünen sockel beim stk 
500...

von holger (Gast)


Lesenswert?

>es ist wieder dass gleiche.... aber warum funktionierts gestern und
>heute nicht????

Tut mir leid, das kann ich dir auch nicht sagen.
Ab hier hilft nur noch ein Speicherosci.
Läuft der ATMega auch? Kommen die Signale am LCD an?
Taktquelle nicht falsch gefused? Ich weiss es nicht :(

von Lukas M. (luke_)


Lesenswert?

also ich hab an den fuses nichts gemacht.... ich denke der Controller 
läuft nicht richtig.... denn am steckbrett hat es auch nicht 
funktioniert wie kann ich den testen ob er "läuft"????

von Lukas M. (luke_)


Lesenswert?

ich seh grad das bei external crystal ein häkchen ist es steh auch noch 
dort 16k ich denke das ist die frequen.... also 16 hz oder?

ich hab am avr board aber nur einen 3.6964 Quarz !

Soll ich den interne aktivieren???



Lukas

von Lukas M. (luke_)


Lesenswert?

keiner ne idee??

von Lukas M. (luke_)


Lesenswert?

Mittlerweile hab ich mich wieder mal dran gesetzt und probiert das LCD 
zum laufen zu bringen. Ergebnis wie oben funktioniert nicht.
Ich hab jetzt den gesammten Aufbau nochmals kontrolliert und keinen 
Fehler entdeckt. Mittlerweile bin ich echt schon am verzweifeln , denn 
wer hätte gedacht dass ein LCD anzusteuern so schwer sein kann. Naja ich 
geb trotzdem nicht auf.
Deshalb hab ich 2 Fragen.
Gibts es in AVR Studio irgendwelche Einstellungen die Verhindern dass 
mein Controller das tut was er soll? an den Fuses kanns nicht liegen an 
denen hab ich nichts gedreht.

Ist es vielleicht besser alles nochmal neu nach einer anderen Quelle z.B 
uC-Wiki aufzubauen?



Vielen Dank für die Geduld,Lukas

von GiWin (Gast)


Lesenswert?

Tschuldigung wenn ich mich einmische...

Danke Holger für den obigen Code. Nach sowas hab ich wochenlang gesucht.
Aber alles was ich gefunden hatte waren entweder schnipsel, welche für n 
anfänger nicht wirklich geeignet sind oder irgendwelche libs die bei mir 
einfach nicht getan haben.

danke dabke danke.

GiWin

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.