-         

Ergebnis 1 bis 5 von 5

Thema: Problem mit Programm

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2005
    Ort
    Walhorn
    Alter
    61
    Beiträge
    15

    Problem mit Programm

    Anzeige

    Hallo zusammen,
    ich versuche seit Tagen (und Nächten) mein Programm für meine Terrarium/Kuehlraum-Steuerung zu schreiben. Nach dem ich keine Fehlermeldungen mehr hatte, programmierte ich meinen mega32. Doch dann...........
    Nichts passierte. Ich vermutet das das Programm sich aufhängt und zwar wenn ich die Routine
    Code:
    config clock = soft
    aufrufe. Um es besser zu verdeutlichen ist hier der Code.
    [schild=standard fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Warum ????[/schild]

    Code:
    $regfile = "M32def.dat"
    
    $crystal = 8000000
    
    Ddrb = &B10111000
    Config Portb.5 = Output
    Config Portb.6 = Input
    Config Portb.7 = Output
    Config Portd = Input
    Ddrd = &B11111111
    Portb = &B11111111
    Config Portc = Output
    
    Ddra = 00000000
    Porta = 255
    Dim Tage As Byte
    Dim Count As Byte
    Dim Stunden As Byte
    Dim Abtau_status As Byte
    Dim Tag_str As String * 10
    Dim Plus As Byte
    Dim Minus As Byte
    Dim Uhrzeit(10) As Byte                                     'enthält die uhrzeit und das datum vorteil kann leicht erweitert werden.
    Dim Abtau_std As Byte
    Dim Abtau_min As Byte
    Dim Uhrzeit_std As String * 2
    Dim Uhrzeit_min As String * 2
    Dim Uhrzeit_save(10) As Eram Byte At &H10
    Dim Abtau_status_save As Eram Byte At &H01
    Dim Minute As Byte
    Dim Sekunde As Byte
    Dim Licht As Bit
    Dim W As Word
    Dim V_alt As Single
    Dim Temperatur_bit As Bit
    Dim Abtau_bit As Bit
    Dim Klima As Bit
    Dim Relais_aus As Byte
    Dim S1 As Bit
    
    'Const Refer = 1.1593
    
    
    
    Deflcdchar 0 , 4 , 4 , 14 , 31 , 4 , 4 , 4 , 4              ' replace ? with number (0-7)
    Deflcdchar 1 , 31 , 21 , 21 , 31 , 4 , 21 , 21 , 31         ' replace ? with number (0-7)Deflcdchar 1 , 32 , 32 , 4 , 14 , 21 , 4 , 4 , 4            ' replace ? with number (0-7)
    Deflcdchar 2 , 4 , 10 , 10 , 31 , 31 , 31 , 14 , 4
    Deflcdchar 3 , 4 , 14 , 14 , 31 , 32 , 32 , 32 , 32         ' replace ? with number (0-7)Deflcdchar 3 , 4 , 14 , 14 , 31 , 31 , 32 , 32 , 32         ' replace ? with number (0-7)
    Deflcdchar 4 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32            '° Zeichen
    Cls
    
    Config Lcd = 16 * 4 , Chipset = Ks077
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.1 , Rs = Portc.0
    Config Adc = Single , Prescaler = Auto , Reference = Avcc   'Einzelmessung und Referenzspannung 5 Volt
    
    Initlcd
     Wait 1
    Initlcd
    
    Enable Interrupts
    Start Adc
    
    'Abhier geht nix mehr !!!!!!!!!!
    
    Config Date = Dmy , Separator = /                           ' Deutsches-Format
    Config Clock = Soft                                         '
    
    'Das Format ist: Tag/Monat/Jahr
    Date$ = "18/04/07"
    Time$ = "00:00:00"
    
    Cursor Off Noblink
    
    For Count = 1 To 4
      Uhrzeit(count) = Uhrzeit_save(count)                      'nach stromausfall wecker zurückspeichern
    Next Count
    Abtau_status = Abtau_status_save
    Uhrzeit_std = Str(uhrzeit(1)) + Str(uhrzeit(2))             'wandelt  zahl in string um und packt 2 zahlen in eine speicherstelle
    Uhrzeit_min = Str(uhrzeit(3)) + Str(uhrzeit(4))             ' 00000001+ 00000010 = 0000000100000010 ---->   "12 "
    Abtau_std = Val(uhrzeit_std)
    Abtau_min = Val(uhrzeit_min)
    
    
    'Licht = 1
    
    
    
    Cls
    Set Temperatur_bit
    Gosub Temperatur
    
    
    'Set Portb.7
    '####################################
    Do
      Gosub Tastenabfrage
      Gosub Page
     'If _sec = 10 Or _sec = 50 Then
      Set Temperatur_bit                                        'Hauptroutine
       Gosub Temperatur
       'End If
      Gosub Displaylicht
    Wenn ich aber folgende Zeilen kompiliere habe ich eine Anzeige im LC-Display und kann
    auch über die Tastaur Einstellungen vornehmen.
    Code:
    $regfile = "M32def.dat"
    $crystal = 8000000
    
    'Config Portc = Output
    'Config Portd = Input
    
    'Config Portg = Input
    'Portg.0 = 1
    'Config Portc = Output
    'Config Portd = Output
    'Ddrd = 00000100
    'Porta = 255
    
    Dim Count As Byte
    Dim Stunden As Byte
    Dim Temp As Byte
    Dim Tag As Byte
    Dim Tag_str As String * 2
    Dim Plus As Byte
    Dim Minus As Byte
    Dim Uhrzeit(10) As Byte                                     'enthält die uhrzeit und das datum vorteil kann leicht erweitert werden.
    Dim Uhr_help As Byte
    
    Dim Uhrzeit_std As String * 2
    Dim Uhrzeit_min As String * 2
    Dim Tag_datum As String * 2
    Dim Monat As String * 2
    Dim Jahr As String * 2
    
    
    'Enable Interrupts
    
    'LC-Display initalisieren
    Config Lcd = 20 * 4
    Config Lcdmode = Port
    Config Lcdbus = 4
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.1 , Rs = Portc.0
    'Config Lcdmode = Bus
    
    Initlcd
    'Wait 1
    'Initlcd
    Cursor Off
    Cls
    
    'Config Date = Dmy , Separator = .                           ' Deutsches-Format
    'Config Clock = Soft                                         '
    '
    'Date$ = "18/04/07"
    'Time$ = "00:00:00"
    
    
    Do
      Gosub Page
      Gosub Tastenabfrage                                       'Hauptprogramm
     Loop
    
    End
    
    Tag:
    'Tag = Dayofweek()
    Select Case Tag
    Case 0 : Tag_str = "Mo"                                     'Die softclock liefert nur zahlen von
    Case 1 : Tag_str = "Di"                                     'zahlen von 0-6 dewswegen muss
    Case 2 : Tag_str = "Mi"                                     'die zahl in einem string gewandelt werden
    Case 3 : Tag_str = "Do"
    Case 4 : Tag_str = "Fr"
    Case 5 : Tag_str = "Sa"
    Case 6 : Tag_str = "So"
    End Select
    Return
    
    Config Debounce = 50
    
    Tastenabfrage:
     Debounce Pind.3 , 0 , Taste_rechts , Sub
    
     Return
     '##########################################
     Uhrstellen:
     Debounce Pind.5 , 0 , Tasteplus , Sub
     Debounce Pind.6 , 0 , Tasteminus , Sub
     Debounce Pind.3 , 0 , Taste_rechts_uhr , Sub
     Debounce Pind.7 , 0 , Taste_links , Sub
     Debounce Pind.4 , 0 , Enter_raus , Sub
      Return
    
      '----------------------------------------
    Tasteplus:
    If Plus = 1 Then Incr Uhrzeit(1)
    If Plus = 2 Then Incr Uhrzeit(2)
    If Plus = 3 Then Incr Uhrzeit(3)
    If Plus = 4 Then Incr Uhrzeit(4)
    If Plus = 5 Then Incr Uhrzeit(5)
    If Plus = 6 Then Incr Uhrzeit(6)
    If Plus = 7 Then Incr Uhrzeit(7)
    If Plus = 8 Then Incr Uhrzeit(8)
    If Plus = 9 Then Incr Uhrzeit(9)
    If Plus = 10 Then Incr Uhrzeit(10)
    
    If Uhrzeit(1) > 2 Then Uhrzeit(1) = 0
    If Uhrzeit(2) > 9 Then Uhrzeit(2) = 0
    If Uhrzeit(3) > 5 Then Uhrzeit(3) = 0
    If Uhrzeit(4) > 9 Then Uhrzeit(4) = 0
    If Uhrzeit(5) > 3 Then Uhrzeit(5) = 0
    If Uhrzeit(6) > 9 Then Uhrzeit(6) = 0
    If Uhrzeit(7) > 1 Then Uhrzeit(7) = 0
    If Uhrzeit(8) > 9 Then Uhrzeit(8) = 0
    If Uhrzeit(9) > 9 Then Uhrzeit(9) = 0
    If Uhrzeit(10) > 9 Then Uhrzeit(10) = 0
    
    
    Return
    '-----------------------------
    Tasteminus:
    If Plus = 1 Then Decr Uhrzeit(1)
    If Plus = 2 Then Decr Uhrzeit(2)
    If Plus = 3 Then Decr Uhrzeit(3)
    If Plus = 4 Then Decr Uhrzeit(4)
    If Plus = 5 Then Decr Uhrzeit(5)
    If Plus = 6 Then Decr Uhrzeit(6)
    If Plus = 7 Then Decr Uhrzeit(7)
    If Plus = 8 Then Decr Uhrzeit(8)
    If Plus = 9 Then Decr Uhrzeit(9)
    If Plus = 10 Then Decr Uhrzeit(10)
    
    If Uhrzeit(1) > 2 Then Uhrzeit(1) = 2
    If Uhrzeit(2) > 9 Then Uhrzeit(2) = 9
    If Uhrzeit(3) > 5 Then Uhrzeit(3) = 5
    If Uhrzeit(4) > 9 Then Uhrzeit(4) = 9
    If Uhrzeit(5) > 3 Then Uhrzeit(5) = 3
    If Uhrzeit(6) > 9 Then Uhrzeit(6) = 9
    If Uhrzeit(7) > 1 Then Uhrzeit(7) = 0
    If Uhrzeit(8) > 9 Then Uhrzeit(8) = 0
    If Uhrzeit(9) > 9 Then Uhrzeit(9) = 0
    If Uhrzeit(10) > 9 Then Uhrzeit(10) = 0
    
    
    Return
    '-----------------
    Taste_rechts:
    Cursor On Noblink
    Cls
    Plus = 1
    Locate 1 , 8
    Lcd "--:--"
    Locate 2 , 8
    Lcd "00/00/07"
    Locate 1 , 8
    Do
    Gosub Uhrstellen
    Select Case Plus
    Case 1 : Locate 1 , 8
    Lcd Uhrzeit(1)
    Locate 1 , 8
    Case 2 : Locate 1 , 9
    Lcd Uhrzeit(2)
    Locate 1 , 9
    Case 3 : Locate 1 , 11
    Lcd Uhrzeit(3)
    Locate 1 , 11
    Case 4 : Locate 1 , 12
    Lcd Uhrzeit(4)
    Locate 1 , 12
    Case 5 : Locate 2 , 8
    Lcd Uhrzeit(5)
    Locate 2 , 8
    Case 6 : Locate 2 , 9
    Lcd Uhrzeit(6)
    Locate 2 , 9
    Case 7 : Locate 2 , 11
    Lcd Uhrzeit(7)
    Locate 2 , 11
    Case 8 : Locate 2 , 12
    Lcd Uhrzeit(8)
    Locate 2 , 12
    Case 9 : Locate 2 , 14
    Lcd Uhrzeit(9)
    Locate 2 , 14
    Case 10 : Locate 2 , 15
    Lcd Uhrzeit(10)
    Locate 2 , 15
    
    End Select
    
    Loop Until Pind.3 = 0
    Uhrzeit_std = Str(uhrzeit(1)) + Str(uhrzeit(2))             'wandelt  zahl in string um und packt 2 zahlen in eine speicherstelle
    Uhrzeit_min = Str(uhrzeit(3)) + Str(uhrzeit(4))             ' 00000001+ 00000010 = 0000000100000010 ---->   "12 "
    Tag_datum = Str(uhrzeit(5)) + Str(uhrzeit(6))
    Monat = Str(uhrzeit(7)) + Str(uhrzeit(8))
    Jahr = Str(uhrzeit(9)) + Str(uhrzeit(10))
    '_hour = Val(uhrzeit_std )
    '_min = Val(uhrzeit_min)                                     'umwanden vom string in eine zahle und übergabe an die uhr internen variablen.
    '_day = Val(tag_datum)
    '_month = Val(monat)
    '_year = Val(jahr)
    '_sec = 00
    Cls
    Return
    '-----------------------------
    Taste_links:
    Decr Plus
    If Plus > 10 Then Plus = 10
    
    Return
    '------------------------------
    Enter:
    
    Return
    '------------------------
    Enter_raus:
    
    Return
    Taste_rechts_uhr:
    Incr Plus
    If Plus > 10 Then Plus = 1
    
    Return
    '############# und so weiter...........
    Da ich aber eine Uhr brauche habe ich die Frage, ob ich den Befehl
    Code:
    config clock = soft
    auch anders programmieren kann ???
    Vielleicht sollte ich noch erwähnen das ich ein vierzeiliges Display mit einem SED1278 Kontroller benutzte; soll HD44780 kompatibel sein.
    Wäre dankbar, wenn mir jemand helfen könnte.

    Gruss trinity4711

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hi,
    ich denke, du hast wohl keinen externen Quarz für die Uhr an TOSC1 und TOSC2 dran, weil du Anschlüsse dafür (PC.6 und PC.7) fürs Display verwendest. Das wird nicht gehen.

    Gruß

    Rolf

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    normalen Timer0, Timer1 oder Timer2 verwenden
    und halt Langzeitkorrekturwert ermitteln.
    Für Clock = soft brauchts n Uhrenquarz
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2005
    Ort
    Walhorn
    Alter
    61
    Beiträge
    15

    RE:

    danke für eure Antwort: Man sollte sich halt etwas intensiver mit der Materie befassen, dann passieren nicht solche Fehler.

    gruss trinity4711

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Wenn die Anschlüsse PC.2 und PC.3 noch frei sind, würde ich die LCD Pin DB6 und DB7 da drauf legen und dann einen kleinen Uhrenquarz mit 32768 Hz an PC.6 und PC.7 anschließen. Die kriegst für ein paar Cent oder aus irgendeinem alten Kleingerät mit Uhr drin. Z.B. alte Digital Armbanduhr, Taschenrechner mit Uhr usw.
    Dann kannst du die ganzen in Bascom verfügbaren Date-Time Fkten benutzen und musst die nicht selber programmieren.

    Gruß Rolf

Berechtigungen

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