- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 6 von 6

Thema: Wiedermal ein LCD Problem

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.10.2004
    Ort
    Feldkirchen in Kärnten
    Beiträge
    203

    Wiedermal ein LCD Problem

    Anzeige

    Praxistest und DIY Projekte
    Ich habe mir jetzt mal ein Display an meinen Mega8 angeschlossen.
    Programmierung und sonstiges haut hin. Das Problem ist nur, dass das Display nur funktioniert, wenn alles am ISP hängt.
    Dann funktioniert das Initialisieren auf Knopfdruck usw. .S
    Sobald ich den PC abhänge und die Initroutine aufrufe verschwinden die schwarzen Balken und das Display bleibt leer.

    Was ist da los? Spannungsproblem? Habe fürs Display auch einmal einen eigenen 7805 zusäzlich aufs Steckbrett getan. Hilft leider auch nichts.
    Wie könnte ich das Problem lösen?

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    08.08.2004
    Ort
    Stuttgart
    Alter
    46
    Beiträge
    11
    Mmmh,

    So auf die schnelle Würde mir da der Reset einfallen. Hast Du den über einen Pull-Up an Vcc angeschlossen? Wenn nämlich der ISP dran hängt ist der vom PC asu deffiniert an Vcc oder GND ist der weg und kein Pull-Up am Reset Pin hängt der in der Luft (undeffinierter Pegel)

    Grüßle Jochen

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.10.2004
    Ort
    Feldkirchen in Kärnten
    Beiträge
    203
    Danke aber ich hab ihn mit pullup auf vcc geschalten.
    da haut sowieso was nicht hin. einmal funktionierts einmal nicht.
    wenns am ISP hängt merkt sich das display anscheinend was es als letzes getan hat, weil es dann ohne den schwarzen balken startet.

    ich kenn mich bald selbst nichtmehr aus.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    08.08.2004
    Ort
    Stuttgart
    Alter
    46
    Beiträge
    11
    Hast du eine serielle Schnittstelle mit in Betrieb? Wenn ja könntest Du da ja mal ein paar debug-Informationen drüber schicken um zu sehen bis wo das Programm kommt bzw. um den Fehler einzugrenzen.

    Ansonsten poste doch mal Deinen Code dann kann man mal drüber schaunen.

    Grüßle Jochen

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.10.2004
    Ort
    Feldkirchen in Kärnten
    Beiträge
    203
    ne serielle ab ich nicht aber ich schick mal meinen miserablen probecode
    Code:
    .include "m8def.inc"
    .def temp =r16
    .def data =r17
    
             ldi temp, LOW(RAMEND)             ; LOW-Byte der obersten RAM-Adresse
             out SPL, temp
             ldi temp, HIGH(RAMEND)            ; HIGH-Byte der obersten RAM-Adresse
             out SPH, temp
    ;Ausgänge setzen
    	ldi temp,0b000111111		;Portb pin 0-5 als Ausgang definieren
    					;0-3 = daten 4=Enable 5=RS
    	out DDRB,temp
    
    	ldi temp,0
    	out PORTB,temp
    	
    	ldi temp,0b10000000
    	out DDRD,temp
    	ldi temp,255
    	out PortD,temp
    	loopvor:
    	sbis PinD,5
    	rjmp init
    	rjmp loopvor
    ;INITIALISIERUNG
    init:
    	ldi data,0b00100000
    
    	rcall lcd_send
    	rcall lcd_send
    	
    	ldi data,0b01000100
    	
    	rcall lcd_send
    		
    	rcall delay_39us
    	
    	ldi data,0b00000000
    	rcall lcd_send
    	ldi data,0b11110000
    	rcall lcd_send
    	
    	rcall delay_39us
    	
    	ldi data,0b00000000
    	rcall lcd_send
    	ldi data,0b00010000
    	rcall lcd_send
    	
    	rcall delay_2ms
    	
    	ldi data,0b00000000
    	rcall lcd_send
    	ldi data,0b01100000
    	rcall lcd_send
    main:	
    	loop:
    	sbis PinD,6
    	rcall clear
    	sbis PinD,5
    	rcall send_h
    	ldi temp,0b01111111
    	out PORTD,temp
    	rjmp loop
    		
    lcd_send:
    	mov temp,data
    	swap temp
    	andi temp,0b00001111
    	out PortB,temp
    	
    	rcall lcd_enable
    	
    	mov temp,data
    	andi temp,0b00001111
    	out PortB,temp
    	
    	rcall lcd_enable
    	
    	ret	
    	
    	
    lcd_enable:
    	sbi PortB,4
    	nop
    	nop
    	nop
    	cbi PortB,4
    	ret
    	
    	
    delay_39us:
    		ldi temp,100
    delay39us_loop:	dec temp
    		brne delay39us_loop
    		ret
    
    delay_2ms:
    		ldi temp,25
    delay2ms_loop:	dec temp
    		brne delay2ms_loop
    		ret
    		
    clear:
    		ldi data,0b00000001
    		rcall lcd_send
    		ldi temp,255
    		out Portd,temp
    		rcall delay_2ms
    		ret
    
    send_h:		
    		ldi data,'h'
    		rcall lcd_data_send
    		ldi temp,255
    		out PortD,temp
    		rcall delay_2ms
    		ret
    lcd_data_send:
    
    	mov temp,data
    	swap temp
    	andi temp,0b00001111
    	out PortB,temp
    	sbi PortB,5
    	rcall lcd_enable
    	
    	mov temp,data
    	andi temp,0b000011111
    	out PortB,temp
    	sbi PortB,5
    	rcall lcd_enable
    	
    	ret

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.10.2004
    Ort
    Feldkirchen in Kärnten
    Beiträge
    203
    So jetzt funktionierts.
    Das Display macht nur nicht iwrklich das was ich beim init von ihm will. ich kann die größe der buchstaben ändern usw. es bleibt immer alles gleich. ich muss einfach nachher das ganze nochmal extra eingeben dann funktionierts ohne weiteres.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests