- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Problem mit Timer und LCD-Ausgabe

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    35
    Beiträge
    235

    Problem mit Timer und LCD-Ausgabe

    Anzeige

    Praxistest und DIY Projekte
    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

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    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 !

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    35
    Beiträge
    235
    hab es auch schon mit integer versucht aber da ist das gleiche problem

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    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

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Auch mal den Wert bei $hwstack erhöhen (mind. 40), der könnte nämlich etwas knapp werden bei ISR und Unterprogrammen

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    35
    Beiträge
    235
    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

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    35
    Beiträge
    235
    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

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.06.2008
    Beiträge
    113
    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

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    35
    Beiträge
    235
    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% .

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.06.2008
    Beiträge
    113
    hm... jetzt weiß ich auch nicht weiter...

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests