Forum: Mikrocontroller und Digitale Elektronik fehlersuche 161A


von wanderameise (Gast)


Lesenswert?

hoi,

habe das tutorial mal durchgeschaut und es so angepasst wie sein sein 
soll, leider funktioniert es nict so wie ich will:

main:
1
  DDRA = 0xff;
2
  PORTA = 0x00;
3
  _delay_ms(20);
4
  
5
  //PA0=RS PA1=R/W
6
  PORTA &= ~(1<<PA0);
7
  PORTA &= ~(1<<PA1);
8
  
9
  //DB4-DB7=PA3-PA6
10
  //sende 3
11
  PORTA |= (1<<PA3); 
12
  PORTA |= (1<<PA4);
13
  PORTA &= ~(1<<PA5);
14
  PORTA &= ~(1<<PA6);
15
   
16
  //PA2=enable
17
  PORTA |= (1<<PA2);
18
  _delay_us(5);                  
19
  PORTA &= ~(1<<PA2);
20
  _delay_ms(5);
21
   
22
  PORTA |= (1<<PA2);
23
  _delay_us(5);                  
24
  PORTA &= ~(1<<PA2);
25
  _delay_ms(2);
26
  
27
  PORTA |= (1<<PA2);
28
  _delay_us(5);                  
29
  PORTA &= ~(1<<PA2);
30
31
  // 4 Bit Modus aktivieren
32
  PORTA &= ~(1<<PA3); 
33
  PORTA |= (1<<PA4);
34
  PORTA &= ~(1<<PA5);
35
  PORTA &= ~(1<<PA6);
36
  
37
  PORTA |= (1<<PA2);
38
  _delay_us(5);                  
39
  PORTA &= ~(1<<PA2);   
40
  
41
  _delay_ms(1);
42
        lcd_command(0x25);
43
  
44
  _delay_ms(1);
45
  lcd_command(0x0F);

lcd_command wie im tutorial
1
void lcd_command(unsigned char temp1)
2
{
3
  unsigned char temp2 = temp1;
4
 
5
  PORTA &= ~(1<<PA0);        
6
 
7
  temp1 = temp1 >> 4;            
8
  temp1 = temp1 & 0x0F;
9
   
10
  PORTA &= ~(1<<PA3); 
11
  PORTA &= ~(1<<PA4);
12
  PORTA &= ~(1<<PA5);
13
  PORTA &= ~(1<<PA6);
14
  
15
  if(temp1 & 0x01) PORTA |=(1<<PA3) ;      
16
  if(temp1 & 0x02) PORTA |=(1<<PA4) ;
17
  if(temp1 & 0x04) PORTA |=(1<<PA5) ;
18
  if(temp1 & 0x08) PORTA |=(1<<PA6) ;
19
   
20
  _delay_us(1); 
21
  PORTA |= (1<<PA2);
22
  _delay_us(5);                  
23
  PORTA &= ~(1<<PA2);
24
 
25
  temp2 = temp2 & 0x0F;
26
   
27
  PORTA &= ~(1<<PA3); 
28
  PORTA &= ~(1<<PA4);
29
  PORTA &= ~(1<<PA5);
30
  PORTA &= ~(1<<PA6);        
31
   
32
  if(temp2 & 0x01) PORTA |=(1<<PC3) ;      
33
  if(temp2 & 0x02) PORTA |=(1<<PA4) ;
34
  if(temp2 & 0x04) PORTA |=(1<<PA5) ;
35
  if(temp2 & 0x08) PORTA |=(1<<PA6) ;
36
  
37
  PORTA |= (1<<PA2);
38
  _delay_us(5);                  
39
  PORTA &= ~(1<<PA2);
40
  _delay_us(42);
41
}

zu sehen sind 8 kästchen á 5x8. aber kein blinken!?!
bein durchmessen liegen auch alle pegel an den richtigen ports, bzw 
inputs des LCDs an! wo liegt mein fehler?

von wanderameise (Gast)


Lesenswert?

keiner ne idee?

von micha (Gast)


Lesenswert?

nehme mal an, es gebt um ein LCD Display. Hört sich so an, als wenn die 
Kontrastspannung zu hoch ist. Hast Du ein Poti dran?

von wanderameise (Gast)


Lesenswert?

ja habe ein poti dran, es ist nicht voll aufgedreht und auch wenn ich 
diese  spannung verändere tut sich nichts!

von holger (Gast)


Lesenswert?

>ja habe ein poti dran, es ist nicht voll aufgedreht und auch wenn ich
>diese  spannung verändere tut sich nichts!

Dann ist das Poti wohl falsch angeschlossen, und der Kontrast
so voll aufgedreht.

von wanderameise (Gast)


Lesenswert?

hehe ne meinte es tut sich nichts im sinne von cursor blinken etc...
der kontrast ändert sich schon, nur das lcd reagiert nicht auf meine 
befehle bzw die initialisierung läuft schief...

von wanderameise (Gast)


Lesenswert?

hier das datenblatt
http://tinyurl.com/yh5ah82

von holger (Gast)


Lesenswert?

Welcher AVR, welche Taktfrequenz?

von wanderameise (Gast)


Lesenswert?

atmega32, 16Mhz

von wanderameise (Gast)


Lesenswert?

mh 8. letzte zeile im 2. quote. könnte ein fehler sein :)

von wanderameise (Gast)


Lesenswert?

hat nix gebracht :(

von holger (Gast)


Angehängte Dateien:

Lesenswert?

Probier mal die Hex-Datei im Anhang.

von wanderameise (Gast)


Lesenswert?

hab den fehler gefunden, war was falsch gepolt.danke trotzdem!!

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.