Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[AVR][BASCOM] Zmiana prędkości szyny wyświetlacza alfanumer.

atom1477 03 Sty 2009 12:38 2451 10
  • #1 03 Sty 2009 12:38
    atom1477
    Poziom 43  

    Witam.
    Mam dość nietypowy problem dotyczący raczej środowiska niż procesora.
    Jak w BASCOMie zmienić prędkość szyny danych do wyświetlacza alfanumerycznego?
    Wysyłanie kilkunastu znaków trwa jakieś 20ms. A z doświadczenia wiem że wyświetlacz by działał na wielokrotnie szybszej szynie.
    Jak w programie zmienię deklarację rezonatora kwarcowego na kilkakrotnie mniejszy, to w symulacji widzę że wysyłanie nadal trwa 20ms. A czas liczony w cyklach procesora ulega zmniejszeniu.
    W realu wyświetlacz działa normalnie, ale oczywiście kilka razy szybciej, bo naprawdę rezonator jest taki jaki był, a nie kilkakrotnie mniejszy.
    Mój problem polega na tym że chcę jakoś zmusić BASCOMa do zwiększenia prędkości szyny danych wyświetlacza bez deklarowania nieprawdziwej częstotliwości taktowania procesora.
    Nie mogę zadeklarować innej częstotliwości bo wtedy nie będą działały BASCOMowskie procedury 1Wire i RS232. Prędkość RS232 jeszcze mogę sobie samemu ustawić wpisując odpowiednie wartości do rejestrów. Ale 1Wire nie zrobię.
    A przyspieszenie wysyłania danych na LCD jest mi niezmiernie potrzebne.

    0 10
  • Pomocny post
    #2 03 Sty 2009 14:14
    Balu
    Poziom 38  

    Przypuszczam, że jest to niewykonalne niestety...

    0
  • #3 03 Sty 2009 15:05
    atom1477
    Poziom 43  

    No nic. Szkoda. Myślałem że skoro istnieje coś takiego jak I2CDELAY to może i jakieś LCDDELAY się znajdzie. Ale jak nie to trudno.
    W takim razie nie pozostaje nic innego jak napisanie własnych procedur do 1Wire, bo to łatwiejsze niż obsługa wyświetlacza LCD.

    0
  • Pomocny post
    #4 03 Sty 2009 15:46
    wojnar
    Poziom 16  

    A co użyć biblioteki "lcd4busy.lib" i podłączyć LCD i z linią R/W:
    "Biblioteka LCD4BUSY.LIB może być używana jeśli istotny jest czas działania programu. Podstawowa biblioteka obsługi LCD używa sztywnych opóźnień podczas komunikacji z wyświetlaczem. Biblioteka lcd4busy.lib używa dodatkowej końcówki (linia R/W) by móc odczytać flagę statusu wyświetlacza.
    Końcówki DB4-DB7 wyświetlacza LCD muszą być podłączone do starszej połówki portu. Inne końcówki mogą być określone przez programistę.

    (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005"

    0
  • #5 03 Sty 2009 16:06
    atom1477
    Poziom 43  

    Niestety ja już mam zrobioną płytkę i nie mam wolnych pinów w procesorze.
    Więc puszczenie jakiegoś kabelka pod płytką od procesora do LCD nie wyjdzie. Wymiana procesora by pomogła, ale to znowu wymaga zrobienia nowej płytki drukowanej. To całkowicie bez sensu.
    Szkoda że BASCOM jest taki głupi i tego nie potrafi.
    No ale trudno. 1Wire załatwię po swojemu i będę mógł ustawić w BASCOMie inny kwarc niż w rzeczywistości.
    Dziękuję za pomoc.

    PS. Używam tego samego pliku pomocy co Wojnar. Wszystko jest tam dobrze powyjaśniane. Ale tego nie zauważyłem (LCD4BUSY).
    Szkoda że również w tej pomocy są błędy (np. o różnym czasie przetwarzania ADC w zależności od wartości konwertowanego napięcia).

    0
  • #6 03 Sty 2009 16:08
    ZbeeGin
    Poziom 38  

    atom1477 napisał:
    PS. Używam tego samego pliku pomocy co Wojnar. Wszystko jest tam dobrze powyjaśniane. Ale tego nie zauważyłem (LCD4BUSY).
    Szkoda że również w tej pomocy są błędy (np. o różnym czasie przetwarzania ADC w zależności od wartości konwertowanego napięcia).

    Że niby jak?

    0
  • #7 03 Sty 2009 18:52
    atom1477
    Poziom 43  

    Co jak.
    Po prostu szukałem w pomocy BASCOMa czegoś na ten temat ale nie znalazłem. Przeoczyłem to że jedna z bibliotek pozwala na szybsza komunikację.
    Ale już po temacie. Nie da się tego łatwo zrobić.
    Poradzę sobie bez tego.

    0
  • #8 04 Sty 2009 01:53
    zumek
    Poziom 39  

    atom1477 napisał:
    ...Wysyłanie kilkunastu znaków trwa jakieś 20ms. A z doświadczenia wiem że wyświetlacz by działał na wielokrotnie szybszej szynie.

    To ja Ci powiem, że jak się odpowiednio "pokieruje" tym głupim(?) Bascomem i ma się w miarę szybki LCD, to można wyświetlić 80 znaków, w czasie poniżej 5ms , mając pin R/W podpięty do GND.
    Bascom jest na tyle elastyczny, że procedury które on wstawia, możesz zastąpić własnymi/lepszymi ;)
    Warunek: podstawowa znajomość assemblera.

    PS
    Nie szukaj w Help-ie , bo tam o tym nic nie pisze.

    0
  • #9 04 Sty 2009 09:39
    ZbeeGin
    Poziom 38  

    atom1477 napisał:
    Co jak.

    Pytałem o te zdania które przytoczyłem. Uprzedzając jednak, to ADC w pierwszym pomiarze po włączeniu wykonuje konwersję w czasie dłuższym (25 taktów), gdyż musi poczekać aż część analogowa się ustabilizuje. W kolejnch robi to w ciągu 13 taktów swojego zegara i ta wartość jest stała.
    Nie ma tam zależności od napięcia wejściowego. 1,5 taktu samplowanie i przechowanie, 10,5 taktu SAR, 1 takt przesłanie wyniku do rejestru.

    A co do LCD4BUSY to nic nie stoi na przeszkodzie, by sobie kolega przerobił bibliotekę by korzystała z połączeń jak na Twojej PCB. Parę dodatkowych SBI, CBI, LSR, RSR, ANDI, ORI...

    0
  • #10 04 Sty 2009 09:52
    Pituś Bajtuś
    Poziom 28  

    Ale w czym problem napisać własną bibliotekę, która działałaby szybciej? Liczenie tylko na gotowce z Bascoma do niczego nie prowadzi. Pozatym taka biblioteka napisana w Bascomie (a nie w asm) pokazałaby prawdziwą stronę tego tworu.

    0
  • #11 02 Cze 2014 20:34
    atom1477
    Poziom 43  

    Problem rozwiązany przerzuceniem się na C :D
    Zamykam.

    0