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

[Atmega32][Bascom Avr] Moje boje z wyświetlaczem...

rafcio363 16 Maj 2008 22:43 3624 7
  • #1 5148294
    rafcio363
    Poziom 30  
    Witam.
    Mam takie pytanko- czego użyć aby uzyskać coś takiego -

    W 1 linijce pokazuje mi sie napis i zmienia co 10sekund,
    a 2 linijce W TYM SAMYM CZASIE wyświetlacza pokazuje mi się napięcie.
    Jak zdeklarowalem procedure to program najpierw mi skacze do tej procedury, i dopiero jak ją wykona to leci dalej.
    A niestety w książce do bascoma nie znalazłem na to lekarstwa,choć zapewne jest to proste - trzeba było by użyć jakiegoś podprogramu??
  • #2 5148363
    nsvinc
    Poziom 35  
    rozwiązaniem tego nie będzie prosty skok do procedury/podprogramu.

    Zeby bezwzględnie móc pozycjonować dane na wyswietlaczu w dowolnym momencie musisz napisac wlasna obsługe wyswietlacza, i zadeklarować globalny 'index' tzn pozycje bierzącego znaku.

    Wtedy w pętli odświeżasz wartość napięcia [na dole wyswietlacza], a przerwanie co 10 sekund zmienia ci napis....


    Niestety w bascomie obsluga wyswietlacza jest do d*py dlatego samo wyswietlanie w przerwaniu nie pomoze bo rozjedzie ci znaki od razu....musi byc index...
  • #4 5148608
    mirekk36
    Poziom 42  
    nsvinc napisał:

    Niestety w bascomie obsluga wyswietlacza jest do d*py dlatego samo wyswietlanie w przerwaniu nie pomoze bo rozjedzie ci znaki od razu....musi byc index...


    kolego nsvinc jak się nie zna czegoś to nie określa się tego mianem, że jest "do d*py" to świadczy tylko o twoim ogólnym poziomie wiedzy programistycznej.

    takie wyświetlanie o jakie chodzi autorowi można zrobić w dokładnie (jeśli chodzi o efekt) w każdym języku czy asm, czy C czy Bascom. Tylko trzeba je znać.

    ponieważ pytanie dotyczyło bascoma to ogólną podpowiedzią na tak ogólnie postawione pytanie może być to:

    .... robisz sobie przerwanie od dowolnego timera wywaoływane co 10sek. Następnie w tymże przerwaniu ustawiasz tylko odpowiednie flagi, które z kolei w pętli głównej mogą informować kolejne procedury kiedy mogą się wykonać, dzięki czemu uzyskasz efekt o jaki pytasz. A do wyświetlania w Bascomie na dowolnej pozycji nie trzeba (o zgrozo!) żadnych globalnych indeksów i nie wiadomo jakich jeszcze udziwnień nawiedzonego programisty - wystarczy proste polecenie LOCATE , dzięki któremu wyświetlasz dowolny tekst w dowolnym miejscu wyświetlacza - ot cała tajemnica bascoma w tym względzie.

    pozdrawiam
  • #5 5148610
    nsvinc
    Poziom 35  
    takie locate wywołane z przerwania przyjmując ze właśnie był wyswietlany tekst i dokladnie to zostało przerwane, spowoduje wyswietlenie tekstu tego 'z przerwania' jak najbardziej prawidłowo, ALE...

    Po powrocie z przerwania procesor wraca w miejsce gdzie był przed przerwaniem, a wiec 'wyslij kolejny znak'....efektem tego jest ze pojawi ci sie napis np.


    'TO JEST Pa tu jestem w przerwaniuETLA'

    Gdyz po powrocie do wyswietlania z pętli głównej brak jest ponownej inicjalizacji pozycji kursora na wyswietlaczu....

    Dodano po 3 [minuty]:

    ->mirekk36

    Pisałem PARE LAT w bascomie, i to całkiem zaawansowane programy. Przestał wystarczać w momencie gdy kompilator zaczął sie MYLIĆ w obslugach przerwania gubiąc wartości zmiennych, albo np. 6 lub 7 ifów zagnieżdzonych. Tu bascom wymięka..

    Przyznam rację: bascom jest dobry, ale do PROSTYCH PROGRAMÓW...
    a do prostych nie nalezy pisanie czegos w rodzaju sprzętowej bazy danych na AVRa. Bascom generuje POWOLNY kod, to jest FAKT. I oblusuje TYLKO 5 poziomów zagnieżdzenia ifów. To tez jest fakt. I TRAGICZNIE rozwiązane przekazywanie parametrów do funkcji? Gdzie w bascomie są WSKAŹNIKI? gdzie dynamiczne tablice? NIE MA!....
  • #6 5148648
    mirekk36
    Poziom 42  
    nsvinc napisał:

    Przyznam rację: bascom jest dobry, ale do PROSTYCH PROGRAMÓW...
    a do prostych nie nalezy pisanie czegos w rodzaju sprzętowej bazy danych na AVRa. Bascom generuje POWOLNY kod, to jest FAKT. I oblusuje TYLKO 5 poziomów zagnieżdzenia ifów. To tez jest fakt. I TRAGICZNIE rozwiązane przekazywanie parametrów do funkcji? Gdzie w bascomie są WSKAŹNIKI? gdzie dynamiczne tablice? NIE MA!....


    ależ oczywiście też przyznaję rację, że do prostych w miarę projektów chociaż - co to jest prosty a co skomplikowany projekt to pojęcie względne. Masz rację co do ograniczeń tych zagnieżdżeń IFów ale to daje się obejść , co do namiastki wskaźników w Bascomie to VARPTR, Overlay itp. Dynamicznych tablic nie ma i pewnie, że nie wszystko można zrobić w Bascomie - lepiej czasem sięgnąć po C - i o to chodzi poprostu
  • #7 5178926
    asembler
    Poziom 32  
    Na powyższe jest lekarstwo. Wystarczy na poczatku przerwania zapisac x,y a na koncu przerwania odtworzyc wartosć x,y.
  • #8 5506405
    Guma1975
    Poziom 14  
    Albo w obsłudze przerwania zrobić co trzeba (zapamiętać wynik, dane) a wyniki bierzące + te z przerwania przedstawić (wyświetlić na LCD) tylko w pętli głównej - raz nie na raty.
REKLAMA