logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[M8][BASCOM][ADC]sterownik ładowarki Smieci

Sarsownik 06 Lip 2010 19:52 1026 3
  • #1 8267320
    Sarsownik
    Poziom 10  
    Witam.
    Buduje ładowarkę a właściwie sterownik ładowarki.
    Cośjest nie tak ponieważ gdy wrzuce kod :
    
    $regfile = "m8def.dat"                                      'procesor mega 8
    $crystal = 8000000                                          '8mhz
    '''Zmienne
    Dim Wart_ac As Word
    Dim V As Single
    Dim Wart_nap As String * 3
    Dim Wart_prad As String * 3
    Dim M As Byte
    Dim G As Byte
    Dim Mt As Word
    Dim Laduj As Bit
    Dim Reload As Word
    M = 0
    G = 0
    Mt = 0
    
    Deflcdchar 0 , 4 , 4 , 4 , 14 , 14 , 4 , 31 , 32            'nap
    Deflcdchar 1 , 32 , 31 , 4 , 4 , 4 , 14 , 14 , 4            ' prad
    Deflcdchar 2 , 14 , 4 , 31 , 21 , 23 , 17 , 31 , 32         'time
    'PINY
    Config Portc = Input
    'ADC
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    'timer
    Gosub Wybierz
    
    Config Timer1 = Timer , Prescale = 256
    Load Timer1 , 3125
    If Laduj = 1 Then
    On Timer1 , Juz
    End If
    
    Do
    
    
    'oczyt
    Wart_ac = Getadc(0)
    V = Wart_ac * 0.0049
    V = V * 4
    Wart_nap = Fusing(v , "#.&&")
    
    Wart_ac = Getadc(1)
    V = Wart_ac * 0.0049
    V = V * 2
    V = V / 0.1
    Wart_prad = Fusing(v , "#.&&")
    
    Cls
    Lcd Chr(0) ; Wart_nap ; "V " ; Chr(1) ; Wart_prad ; "A"
    Lowerline
    Lcd G ; "h " ; M ; "m " ; Chr(2) ; Mt
    Wait 1
    Loop
    Juz:
    Load Timer1 , 3125
    Incr Reload
    If Reload = 600 Then
    Incr M
    End If
    Return
    Wybierz:
    Cls
    Lcd "TIMER" ; Mt ; " Minut"
    Lowerline
    Lcd "<Zwieksz Free/ok>"
    If Portc.4 = 0 Then
    Mt = Mt + 5
    End If
    
    If Portc.5 = 0 Then
    Waitms 250
    If Portc.5 = 0 Then
    Wait 1
    Return
    End If
    End If
    

    Zegar [ zmienne G ,M ]
    wywala 0.55 i raz odejmuje raz wraca.
    adc pokazuje X.XXXX.XX
    Proszę o pomo nie rozumie co jest nietak.
  • Pomocny post
    #2 8272123
    xury
    Specjalista automatyka domowa
    Co jest nie tak ? Delikatnie mówiąc wszystko.
    1 Timer nie wiem co liczy, cały jest źle napisany i nie powinien działać, bo np:
    przerwanie od timera powinno być zadeklarowane przed pętlą główną i nie w warunku.
    Zmienna Reload nie jest zerowana i zwiększa się do maximum typu Word
    Zmienna M (w zamierzeniu chyba od minut) też się zwiększa do 255
    Zmienna G nie zwiększa się wcale.
    Wartości początkowe timera są złe
    Jeśli już używasz timera to nie używaj wait.
    Itd, itp.
  • #3 8278520
    Sarsownik
    Poziom 10  
    Dzięki za pomoc . Kłopot rozwiązany.
  • #4 8279145
    Konto nie istnieje
    Poziom 1  
REKLAMA