- LiFePO4 Speicher Test         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: LCD über Subroutine ansprechen ???

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    09.10.2004
    Beiträge
    54
    Anzeige

    E-Bike
    Danke für deinen Beitrag, aber der Tip kam ja schon von Zapo. Leider brachte mir das auch keine Erfolge, egal wie ich das Programm schreibe, er macht nicht alles was in der Sub steht. Bzw. machen wird er es vielleicht, nur kommt es, aus welchem Grund auch immer, nicht an.

    Der Port wird ja geschalten und wenn ich's als Interrupt schreibe funktionierts auch. Nur als Sub nicht.

    Zu schnell kann es ja auch nicht sein, ich warte ja in der Sub noch ca. 2 Sekunden lang bevor ich wieder ins Hauptprogramm springe.

    Habt ihr noch mehr Ideen? Ich kann's drehen wie ich will, es funktioniert einfach nicht.

    Grüße und danke
    Enrico

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.11.2006
    Ort
    K-Town
    Alter
    46
    Beiträge
    178
    lass das

    Toggle Portd.0

    ___lcdno = 0

    einfach mal weg!

    schreibe einfach nur:

    do
    'Hauptprogramm
    'debounce.....usw
    loop

    schniedelwutz:
    cls
    lcd "test"
    wait 2 'ganz wichtig sonst siehst du den TEXT nicht !!!!
    return

    Zapo.

    so wie schon 2x beschrieben, das MUß funktionieren!

    und was auch gehen muß wäre:

    if pinx.x = 0 then gosub schniedelwutz 'geht auf jeden FALL!!!! brauchst auch kein end if wenns in einer Zeile steht!

    ---> füge dann aber um zu entprellen direkt am Anfang der SUB eine kleine Wartezeit von 100 - 200 ms ein...... merkst du aber...

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    09.10.2004
    Beiträge
    54
    Auch das habe ich schon erfolglos probiert. Es ist ja nicht so, dass er nicht in die Sub geht wenn ich die Taste drücke - das macht er ja. Das einzige was er nicht macht, ist den Text aus der Sub auf dem LCD anzeigen.

    Ich habe gerade noch probiert in der Sub eine Zählvariable bei jedem Tastdruck um eins zu erhöhen und dann im Hauptprogramm auf dem LCD anzuzeigen, auch das funktioniert problemlos.

    Liegt es vielleicht an Bascom, dass das nicht funktioniert - Programmfehler?

    Grüße
    Enrico

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.11.2006
    Ort
    K-Town
    Alter
    46
    Beiträge
    178
    kann nicht sein, ich gebe auch in SUBs Texte aus! mit und ohne Interrupt sollte das Funktionieren...

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    09.10.2004
    Beiträge
    54
    Hallo,

    das hilft mir nur leider nicht weiter. Woran kann es denn noch liegen? Hardware vielleicht? Wobei das Display ja funktionsfähig ist.

    Grüße
    Enrico

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    also ... wenn ich mir die hilfe von Bascom zum thema debounce so ansehe, komme ich zu dem schluss, dass das so nicht gehen kann, wie du es eingegeben hast. ich denke du musst ein label setzten statt der sub-prozedur.

    Code:
    $regfile = "m8def.dat" 
    $crystal = 3686400                                          'Quarz: 3,6864 MHz 
    
    Ddrc = &B00000000 
    Ddrd = &B00000001                                           'Int0 als Eingang konfiguriert - Programmiertaste 
    Portc = &B00001111 
    Portd.4 = 1                                                 'Pull-Up von Int0 an 
    Portd.3 = 1                                                 'Pull-Up von PD3 an 
    
    Config Scl = Portc.5                                        'SCL-Port auf Port C.5 
    Config Sda = Portc.4                                        'SDA-Port auf Port C.4 
    
    
    Config Lcd = 40 * 4                                         'Anzeigemodus 40 x 4 Zeichen 
    Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portb.0 , E = Portb.1 , E2 = Portb.2 , Rs = Portb.3 
    
    
    Declare Sub Temperaturen                                    'Sub für Programmierung in zweiter Ebene 
    Declare Sub Schaltzeiten                                    'Sub für Programmierung in zweiter Ebene 
    Declare Sub Prog_auswahl                                    'Sub für Programmier-Auswahl 
    Declare Sub Wert_hoch                                       'Sub Temperatur hochzählen 
    Declare Sub Wert_runter                                     'Sub Temperatur runterzählen 
    Declare Sub Speichern                                       'Werte speichern 
    Declare Sub Pfeil_rechts                                    'Auswahl für Programmiermodus Pfeil nach rechts 
    Declare Sub Pfeil_links                                     'Auswahl für Programmiermodus Pfeil nach links 
    Declare Sub Programm 
    
    
    Dim ___lcdno As Bit                                         'Umschaltbyte für Anzeige 0=Chip 1; 1=Chip 2 
    Dim W_adr_1 As Byte                                         'Schreibadresse vom PCF8574(1) 
    Dim R_adr_1 As Byte                                         'Leseadresse vom PCF8574(1) 
    Dim Dat_1 As Byte                                           'Datenwerte vom PCF8574(1) 
    Dim W_adr_2 As Byte                                         'Schreibadresse vom PCF8574(2) 
    Dim R_adr_2 As Byte                                         'Leseadresse vom PCF8574(2) 
    Dim W_adr_3 As Byte                                         'Schreibadresse vom PCF8591(1) 
    Dim R_adr_3 As Byte                                         'Leseadresse vom PCF8591(1) 
    Dim T_boiler As Byte                                        'Temperatur vom Boiler 
    Dim T_puffer As Byte                                        'Temperatur vom Puffer 
    
    
    '******************** LCD initialisieren 
    ___lcdno = 0                                                'auf Chip 1 schalten 
    Initlcd                                                     'die beiden oberen Zeilen initialisieren 
    Cls 
    Locate 1 , 1 
    Lcd "Ausen Vorlauf Boiler Puffer"                           'Beschriftung der ersten Zeile 
    Cursor Off 
    
    
    
    
    
    Do 
    
       ___lcdno = 0                                             'auf Chip 1 schalten 
       Locate 2 , 1 
          Lcd "Test Test Test" 
    
       Debounce Pind.4 , 0 , Programm , Sub 
    
    Loop 
    
    end  ;  ----->>>>>   hier ein end
    
    Programm :  ; <--------------------------- hier das label
    
    Portd.0 = Not Portd.0 
    
       ___lcdno = 0                                                'auf Chip 1 schalten 
    Initlcd                                                     'die beiden oberen Zeilen initialisieren 
    Cls 
    Locate 1 , 1 
    Lcd "Programm"                                              'Beschriftung der ersten Zeile 
    Waitms 200 
    
    return ;<----------------------   hier das return

    so ist es zumindest in der help beschrieben

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    58
    Beiträge
    117
    habe deine orginalcode vom ersten thread genommen und den
    debounce befehl ersetzt mit

    If Pind.4 = 0 Then Programm

    jetzt springt es ins sub und schreibt im sim mir auch den text
    "programm".warum auch immer es bei debounce nicht funzt
    weiss ich auch nicht,teste es halt mal.setzte die zeit vom waitms 200
    ruhig mal auf 2 sekunden.

  8. #18
    Benutzer Stammmitglied
    Registriert seit
    09.10.2004
    Beiträge
    54
    Das glaube ich ja nicht, mit der IF-Abfrage funktioniert es wirklich.
    Aber warum nicht mit Debounce???

    Na gut, wenn es so ist, dann ist es eben so. Aber gibt es da noch eine andere Möglichkeit einer sinnvollen Tastentprellung?

    Grüße und vielen Dank für die zahlreiche Hilfe.

    Enrico

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    58
    Beiträge
    117
    ja .tastenentprellung wäre in dem fall mir einer warteschleife möglich.
    kenne mich da auch noch nicht so aus,progge erst seit dez 06.warum der debounce nicht funzt ist mir auch ein rätzel.
    aber was solls es geht ja jetzt wie du möchtest.wenn du herausbekommst
    wie es mit deboundce funzt,melde dich.

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    09.10.2004
    Beiträge
    54

    Problem gelöst

    Hallo,

    das Problem ist gelöst, der Tip kam aus dem Forum von mcselec.com, ich habe vergessen die Biliothek für das 40 * 4 Display in den Code einzufügen bzw. in den Einstellungen von Bascom richtig einzustellen.

    Da ich das nicht gemacht habe hat das ganze zwar funktioniert, aber der Text wurde irgendwo hingeschrieben und ausgerechnet dort hin, wo ich ihn nicht mehr sehen konnte.

    Mit der richtigen Einstellung funktioniert es also ohne Probleme.
    Also mal wieder viel Wind um nichts...

    Danke aber nochmal für die starke Unterstützung!

    Grüße
    Enrico

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen