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

Sterowanie czterema wyświetlaczami 7-segmentowymi Atmega8

ElektroShock 18 Lut 2011 14:00 3012 19
  • #1 9168313
    ElektroShock
    Poziom 12  
    Witam.
    Projekt pochodzi z książki Marcin Wiązania "Programowanie mikrokontrolerów AVR w języku BASOM" . Autor opisuje sterowanie multipleksowe za pomocą dekodera 4543 czyli jedynie do sterowania wyświetlaczami jest potrzebne 5 portów atmegi no i 4 porty na sterowanie wspólnymi katodami lub anodami . Ja swój układ wykonałem bez dekodera i zamiast tego z portu D atmegi podłączyłem 4 dodatkowe wyjścia ,reszta wygląda tak samo , przepisałem program z książki zmodyfikowałem konfiguracje portów (tak jak u mnie dodatkowe te 4) i Bascom wyświetla błędy o tym ,że spodziewa się instrukcji If ... Then. Proszę o pomoc w modyfikacji programu tak by działał bez dekodera. Oto program :
    Kod: text
    Zaloguj się, aby zobaczyć kod

    i błędy : error 28 line 72 IF THEN expected
    error 7 line 72 IF THEN expected
  • #2 9168358
    LordBlick
    VIP Zasłużony dla elektroda
    No to teraz ponumeruj te linie jeszcze, żeby było wiadomo, którą błąd dotyczy... Kod w tagi code, i wyrzuć nadmiarowe end if
  • #3 9168359
    FastProject
    Poziom 28  
    Masz w tym programie masę błędów i nie polegają one jedynie na braku zamknięcia warunków If. Np:

    Load Timer) , 125

    Używasz aliasa W4, a nie masz go przypisanego do żadnego pinu procesora...dalej nie sprawdzałem.

    Program w książce na pewno był dobry, ale przerobiony przez ciebie to już z błędami co innego.
  • #4 9168431
    ElektroShock
    Poziom 12  
    No pewnie tak ale ja tam praktycznie zmieniłem tylko konfigurację portów nic innego aha wiem ,że to głupie ale nie wiem za bardzo o co z tymi liniami chodzi ;/ Aha a w ogóle zadziała ten układ bez dekodera ?Czy to jest dalej sterowanie multipleksowe ? Program zaraz poprawię.
  • #5 9168455
    LordBlick
    VIP Zasłużony dla elektroda
    ElektroShock napisał:
    wiem ,że to głupie ale nie wiem za bardzo o co z tymi liniami chodzi
    Jak policzysz linijki kodu to będziesz wiedział w których są błędy... Oczywiście są edytory, które mają już wbudowaną funkcję numerowania linii.
  • #6 9168467
    FastProject
    Poziom 28  
    A sterujesz w programie każdym z segmentów z osobna?...no raczej nie więc to ciągle jest multipleksowanie.

    W1 Alias Portb.0
    W2 Alias Portb.1
    W3 Alias Portb.2
    Kropki Alias Portd.7

    A używasz np: Set W4....więc nie ma deklaracji aliasa W4.

    Light-I napisał:
    ElektroShock napisał:
    wiem ,że to głupie ale nie wiem za bardzo o co z tymi liniami chodzi
    Jak policzysz linijki kodu to będziesz wiedział w których są błędy... Oczywiście są edytory, które mają już wbudowaną funkcję numerowania linii.


    Niestety w Bascomnie nie zawsze linia gdzie kompilator pokazuje błąd jest linią w której jen błąd faktycznie jest.
  • #7 9168484
    ElektroShock
    Poziom 12  
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Poprawiony program dalej pokazuje błędy w tych liniach co przedtem.
  • #8 9168513
    piotrva
    VIP Zasłużony dla elektroda
    zacznij od pierwszej linijki...
    
    $regfile="m8def.dat"
    
  • #9 9168526
    ElektroShock
    Poziom 12  
    To nic nie zmienia.
  • #10 9168584
    piotrva
    VIP Zasłużony dla elektroda
    ale do tego zacznij
    potem policz sobie wszystkie if i sprawdź czy masz tyle samo end if
    dalej, Load Timer) ...
  • #11 9168591
    ElektroShock
    Poziom 12  
    Dodałem również aliasa do w4 i dalej nic
  • #12 9168603
    FastProject
    Poziom 28  
    K0lego, w tym programie panuje wielki chaos...nikt ci nie będzie linijka po linijce mówił gdzie jest błąd. A jest ich kilka. Polecam zapoznanie się z podstawiani BascomAVR, a szczególnie z jego helpem.
  • #13 9168712
    ElektroShock
    Poziom 12  
    Teraz wszystko już powinno być dobrze a tu dalej ten sam błąd zjadłem jedną instrukcję if .. then ,dopisałem i nic :( Program:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #14 9170085
    jacekk232
    Poziom 17  
    Przede wszystkim zmień
    Load Timer 0 ; 125
    na
    Load Timer0 , 125
    a zaraz po Loop powinno być End a nie End if.
  • #15 9171512
    ElektroShock
    Poziom 12  
    jacekk232 dziękuje konkretnie i na temat ,ten problem rozwiązany bascom nie pokazuje błędów natomiast jak podepnę atmege do układu to nic się nie dzieje na wyświetlaczach mam napięcie 1.25V rezystory na segmenty mam 8x 470Ω może to być dlatego że wyświetlacze nie świecą? rezystory ograniczają prąd a napięcie to jest tylko minimalny spadek przy połączeniu szeregowym więc to chyba nie ich wina . Z drugiej strony autor w projekcie stosuje rezystory 100Ω. Czekam na dalszy rozwój tematu.
  • #16 9171760
    piotrva
    VIP Zasłużony dla elektroda
    A czy masz odpowiednie wyświetlacze że wspólną katodą lub anodą zgodnie z oryginałem
  • #17 9171827
    ElektroShock
    Poziom 12  
    to jest dobrze
  • #18 9194062
    Konto nie istnieje
    Konto nie istnieje  
  • #19 9211139
    ElektroShock
    Poziom 12  
    Znam już ,albo raczej dopiero usterkę. .. raz ,że mam błąd w montażu a dwa ,że bez dekodera układ nie zadziała przynajmniej przy tej modyfikacji programu bo w programie jest odniesienie do zapisu liczby binarnej do dekodera ,czekam teraz na dostawę w elektronicznym .Póki co temat pozostawiam otwarty.
  • #20 9290746
    ElektroShock
    Poziom 12  
    Może to zabrzmi śmiesznie ale dopiero dwa dni temu była dostawa i kupiłem elementy układ działa teraz muszę zaprogramować go na zegarek ale to już inna bajka.Dziękuje pomocnym użytkownikom temat uważam za zamknięty.
REKLAMA