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

[Atmega8] problemik z PCF8583

krzysiekk_20 19 Lut 2009 19:46 1115 3
  • #1 6174982
    krzysiekk_20
    Poziom 12  
    Witam,

    mam taki problem mały. Gdy odczytuję czas z uC to na LCd czas ten mi tak szybko miga że nie można tego odczytać. inne rzeczy natomiast są dobrze widoczne a są w tej samej lini na wyświetlaczu. zmian waitms też nie pomaga.
  • #2 6175228
    sp3ots
    Poziom 38  
    Witam !
    Jeśli to w Bascomie AVR to daj kod.
    Pozdrawiam. Stefan
  • #3 6175288
    dawid512
    Poziom 32  
    Zastosuj locate a nie żadne waitms i cls w petli.
  • #4 6175287
    krzysiekk_20
    Poziom 12  
    proszę bardzo:

    
    $regfile = "m8def.dat"                                      ' informuje kompilator o pliku dyrektyw mikrokontrolera
    
    $crystal = 8000000                                          ' informuje kompilator o częstotliwości oscylatora taktującego mikrokontroler
    $baud = 9600
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portb.4 , Rs = Portb.5
    Config Sda = Portc.4
    Config Scl = Portc.5
    Config I2cdelay = 5
    
    Dim A As Bit
    Dim S As Byte
    Dim M As Byte
    Dim G As Byte
    Dim Sekundy As Byte
    Dim Minuty As Byte
    Dim Godziny As Byte
    Dim Sekundy1 As Byte
    Dim Minuty1 As Byte
    Dim Godziny1 As Byte
    Config Pinb.0 = Input
    Config Pind.7 = Input
    Enable Interrupts                                           'wylacz kursor
    Enable Int1
    Const Pcf_o = 161                                           'adres zegara RTC odzczytu
    Const Pcf_z = 160                                           'adres zegara RTC zapisu
    
    On Int1 Sek
    
    P1 Alias Pinb.0
    P2 Alias Pind.7
    Set Portb.1
    Set Portd.7
    A = 1
    Const Control = 8
    Cls
    Cursor Off
    
    'poczatek programu
    '******************************************************************************
    Do
    If A = 1 Then
    I2cinit
    I2cstart
    I2cwbyte Pcf_z
    I2cwbyte 2
    I2cstart
    I2cwbyte Pcf_o
    I2crbyte Sekundy , Ack
    I2crbyte Minuty , Ack
    I2crbyte Godziny , Ack
    I2cstop
    End If
    'Sekundy = Makedec(sekundy)
    'Minuty = Makedec(minuty)
    'Godziny = Makedec(godziny)
    
    Cls
    Lcd "Czas: " ; Bcd(godziny) ; ":" ; Bcd(minuty) ; ":" ; Bcd(sekundy)
    'S = Makedec(sekundy)
    Lowerline
    
    Lcd S
    Debounce P1 , 0 , Przycisk1 , Sub
    Debounce P2 , 0 , Przycisk2 , Sub
    Waitms 100
    Loop
    End
    
    
    Przycisk1:
    A = 0
    M = Makedec(minuty)
    M = M + 1
    If M > 59 Then
    M = 0
    End If
    Gosub Ustaw_czas
    Return
    
    
    Przycisk2:
    A = 0
    G = Makedec(godziny)
    G = G + 1
    If G > 23 Then
    G = 0
    End If
    Gosub Ustaw_czas
    Return
    
    
    
    
    Ustaw_czas:
    
    Minuty = Makebcd(m)
    Sekundy = Makebcd(s)
    Godziny = Makebcd(g)
    I2cinit
    I2cstart
    I2cwbyte Pcf_z
    I2cwbyte 0
    I2cwbyte Control
    I2cstop
    I2cstart                                                    'generowanie startu
       I2cwbyte &HA0
       I2cwbyte 0
       I2cwbyte 8
       I2cstop
       I2cstart
       I2cwbyte &HA0
       I2cwbyte 2
       I2cwbyte Sekundy
       I2cwbyte Minuty
       I2cwbyte Godziny
       I2cstop
    Waitms 10
    A = 1
    Return
    


    Dodano po 4 [minuty]:

    To też nie pomaga
REKLAMA