-
 
          
	
		
		
	
	
	
	
	
		
			
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Roboter-Spezialist
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
				
					Problem mit Timer und LCD-Ausgabe
				
					
						
							Nabend zusammen,
 
 Ich habe folgendes Problem: Habe ein 128*64 LCD an einem MEGA32. Hab verschiedene Menüs, die ich über einen Touchcontroller ansteuern kann. Das funktioniert soweit auch alles. Nun wollte ich eine Funktion einprogrammieren dass wenn nach 15 sek keine Bedienung/Eingabe über den Touchcontroller erfolgt, das Hauptmenu angezeit wird. Seit ich nun den Timer programmiert und verwendet habe, bekomme ich meine Menus immer total versetzt angezeigt (gebe die Menus mit Showpic aus) sodass man nichts mehr erkennen kann. Nehme ich den Timer wieder raus, läuft alles bestens. Weis da einer weiter? Hier mal Ausschnitte aus dem Programmcode:
 
 $regfile = "m32def.dat"
 $framesize = 32
 $swstack = 32
 $hwstack = 32
 $crystal = 16000000
 $baud = 9600
 $lib "glcdKS108.lib"
 Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Portd , Ce = 2 , Ce2 = 3 , Cd = 4 , Rd = 5 , Reset = 7 , Enable = 6
 
 
 Config Adc = Single , Prescaler = Auto , Reference = Internal
 Config Timer1 = Timer , Prescale = 256
 Stop Timer1
 On Timer1 Cntfull
 Enable Interrupts
 Config Portb.0 = Output
 Portb.0 = 1
 Dim Beltimeist As Byte , Beltimesoll As Byte , Menutimeist As Byte , Menutimesoll As Byte
 Dim Temp As Byte , X As Word , Y As Word
 Dim Menu As Integer
 Dim Nacht As Bit
 Dim Menul As Integer
 Start Adc
 
 Print "Alles wird übertragen"
 Showpic 0 , 0 , Mainmenu
 Menu = 0
 Menul = 0
 Beltimesoll = 15
 Beltimeist = 15
 Menutimesoll = 15
 Menutimeist = 15
 
 Do
 If X > 20 And Y > 20 Then : Beltimeist = Beltimesoll : Menutimeist = Menutimesoll : End If
 If Beltimeist <= 0 Then : Portb.0 = 0 : End If
 If Menutimeist <= 0 Then : Menu = 0 : Showpic 0 , 0 , Mainmenu : End If
 If Menu <> 0 Then : Start Timer1 : Else : Stop Timer1 : End If
 Select Case Menu
 Case 0 : Gosub Menu0
 Case 1 : Gosub Menu1
 Case 2 : Select Case Menul
 Case 0 : Gosub Menul0
 Case 1 : Gosub Menul1
 Case 2 : Gosub Menul2
 Case 3 : Gosub Menul3
 Case 4 : Gosub Menul4
 End Select
 Case 3 : Gosub Menu3
 Case 4 : Gosub Menu4
 Case 5 : Gosub Menu5
 Case 6 : Gosub Menu6
 Case 7 : Gosub Menu7
 Case 8 : Gosub Menu8
 Case 9 : Gosub Menu9
 Case 10 : Gosub Menu10
 Case 11 : Gosub Menu11
 Case 12 : Gosub Menu12
 End Select
 
 Waitms 200
 Loop
 End
 .
 .
 .
 
 Cntfull:
 Beltimeist = Beltimeist - 1
 Menutimeist = Menutimeist - 1
 Return
 
 Mainmenu:
 $bgf "mainmenu.bgf"
 Musik:
 $bgf "musik.bgf"
 Musikplayer:
 $bgf "Musik_player.bgf"
 Musiknoconn:
 $bgf "Musik_noconnection.bgf"
 Steuerung:
 $bgf "steuerung.bgf"
 Steuerungl1:
 $bgf "Steuerung_Lampe1.bgf"
 Steuerungl2:
 $bgf "Steuerung_Lampe2.bgf"
 Steuerungl3:
 $bgf "Steuerung_Lampe3.bgf"
 Steuerungl4:
 $bgf "Steuerung_Lampe4.bgf"
 Pccontrol:
 $bgf "PCControl.bgf"
 Einstellungen:
 $bgf "Einstellungen.bgf"
 Einstellungen_beltime:
 $bgf "Einstellungen_Beltime.bgf"
 Einstellungen_kontrast:
 $bgf "Einstellungen_Kontrast.bgf"
 Einstellungen_menutime:
 $bgf "Einstellungen_Menutime.bgf"
 Einstellungen_nachts_aus:
 $bgf "Einstellungen_Nachts_Aus.bgf"
 Einstellungen_nachts_ein:
 $bgf "Einstellungen_Nachts_Ein.bgf"
 Einstellungen_nachts_eingabe_bis:
 $bgf "Einstellungen_Nachts_Eingabe_Bis.bgf"
 Einstellungen_nachts_eingabe_von:
 $bgf "Einstellungen_Nachts_Eingabe_Von.bgf"
 
 
 mfg mel
 
 
 EDIT: x und y sind die übertragenen Koordinaten vom Touchcontroller
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Robotik Einstein
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							Hallo,
 
 was mir auffällt, Du verwendest Byte, und frägst die nach <0 ab, das kann aber nie passieren, denn wenn man von 0 eins abzieht kommt bei Byte 255 raus !
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Roboter-Spezialist
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							hab es auch schon mit integer versucht aber da ist das gleiche problem
						 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Roboter Genie
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							Hallo mel,
 ich denke, dass dir der Timer Interrupt in die Ausgabe der Bilder dazwischen funkt. Dann kommt das Timing des LCDs durcheinander.
 Schreib mal testweise so:
 
 Disable Interrupts
 Select Case Menu
 .
 .
 .
 End Select
 Enable Interrupts
 Waitms 200
 
 Wenn es dann funzt, solltest du die Do...Loop etwas ändern.
 
 Gruß
 
 Rolf
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Robotik Einstein
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							Auch mal den Wert bei $hwstack erhöhen (mind. 40), der könnte nämlich etwas knapp werden bei ISR und Unterprogrammen   
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Roboter-Spezialist
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							Hey super danke @ linux_80 und for_ro hab es nach euren Vorschlägen geändert und funktioniert einwandfrei. Da ist das Wochenende doch geretten. Vielen dank noch mal
 
 Mfg
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Roboter-Spezialist
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							sry ich bins nochmal habe noch ein problem. über showpic kann ich ohne probleme bilder darstellen. nun möchte ich aber einen einfachen text auf dem display ausgeben aber das display zeigt einfach nix an. und da ich ja bilder anzeigen kann denke ich nicht dass das display defekt ist oder?
 
 $regfile = "m32def.dat"
 $framesize = 32
 $swstack = 32
 $hwstack = 32
 $crystal = 16000000
 $baud = 9600
 $lib "glcdKS108.lib"
 
 
 Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Portd , Ce = 2 , Ce2 = 3 , Cd = 4 , Rd = 5 , Reset = 7 , Enable = 6
 
 
 
 
 Locate 8 , 32
 Lcd "Hallo"
 
 das ist der code aber es tut sich nix. hab schon alles mögliche ausprobiert...kann mir da einer helfen?
 
 mfg
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Fleißiges Mitglied
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							Hallo MelMan.
 
 Beim KS0108 ist kein Zeichensatz integriert, man muss ihn im Programm einbinen, guck mal hier und in der Bascom-Hilfe unter SETFONT.
 
 Ich habe noch eine Frage: Du hast doch die Bascom-vollversion, oder? Bei den ganzen BGFs die du einbindest... un ich habe schon probleme wenn ich 2 Fonts einbinde...
 
 MfG Bauteiltöter
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Roboter-Spezialist
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							Hey Bauteiltöter
 
 Danke erst mal für die Antwort. Das mit dem Setfont hab ich gemacht, jetzt bekomme ich schon mal Buchstaben aufs Display aber leider nicht die, die ich ausgebe. Jetzt wird das ganze Display mit "jk" beschrieben. Habe die font8x8 verwendet.
 
 Zu deiner anderen Frage: Ja hab die Vollversion. Das Problem ist echt der Speicher für die Bilder die rauben mir ca. 60% . .
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Fleißiges Mitglied
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
							
 
					
						
							hm... jetzt weiß ich auch nicht weiter...
						 
 
 
 
 
 
 
 
	
	
	
	
	
	
	
	
	
	
	
	
		
		
		
		
			
				 Berechtigungen
				Berechtigungen
			
			
				
	
		- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-  
Foren-Regeln
 
			 
		 
	 
 
  
 
  
 
Lesezeichen