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

Programowanie w Baskom -sterowanie wyswietlaczem LED

aklog 25 Sty 2013 18:09 4872 45
REKLAMA
  • #1 11840338
    aklog
    Poziom 9  
    Witam wszystkich. Robię pierwsze kroki w programowaniu mikrokontrolerów, więc pojawiają się pierwsze problemy. Walczę z moim pomysłem kilka dni i nic mi z tego nie wychodzi. Proszę was o pomoc.

    Oto mój program w Baskom
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Chciałbym, aby wyświetlacz LED pokazywał stan PORTU A.
    1. Jeżeli na PORCIE A.1 ustawie 0 to LED 3 ma pokazać 0 ,a jeśli ustawie 1 to LED 3 ma pokazać 1
    2. Jeżeli na PORCIE A.0 ustawie 1 to LED 4 ma pokazać 1 ,a jeśli ustawie 0 to LED 4 ma pokazać 0
    3. itd
    4. Problem polega na tym, że program pokazuje tylko stan PORTU A.0. Na LED 3 i LED 4 pokazują się jedynki. Wygląda na to, że nie działa pierwsza część programu.
    Program był na początku bardziej rozbudowany o następne PORTY I LEDY, ale zawsze pokazuje stan ostatniej części programu.
    Pozdrawiam i proszę o pomoc
  • REKLAMA
  • #2 11840593
    Konto nie istnieje
    Konto nie istnieje  
  • #3 11844349
    aklog
    Poziom 9  
    Kolego Sabotaz dziękuję za odpowiedż ,ale wydaje mi sie ,że chyba się nie zrozumieliśmy.Podam inny przykład
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Jak widać w tym programie wyjscia PORTA 1 i PORTA 0 zmieniają swój stan wyjścia co 500ms .Można te zmiany na portach zobaczyć na podpiętych diodach do w/w portów.Ja podpinając wyświetlacz LED do mikrokontrolera chciałbym aby pokazywał zmiany na portach ,czyli pokazywał "zero" lub "jeden"
    Oto przykład programu
    Kod: text
    Zaloguj się, aby zobaczyć kod


    W tym programie widać ,że LED4 będzie pokazywał "zero" lub "jeden" w zależności od ustawionego PORTA 0. POTRA 0 jest ustawiony na "zero",więc wyświetlacz LED4 pokaże "zero"

    Problem polega na tym ,że jeżeli do programu dopiszę odczyt jeszcze jednego PORTU i nastepnego LED program odczytuje tylko jeden PORT i na dwóch wyświetlaczach jest ten sam wynik
    Oto nastepny program

    Kod: text
    Zaloguj się, aby zobaczyć kod


    W tym programie PORTA 0 ustawiony jest na " 0" ,więc LED4 powinien pokazać "0" ,a PORTA 1 ustawiony jest na "1" , więc LED3 powinien pokazać "1". Wskazania LED3 i LED4 pokazują "1" i "1".Zauważyłem,że wynik uzależniony jest tylko od PORTA 1.Wygląda na to ,że nie działa pierwsza część programu związana z PORTA 0

    Nawiązując do pierwszego programu , tego z funkcją "waitms" i świecącymi diodami chciałbym aby, mój nastepny program zamiast diod pokazywał na wyświetlaczach LED stan portów np. na PORTA0 , PORTA1 itd.
  • #4 11844373
    BlueDraco
    Specjalista - Mikrokontrolery
    W programie NIC nie widać, bo program nie zawiera schematu ani opisu połączeń. Coś wysyłasz na jakieś porty, ale bez schematu nikt nie zgadnie, jaki ma być, a jaki jest tego skutek.
  • #5 11844746
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #6 11844796
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #7 11845132
    Konto nie istnieje
    Konto nie istnieje  
  • #8 11845759
    aklog
    Poziom 9  
    TAK ,PORTA.O JEST WYJŚCIEM. Ja na PORTA.O nic nie wysyłam , nie steruje tym portem żadnym wejściem.Panowie nie widać żadnego wejscia w programie.

    PORTA.0 ustawiam ,czyli wpisuję mu 0 lub 1 ,kompiluje program ,wgrywam w uC i to działa w stu procentach.Problem polega na tym ,że jak dopiszę do programu PORTA.1 ,który ma sterować np. LED2 to program przestaje działać.

    OTO PROGRAM KTÓRYM STERUJE LED 1 ZA POMOCĄ PORTA.O DZIAŁAJĄCY ( UWAGA ! BEZ PORTA.1 KTORY MA STEROWAĆ NP. LED2 )

    Kod: text
    Zaloguj się, aby zobaczyć kod



    Pozdrowionka.
  • #9 11845812
    BlueDraco
    Specjalista - Mikrokontrolery
    Jeśli dobrze rozumiem, Twój program ma sprawdzać, co sam zapisał do portu (bo inaczej by tego nie wiedział), a jak już sprawdzi, ma na tej podstawie coś zapisać do innego portu. Co prawda nadal nie wiemy, jak podłączone jest to, co do mikrokontrolera jest podłączone, ale mamy Ci pomóc. No to spróbujmy: Na jak długo zaświecasz to, co masz zawiecać w wyniku sprawdzenia stanu linii portu, którą ustawiłeś na 1 czy 0?
  • #10 11845866
    aklog
    Poziom 9  
    Jezeżeli w programie w PORTA.0 wpiszę 0 to na LED1 wyswietla mi sie 0 do czasu kiedy w PORTA. 0 nie zmieni swojego stanu.

    Zmieniam stan końcówki PORTA,0 na 1 ,kompiluje program ,wgrywam w uC i wtedy LED1 pokazuje 1.To jest program działający. Na jutro mogę przygotawac schemat , jezeli jest taki problem
  • #11 11845900
    BlueDraco
    Specjalista - Mikrokontrolery
    Odpowiedz sobie na pytanie, które Ci zadałem, to sprawa się wyjaśni. Przez jaką część czasu świeci Twój wyświetlacz?
  • #12 11845963
    aklog
    Poziom 9  
    Jeszcze raz ,jeżeli w programie PORTA.0 ma wpisane 0 to wyświetlacz LED1 pokazuje "wiecznie " cyfrę 0,do czasu zmiany wartosci PORTA.0 na 1

    .a 1 wpisuję recznie kompiluje program , wgrywam w uC i wtedy LED1 pokazyuje 1 (wiecznie) ,czyli do czasu zmiany w programie PORTA.0 na 0

    jutro bedą schematy

    ps.
    to jest program działający
  • #13 11845973
    Konto nie istnieje
    Poziom 1  
  • #14 11846077
    aklog
    Poziom 9  
    Panowie przepraszam na dziś odpuszczam, muszę to przemysleć .jutro będą schematy
  • #15 11846229
    Konto nie istnieje
    Konto nie istnieje  
  • #16 11847123
    aklog
    Poziom 9  
    LED 1 wyświetla cyfrę " ZERO" czytaj program
    Kod: text
    Zaloguj się, aby zobaczyć kod

    LED1 wyświetla cyfre "JEDEN" patrz program

    Kod: text
    Zaloguj się, aby zobaczyć kod


    TAK czy NIE
  • #17 11847249
    Fredy
    Poziom 27  
    Zakładam że to co wyżej wkleiłeś działa.
    Nie używam dawno już Bascoma, ale mam kilka spostrzeżeń.
    Po pierwsze - czy Porta = &B11111110 daje napewno w bascomie 0 na Porta.0 ? Nie jest odwrotnie? Może najstarsze bity są po prawej stronie? Spróbuj skorygować ten program wpisując Porta = &B00000000


    Po drugie spróbuj zamienić sprawdzanie rejestru Porta na Pina, czyli :
    zamiast if Porta.0=0 then ......
    daj if Pina.0 =0 then .......

    zamiast if Porta.0=1 then .....
    daj if Pina.0 =1 then ......

    może rzeczywiście Bascom coś tu świruje, bo zwykle rejestr Port służy do wpisywania a nie do odczytywania, chociaż odczytać się też powinien.
    Do odczytu rzeczywistego stanu Portu służy rejestr Pin nawet gdy ten port jest wyjściowy.
  • #18 11847356
    aklog
    Poziom 9  
    Kod: Text
    Zaloguj się, aby zobaczyć kod

    Nie najmłodsze bity są po prawej stronie
    Kod: Text
    Zaloguj się, aby zobaczyć kod


    tak ,jak widać w programach w moim poprzednim poście PORTA jest wyjściowy,LED1 pokazuje stan PORTA0 ,w zależności jak ustawie PORTA.0 na "zero" lub "jeden"
    To są działające programy
  • REKLAMA
  • #19 11847364
    Fredy
    Poziom 27  
    Sprawdziłeś z tą zamianą Port na Pin ?
  • #20 11847437
    aklog
    Poziom 9  
    program z przestawionym PORTA jako wejścia działa tak samo ,jak programy w poprzednim poście
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #21 11847455
    Konto nie istnieje
    Konto nie istnieje  
  • #22 11847547
    Fredy
    Poziom 27  
    aklog napisał:
    program z przestawionym PORTA jako wejścia działa tak samo ,jak programy w poprzednim poście
    Kod: text
    Zaloguj się, aby zobaczyć kod



    czy ty czytasz co się do ciebie pisze? Ja nie pisałem abyś zmienił port na wejście, pisałem ci abyś sprawdzał rejestr Pin a nie Port. ZACZNIJ CZYTAĆ ZE ZROZUMIENIEM !!!!!!

    Wkleję ci raz jeszcze ten fragment:

    Fredy napisał:
    Po drugie spróbuj zamienić sprawdzanie rejestru Porta na Pina, czyli :
    zamiast if Porta.0=0 then ......
    daj if Pina.0 =0 then .......

    zamiast if Porta.0=1 then .....
    daj if Pina.0 =1 then ......
  • #23 11847550
    aklog
    Poziom 9  
    Kod: Text
    Zaloguj się, aby zobaczyć kod


    wklejam jeszcze raz program z poprzedniego postu i proszę pokaz mi gdzie w tym programie jest jakiekolwiek uzależnienie swiecenie led1 od PORTA1

    gdzie?

    led1 jest dopisany tylko i wyłącznie do PORTA.0,
    PORTA.1 w tym momencie mnie nie interesuje
    Kod: text
    Zaloguj się, aby zobaczyć kod
    [/code]
  • #24 11847583
    Fredy
    Poziom 27  
    Jeszcze raz:


    zamiast
    if Porta.0=0 then ......
    daj
    if Pina.0 =0 then .......

    zamiast
    if Porta.0=1 then .....
    daj
    if Pina.0 =1 then ......
  • #25 11847720
    aklog
    Poziom 9  
    Kolego Fredy oto program w którym widać oddziaływanie pinc,7 na świecenie led1

    Kod: text
    Zaloguj się, aby zobaczyć kod


    to tylko przykład (prawdopodobnie oto Ci chodziło)

    Kolego Sabotaz niecierpliwie czekam na odpowiedz ,gdzie jest uzależnienie led1 od porta.1 kolejny raz wklejam program

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #26 11847741
    Fredy
    Poziom 27  
    Czemu tam dałeś znów Pinc.7 a nie Pina.0?
    Bawisz się z nami?

    Dodano po 11 [minuty]:

    Ja ci piszę
    zamiast
    if Porta.0=0 then ......
    daj
    if Pina.0 =0 then .......

    zamiast
    if Porta.0=1 then .....
    daj
    if Pina.0 =1 then ......[/quote]

    a ty upierdliwie zawsze robisz jakiś mały bład i dajesz

    if Pinc.7 then .......

    skąd ten Pinc.7 ?
  • #27 11847815
    aklog
    Poziom 9  
    Kolego Fredy wszystkie programy testuje na zestawie uruchumieniowym z atmega 644 ,portc.0 i portc 1 jest zarezerwowany dla SDA i SCI ,dlatego w program który dla Ciebie napisałem musiałem pominąć port.0 i port.1
  • #28 11847884
    Fredy
    Poziom 27  
    Co ty znów z Portem C wyskakujesz?

    Po raz kolejny pytam sie , czy bawisz się z nami?

    Wkleiłeś kod który ponoć nie działa:

    Kod: text
    Zaloguj się, aby zobaczyć kod



    więc po raz chyba czwarty piszę ci abyś poprawił go na taki kod:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    czy widzisz różnice? Masz sprawdzać Pin a nie Port.
  • #29 11848025
    Konto nie istnieje
    Konto nie istnieje  
  • #30 11848078
    Fredy
    Poziom 27  
    Saabotaz napisał:
    Fredy - nie bulwersuj się, PortA ma być zawsze wyjściowy, a do tego jest on typu R/W. Jego program działa jak trzeba i to nie tu jest przyczyna
    to wiem, myślałem tylko że Bascom tu zawodzi i nie potrafi prawidłowo czytać rejestru Port, dlatego zaproponowałem czytać z Pin.
REKLAMA