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

Szybkość komendy LCD? bezwładność wyświetlacza ?

GStrzelec 11 Cze 2009 21:28 1894 6
REKLAMA
  • #1 6644405
    GStrzelec
    Poziom 10  
    Zaczynam zabawe z mikrokontrolerami i chciałem napisac w bascomie na ATiny2313 stoper liczący z dokładnościa do 0,01 ale utknąlem na wyswietlaniu aktualnego czasu na lcd - to znaczy nie ma z tym problemu ale funkcja lcd jest strasznie wolna. Przerwanie zglaszane jest co 10 ms i mam wrażenie ze w tym czasie komenda lcd nie jest w stanie wyslac wszystkiego do wyswietlacza i nastepne zadanie przerwania jest zglaszane podczas obslugi bieżącego co powoduje błędny pomiar czasu.

    Ponizej kod:
    
    $regfile "ATtiny2313.dat"
    $crystal 4000000
    
    Dim Setsek As Byte , Dziesek As Byte , Sekjed As Byte , Sekdzies As Byte
    Dim Licz As Bit , 10ms As Byte
    Config Portd = 124 : Portd = 127 
    Config Timer1 = Timer , Prescale = 64
    Enable Interrupts : Enable Timer1 : On Timer1 Co10ms
    
    Cursor Off
    
    Do : Loop : End
    
    Co10ms:
    Timer1 = 64911
    Cls     
    (=65535-64911)impulsów =10ms
    If Pind.0 = 0 Then Licz = 1
    If Pind.1 = 0 Then Licz = 0
    If Licz = 1 Then           
       Incr Setsek             
       If Setsek = 10 Then     
          Setsek = 0           
          Incr Dziesek         
          If Dziesek = 10 Then 
             Dziesek = 0       
             Incr Sekjed       
             If Sekjed = 10 Then
                Sekjed = 0     
                Incr Sekdzies  
                   If Sekdzies = 9 Then Sekdzies = 0  
    End If : End If : End If : End If
    
    Lcd Sekdzies ; Sekjed ; "." ; Dziesek ; Setsek
    
    Return
    
    


    Moze ktoś juz się zetknął z podobnym problemem ??
  • REKLAMA
  • #2 6644562
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 6645009
    Konto nie istnieje
    Poziom 1  
  • #4 6645269
    wader_669
    Poziom 28  
    emarcus napisał:

    Zamiast standardowej library, uzyj 'LUC_lcd4busy.lib' dla LCD.
    Ta jest ok. 15 razy szybsza.

    e marcus


    Mozesz cos wiecej powiedziec o tym i skad masz takie info? Ta biblioteka jest standardowo w bas? (a jak nie to gdzie ja dostane?)

    Dodano po 2 [minuty]:

    do autora tematu wywal warunek z pind.0/1 z przerwania, daj ja w petle glowna i zrob disable/enable timer1
  • REKLAMA
  • #5 6645326
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #6 6645481
    mirekk36
    Poziom 42  
    W standardowym Bascomie jest sobie biblioteka o nazwie:

    lcd4busy.lib

    zapewnia ona obsługę wyświetlaczy LCD ale z obsługą pinu RW, którego nie podłącza się do GND tylko do procesora. I to dzięki temu można uzyskać o wiele szybsze wyświetlanie na LCD.

    a autor tematu niech przeniesie całą obsługę LCD do pętli głównej i wybije sobie z głowy raz na zawsze obsługiwanie LCD nawet w najszybszy sposób z wewnątrz jakichkolwiek przerwań - to od razu zaczną mu lepiej wszystkie własne programy działać ;)
  • #7 6646078
    GStrzelec
    Poziom 10  
    Dziękuję za pomoc, faktycznie wyrzucenie części zbędnego kodu poza obsługę przerwania rozwiązało problem.
REKLAMA