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

Program napisany w Bascom działa w symulatorze, Nie działa na układzie .

27 Kwi 2016 20:13 948 14
  • Poziom 13  
    Witam.
    Mam problem z uruchomieniem programu, nie działana płytce wykonanej wd schematu wyżej .
    W symulatorze widać jak wychodzi z pętli i wraca po naciśnięciu przycisków .
    Natomiast kiedy zaprogramuję scalak świeci się LED z wyjścia PD1 Brak reakcji na naciśnięcie przycisków żadna dioda z innych wyjść się nie zapala e zapala a tą z wyjśćiaPD1 mogę zgasić podając masę na PC6 .Zgaszona jest do momentu podania masy pod PC6 potem dalej się zapala .Tylko tak działa program zamieszczony poniżej .
    Proszę o pomoc co mam dalej robić .
    Czy problem jest z programem czy z schematem?

    Poniżej przesyłam listing:
    Program napisany w Bascom działa w symulatorze, Nie działa na układzie .
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
  • Poziom 36  
    ejcon napisał:
    Witam.
    Mam problem z uruchomieniem programu, nie działa. Dopiero zaczynam zabawę z kontrolerami.
    Żadna dioda na wyjściu nie działa,
    Config Pinc.0 = Input : Portc.0 = 1 : Sw1 Alias Portc.0


    Wszystkie Aliasy dotyczace wejśc referuj do pinów 'PINC.x' zamiast 'PORTC.x'.
    Config Pinc.0 = Input : Portc.0 = 1 : Sw1 Alias PINC.0
    Poza tym masz błędnie podłączone cewki przekaźników. Górny pin przekaźnika winien byc podłączony do "+" zasilania a nie do GND. Dolny pin jest załaczanu do GND przez tranzystor.

    e marcus
  • Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
  • Poziom 30  
    Jak dobrze pamiętam w bascomie w pierwszej linii powinno być $sim , żeby działał symulator.
  • Poziom 13  
    Witam.
    Mam problem z uruchomieniem programu, nie działa na płytce wykonanej według schematu wyżej .
    W symulatorze widać jak wychodzi z pętli i wraca po naciśnięciu przycisków .
    Natomiast kiedy zaprogramuję scalak świeci się LED z wyjścia PD1
    Brak reakcji na naciśnięcie przycisków żadna dioda z innych wyjść się nie zapala .Zapala a tą z wyjśćiaPD1 mogę zgasić podając masę na PC6 .
    Zgaszona jest do momentu podania masy pod PC6 potem dalej się zapala .
    Tylko tak działa program zamieszczony poniżej .
    Proszę o pomoc co mam dalej robić .
    Czy problem jest z programem czy z schematem?
  • Pomocny post
    Poziom 36  
    ejcon napisał:
    Witam.
    Mam problem z uruchomieniem
    Proszę o pomoc co mam dalej robić .
    Czy problem jest z programem czy z schematem?

    Problem jest w dalszym ciągu z programem...
    Widzę że naniosłeś poprawki w programie "hurtem" zamiast analizowac każdą linię konfiguracji pojedynczo(!)...
    Ta uwaga z poprzedniego postu dotyczyła tylko konfiguracji wejśc

    Wyjścia, zarówno piny portu jak i Aliasy referuj jako PORT;
    - w efekcie cała twoja konfiguracja wyglądałaby:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Schemat w dalszym ciągu zawiera błędne podłączenie przekaźników:
    -pin 3 przekaźnika winien byc podłączony do "+" zasilania (!) a nie do GND o czym pisalem wyżej. Przy takim podłączeniu żaden przekaźnik nie kliknie.

    e marcus
  • Poziom 13  
    Program napisany w Bascom działa w symulatorze, Nie działa na układzie .
    Zmieniłem schemat teraz powinno być ok .
    Na razie podłączam do testów led przez rezystor do portów wyjściowych .
    Program też zmieniłem lecz nie otrzymałem tego co planuję jest totalny chaos
    Program miał działać następująco :
    Chce zrealizować obsługę 7 przycisków potwierdzanych zapaleniem diod na wyjściach .
    Naciśniecie jednego ma zgasić diodę na reszcie .
    Poza tym będą trzy przekaźniki działające na zasadzie matrycy kodowanej.
    W ten sposób za pomocą 3 przekaźników otrzymam 7 informacji.
    Przycisk 1 on on led1 przekaźnik1 on 2 off 3 off
    Przycisk 2 on on led2 przekaźnik1 on 2 on 3 off
    Przycisk 3 on on led3 przekaźnik1 on 2 on 3 on
    Przycisk 4 on on led4 przekaźnik1 off2 on 3 off
    Przycisk 5 on on led6 przekaźnik1 off 2 off 3 on
    Przycisk 6 on on led7 przekaźnik1 on 2 on 3 off
    Przycisk 7 on on led8 przekaźnik1 on 2 off 3 off
    Proszę o pomoc w zrealizowaniu tego programu
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Poziom 13  
    piterek-23 napisał:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Ten program nie może wystartować .
    jak zmusisz go i wyjdzie z pętli to zapalają się dwie diody
    naciśnięcie przycisku zmienia stan led na chwilę na czas trwania przyciśnięcia przycisku.
  • Poziom 32  
    ejcon napisał:
    Ten program nie może wystartować .

    To znaczy?
    ejcon napisał:
    jak zmusisz go i wyjdzie z pętli

    Jakiej pętli?
    ejcon napisał:
    naciśnięcie przycisku zmienia stan led na chwilę na czas trwania przyciśnięcia przycisku.

    Czyli wszystko OK, zgodnie z tym programem.

    Ja nie do końca rozumiem jak to ma działać ;(
    Na początek zajmijmy się jednym przyciskiem. Powiedz jak to ma działać?

    Jak zrobisz tak:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    To jeżeli naciśniesz przycisk to zaświeci się "Led1" jeżeli puścisz to zgaśnie, ale jeżeli zrobisz tak:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    to każde naciśnięcie przycisku zmieni stan "Led1" na przeciwny.
    świeci->zgaś
    nie świeci->zaświeć

    Dodano po 14 [minuty]:

    Sprawdź taki kod:

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    W kodzie brakło siódmego przycisku "Sw7" bo nie wiem gdzie go masz podłączonego...
  • Poziom 13  
    Dzięki za pomoc teraz program działa tak reaguje na kilka przycisków
    Po pierwszym uruchomieniu świeci się lde1 PD0 naciśniecie przycisku PC0 zapala się led2 gasi led1
    Naciskając PC1 nic się nie dzieje .
    Naciskając PC2 zapala się led3 gasi led2 .
    Naciskając PC3 zapala się led4 gasi led3.
    Naciskając PC4 zapala się led5 gasi led4.
    Naciskając PC5 zapala się led6 gasi led5 .

    Następnie naciskając PC0 nic się nie dzieje
    Naciskając PC1 też nie reaguje.

    Naciskając PC2 działa led6 gaśnie zapala led3
    Naciskając PC3 działa led6 gaśnie zapala led4
    itd .
    Brak obsługi PC0 i PC1
    Program wygląda tak dzięki koledze sp3ots

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Dodano po 39 [minuty]:

    Witam,
    Przy takiej konfiguracji jak poniżej program działa już jak zakładałem
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Dodano po 2 [godziny] 15 [minuty]:

    Za wcześnie się cieszyłem działa ale nie w 100%
    Brak jest reakcji na zmianę portu PB5 ze zmiany PC2 PC3 PC5 PB3 PB5
    Jest tylko reakcja na zmianę PB5 z PC4
    Proszę o pomoc programu nie zmieniałem .
  • Poziom 36  
    ejcon napisał:

    Program miał działać następująco :
    Chce zrealizować obsługę 7 przycisków potwierdzanych zapaleniem diod na wyjściach .
    Naciśniecie jednego ma zgasić diodę na reszcie .
    Poza tym będą trzy przekaźniki działające na zasadzie matrycy kodowanej.
    W ten sposób za pomocą 3 przekaźników otrzymam 7 informacji.
    Przycisk 1 on on led1 przekaźnik1 on 2 off 3 off
    Przycisk 2 on on led2 przekaźnik1 on 2 on 3 off
    Przycisk 3 on on led3 przekaźnik1 on 2 on 3 on
    Przycisk 4 on on led4 przekaźnik1 off2 on 3 off
    Przycisk 5 on on led6 przekaźnik1 off 2 off 3 on
    Przycisk 6 on on led7 przekaźnik1 on 2 on 3 off
    Przycisk 7 on on led8 przekaźnik1 on 2 off 3 off
    Proszę o pomoc w zrealizowaniu tego programu


    Owszem mając trzy przekaźniki możesz uzyskać 7 różnych kombinacji, ale ta twoja lista nie zawiera wszystkich możliwych (niektóre są dublowane).
    Uporządkuj listę, posłuż się pomocniczą tabelą to nie zrobisz pomyłek ; na przykład tak:
    Program napisany w Bascom działa w symulatorze, Nie działa na układzie .

    Z założenia ten koncept nie przewiduje powrotu do stanu wyjściowego, tak aby wszystko było wyłączone...

    W gruncie program można uprościć, wykorzystyjąc pewne skróty i ułatwienia konfiguracyjne.
    Zamiast wielokrotnych subrutyn możesz zastosować "select case" jak w tym przykładzie poniżej:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Edit:
    Możesz to rozwiązać na kilka innych sposobów:
    - możesz zastosować konfigurację odwrotną; porty wejściowe z przyciskami podciągnąć rezystorami do GND, a stan aktywny przycisku - zwierać do Vcc, (wtedy wartości 'CASE' byłyby odpowiednio: 1, 2, 4, 8, 16, 32 i 64). Naturalnie, wykrycie naciśniętego przycisku przyjmie inny warunek niż w przykładzie.

    Możesz także te przyciski uformować w matrix keypad i stosowac standardową dla Bascom funkcję 'GETKBD'. W tej metodzie możesz użyć zarówno "CASE" jak i 'lookup table' zarówno dla KBD jak i portów wyjściowych.
    -możesz tu też użyć własną procedurę scanowania przycisków.

    e marcus
  • Poziom 13  
    emarcus napisał:
    ejcon napisał:

    Program miał działać następująco :
    Chce zrealizować obsługę 7 przycisków potwierdzanych zapaleniem diod na wyjściach .
    Naciśniecie jednego ma zgasić diodę na reszcie .
    Poza tym będą trzy przekaźniki działające na zasadzie matrycy kodowanej.
    W ten sposób za pomocą 3 przekaźników otrzymam 7 informacji.
    Przycisk 1 on on led1 przekaźnik1 on 2 off 3 off
    Przycisk 2 on on led2 przekaźnik1 on 2 on 3 off
    Przycisk 3 on on led3 przekaźnik1 on 2 on 3 on
    Przycisk 4 on on led4 przekaźnik1 off2 on 3 off
    Przycisk 5 on on led6 przekaźnik1 off 2 off 3 on
    Przycisk 6 on on led7 przekaźnik1 on 2 on 3 off
    Przycisk 7 on on led8 przekaźnik1 on 2 off 3 off
    Proszę o pomoc w zrealizowaniu tego programu


    Owszem mając trzy przekaźniki możesz uzyskać 7 różnych kombinacji, ale ta twoja lista nie zawiera wszystkich możliwych (niektóre są dublowane).
    Uporządkuj listę, posłuż się pomocniczą tabelą to nie zrobisz pomyłek ; na przykład tak:
    Program napisany w Bascom działa w symulatorze, Nie działa na układzie .

    Z założenia ten koncept nie przewiduje powrotu do stanu wyjściowego, tak aby wszystko było wyłączone...

    W gruncie program można uprościć, wykorzystyjąc pewne skróty i ułatwienia konfiguracyjne.
    Zamiast wielokrotnych subrutyn możesz zastosować "select case" jak w tym przykładzie poniżej:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Edit:
    Możesz to rozwiązać na kilka innych sposobów:
    - możesz zastosować konfigurację odwrotną; porty wejściowe z przyciskami podciągnąć rezystorami do GND, a stan aktywny przycisku - zwierać do Vcc, (wtedy wartości 'CASE' byłyby odpowiednio: 1, 2, 4, 8, 16, 32 i 64). Naturalnie, wykrycie naciśniętego przycisku przyjmie inny warunek niż w przykładzie.

    Możesz także te przyciski uformować w matrix keypad i stosowac standardową dla Bascom funkcję 'GETKBD'. W tej metodzie możesz użyć zarówno "CASE" jak i 'lookup table' zarówno dla KBD jak i portów wyjściowych.
    -możesz tu też użyć własną procedurę scanowania przycisków.

    e marcus

    Po wgraniu do sclaka ten program nic nie robi i nie działają klawisze.
    Żadna dioda też się nie świeci
    Opis przekaźników nie zawiera pomyłek .
    program mój realizuje wszystkie założenia oprócz przełączenia z dowolnego poru na sw7 działa tylko z Sw4
    Co może powodować taki stan rzeczy?
  • Pomocny post
    Poziom 37  
    Sw7 pracuje jako reset, jeśli przełączysz go we fuse bitach do pracy jako zwykły port stracisz możliwość programowania po ISP.
    Uporządkuj schemat i program, inaczej szkoda czasu.
  • Poziom 13  
    Zmieniłem obsługę przycisków .
    Tak wygląda teraz program
    Pamiętajcie o podpięciu rezystora 10k do VCC i PIN1 Atmegi8
    Program działa w100% .
    Dzięki wielkie wszystkim którzy mi pomogli .

    $regfile = "m8def.dat"
    $crystal = 8000000

    Config Portd.0 = Output : Portd.0 = 0 : Led1 Alias Portd.0
    Config Portd.1 = Output : Portd.1 = 0 : Led2 Alias Portd.1
    Config Portd.2 = Output : Portd.2 = 0 : Led3 Alias Portd.2
    Config Portd.3 = Output : Portd.3 = 0 : Led4 Alias Portd.3
    Config Portd.4 = Output : Portd.4 = 0 : Led5 Alias Portd.4
    Config Portd.5 = Output : Portd.5 = 0 : Led6 Alias Portd.5
    Config Portd.6 = Output : Portd.6 = 0 : Led7 Alias Portd.6
    Config Portd.7 = Output : Portd.7 = 0 : Led8 Alias Portd.7

    Config Pinb.3 = Input : Portb.3 = 1 : Sw7 Alias Pinb.3
    Config Pinb.4 = Input : Portb.4 = 1 : Sw1 Alias Pinb.4
    Config Pinb.5 = Input : Portb.5 = 1 : Sw2 Alias Pinb.5


    Config Portb.2 = Output : Portb.2 = 0 : Pk3 Alias Portb.2
    Config Portb.1 = Output : Portb.1 = 0 : Pk2 Alias Portb.1
    Config Portb.0 = Output : Portb.0 = 0 : Pk1 Alias Portb.0

    Config Pinc.0 = Input : Portc.0 = 1
    Config Pinc.1 = Input : Portc.1 = 1
    Config Pinc.2 = Input : Portc.2 = 1 : Sw3 Alias Pinc.2
    Config Pinc.3 = Input : Portc.3 = 1 : Sw4 Alias Pinc.3
    Config Pinc.4 = Input : Portc.4 = 1 : Sw5 Alias Pinc.4
    Config Pinc.5 = Input : Portc.5 = 1 : Sw6 Alias Pinc.5



    Declare Sub Pr1
    Declare Sub Pr2
    Declare Sub Pr3
    Declare Sub Pr4
    Declare Sub Pr5
    Declare Sub Pr6
    Declare Sub Pr7


    Do



    Debounce Sw1 , 0 , Pr1 , Sub
    Debounce Sw2 , 0 , Pr2 , Sub
    Debounce Sw3 , 0 , Pr3 , Sub
    Debounce Sw4 , 0 , Pr4 , Sub
    Debounce Sw5 , 0 , Pr5 , Sub
    Debounce Sw6 , 0 , Pr6 , Sub
    Debounce Sw7 , 0 , Pr7 , Sub
    Loop
    End


    Pr1:
    Set Led1
    Set Pk1
    Reset Pk2
    Reset Pk3
    Reset Led2
    Reset Led3
    Reset Led4
    Reset Led5
    Reset Led6
    Reset Led7
    Return

    Pr2:

    Set Led2
    Set Pk2
    Reset Pk1
    Reset Pk3
    Reset Led1
    Reset Led3
    Reset Led4
    Reset Led5
    Reset Led6
    Reset Led7
    Return

    Pr3:

    Set Led3
    Set Pk3
    Reset Pk1
    Reset Pk2
    Reset Led1
    Reset Led2
    Reset Led4
    Reset Led5
    Reset Led6
    Reset Led7
    Return

    Pr4:
    Set Led4
    Set Pk1
    Set Pk2
    Reset Pk3
    Reset Led1
    Reset Led2
    Reset Led3
    Reset Led5
    Reset Led6
    Reset Led7
    Return

    Pr5:
    Set Led5
    Set Pk1
    Set Pk3
    Reset Pk2
    Reset Led1
    Reset Led2
    Reset Led3
    Reset Led4
    Reset Led6
    Reset Led7
    Return

    Pr6:
    Set Led6
    Set Pk1
    Set Pk2
    Set Pk3
    Reset Led1
    Reset Led2
    Reset Led3
    Reset Led4
    Reset Led5
    Reset Led7
    Return

    Pr7:
    Set Led7
    Reset Pk1
    Reset Pk2
    Reset Pk3
    Reset Led1
    Reset Led2
    Reset Led3
    Reset Led4
    Reset Led5
    Reset Led6

    Return[/syntax]