Bascom Hilfe mit Dotmatrix Display und Watchdog am ATMega88PA

speedy85

Neues Mitglied
11. Sep. 2010
1
0
0
Sprachen
Hallo liebe Gemeinde,

ich bin leider noch nicht dazu gekommen, mich vorzustellen, werde ich aber demnächst nachholen.

Ich versuche gerade mein "Projekt" auf die Beine zu stellen.

Und zwar soll es eine Solar-Batterie-Laderegelung werden, die auch die Gartenbeleuchtung schaltet.

Die Grundfunktion für die Regelung habe ich von hier:
http://www.mikrocontroller.net/topic/46903
Über den ADC prüfe ich, wie hoch die Spannung ist. Je nachdem wie hoch, wird das Panel entweder kurzgeschlossen oder die Last "abgeworfen". Danach lasse ich den AVR schlafen. Der Watchdog lässt den AVR ca alle 8 Sekunden aufwachen.

Soweit funktioniert alles wunder bar. Jetzt wollte ich aber ein Display in die Schaltung integrieren. Nun habe ich das Problem, das wenn eiglentlich der Watchdog einspringen sollte, der AVR ich aufhängt. Das kann man sehr schön sehen, wenn man das Powerdown auskomentiert. Dann ist nämlich nach ca 8 Sekunden Feierabend.

Code:
$regfile = "m88pdef.dat"
$crystal = 3686400
$noramclear

Dim H As Word
Dim I As Integer
Dim Volt As Single
Dim Vernr As String * 4


Ddrc = &B00000000                                          
Ddrd = &B00111100
Fetout Alias Portd.3
Fetin Alias Portd.2
Ledr Alias Portd.4
Ledg Alias Portd.5


Declare Sub Adc1
Declare Sub Schlafen


Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3
Config Adc = Single , Prescaler = 32 , Reference = Avcc
Config Watchdog = 8192

Enable Interrupts
Enable Adc

Start Adc
Start Watchdog


'----------------------------------------------------------
'--------------Initialisierung bereits erfolgt?------------
'----------------------------------------------------------
If Vernr = "V0.3" Then
    Print
  Else
    Vernr = "V0.3"
    Print
    Print "solarladeregler V0.3 "
    Config Lcd = 16 * 2
    Initlcd
    Cursor Off
    Cls
    Waitms 100
    Lcd "SR  v0.3"
    Waitms 500
    Cls
End If



Do


                                                         'Hauptschleife

Call Adc1

Call Schlafen

Loop

End

Sub Adc1:
   H = Getadc(0)
   For I = 1 To 8
   H = H + Getadc(0)                                        'aktuellen Wert auslesen
   H = H / 2
   Waitms 50
   Next
   Print "Wert: " ; H ;
   Volt = H * 0.0146484375
   Print " Ergebnis: " ; Fusing(volt , "##.##")
'----------------------------------------------------------
'--------------Reglung
'----------------------------------------------------------
   If H < 719 Then                                          'Prüfen ob Spannung unter 719 (10,64)
                                                             'Fet Out = AUS , Rot blinkt 1x
     Fetout = 0

   End If
   If H > 812 Then                                          ' Prüfen ob Spannung über 812
     Fetout = 1                                             'FET Out = AN , Rot aus
                                                  'Fet IN = AUS , Grün blinkt 1x

   End If                                                   ' Prüfen ob Ladeschlussspannung unterschritten
   If H < 926 Then
     Fetin = 0
   End If
   If H > 938 Then                                          ' Prüfen ob Spannung über 938 (Ladeschlussspannung 13,8V)
   Fetin = 1                                                'Fet IN = AN , Grün blinkt 2x

   End If
'----------------------------------------------------------
'----------Ausgabe-----------------------------------------
'----------------------------------------------------------
If Fetout = 0 Then                                          'Low Battery
      Ledr = 1
     Waitms 200
     Ledr = 0
     Print "Low Battery"

End If
If Fetout = 1 And Fetin = 0 Then                            'Alles OK
        Ledg = 1
     Waitms 200
     Ledg = 0

     Print "Alles OK"
End If
If Fetin = 1 Then                                           'Ladeschlussspammung ereicht
   Ledg = 1
   Waitms 200
   Ledg = 0
   Waitms 200
   Ledg = 1
   Waitms 200
   Ledg = 0

   Print "Ladeschlussspannung"
End If

End Sub



Sub Schlafen:
   
Powerdown

End Sub

Komentiere ich die LCD-Sachen aus, ist alles normal.

Woran kann das liegen? habe ich was vergessen?
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)