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.

Bardzo początkujący Bascom AVR

zicherek2 23 Wrz 2017 20:00 882 13
  • #1 23 Wrz 2017 20:00
    zicherek2
    Poziom 11  

    Witam, jestem bardzo początkujący. Poczytałem kilka kursów Bascom ale tak do końca nie rozumiem jak zrobić jedno polecenie. Nie operuję jeazcze fachowym nazewnictwem i może dlatego nie znalazłem rozwiązania swojego problemu bo nie wiem "czego szukać".

    Chcę zrobić takie coś:
    Ma się zrobić PortD.0 = 0
    Potem po upływie 2 min ma być PortD.0 = 1 jednak jeśli w międzyczasie przycisk PinB.0 = 0 to też PortD.0 = 1

    Zrobiłem takie coś (urywek kodu):
    PortD.0 =0
    If PinB.0 =0 then PortD.0 =1
    Else wait 2 then PortD.0 = 1
    End if

    Jednak to nie przechodzi i pokazuje błędy..

    0 13
  • #2 23 Wrz 2017 20:22
    tronics
    Poziom 36  

    Bascom to jedna operacja w linii.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
    podejrzewam, że tu jest problem. Dodatkowo bity (np. PORTD.0) powinno się ustawiać przez SET i czyścić przez RESET.
    Przy okazji ten program nie będzie działał zgodnie z założeniami gdyż wejdzie w pustą pętlę do "delaya" na 2 sekundy i w międzyczasie nie będzie reagować na pierwszy warunek.
    Poza tym jako początkujący powinien kolega bardzo ściśle pracować z helpem bascoma, w szczególności przejrzeć:
    https://avrhelp.mcselec.com/index.html?if_then_else_end_if.htm

    0
  • #4 23 Wrz 2017 22:47
    miro340
    Poziom 12  

    Witam. Pierwsza rzecz jaką powinieneś zrobić, to nauczyć się składni języka i tego jak oprogramować poszczególne układy peryferyjne procesora. W tym konkretnym przypadku trzeba by się zakolegować z portami I/O oraz dodatkowo z timerami i przerwaniami. Pomóc w tym może Bascomowy help, no i jakaś książka lub pierwszy z brzegu kurs znaleziony w sieci. Nie wiem jak wygląda reszta kodu ale trzeba by zacząć od konfiguracji linii portu, bo skąd procesor ma wiedzieć która linia jest wejściem, a która wyjściem.

    0
  • #5 24 Wrz 2017 13:55
    zicherek2
    Poziom 11  

    Kod wygląda tak:

    (Ma to być moduł włączający lampkę po otwarciu centralnego zamka, po otwarciu drzwi i dodatkowo przyciskiem, dopiero próbuję okiełznać włączenie po otwarciu centralnego)

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • #6 24 Wrz 2017 15:59
    miro340
    Poziom 12  

    Pisałem, że wypadało by zapoznać się ze sposobem konfiguracji portów i ze składnią języka. Skoro port B ustawiasz jako wejściowy to jego linie musisz podłączyć do rezystorów podciągających do zasilania. Tutaj masz dokładnie opisany sposób konfiguracji portów. No i nie pisz instrukcji w jednej linii bo tak się nie robi. A jak już tak bardzo chcesz tak pisać to rozdziel je dwukropkami, wtedy program przejdzie kompilację. Nie analizowałem czy ten kod będzie działał, bo to Ty sam zrobisz gdy poprawisz błędy zgodnie ze wskazówkami ale tak na pierwszy rzut oka to wywaliłbym to opóźnienie i returna z pętli głównej, no i należało by podprogramy zakończyć returnem.

    0
  • #7 24 Wrz 2017 16:36
    22053
    Użytkownik usunął konto  
  • #8 24 Wrz 2017 19:35
    zicherek2
    Poziom 11  

    Poczytam o tych alliasach.
    Puki co pomogło " No i nie pisz instrukcji w jednej linii " - kompilacja przeszła.
    Teraz jeszcze pozmieniam na "Set" i "Reset" i ogólnie poczytam poradniki.

    Aktualny kod

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Dodano po 3 [minuty]:

    A o tych rezystorach podciągowych wiem, bo robiłem już próby i zadziałało.

    0
  • #9 24 Wrz 2017 19:48
    M. S.
    Poziom 34  

    Zapomnij o GOTO. Zapoznaj się z GOSUB.

    0
  • #10 24 Wrz 2017 20:06
    22053
    Użytkownik usunął konto  
  • #11 24 Wrz 2017 20:43
    miro340
    Poziom 12  

    Teraz program wygląda znacznie lepiej. Brakuje jeszcze tylko return po drzwi: i dalej nie ma podciągnięcia wejść do zasilania - po prostu zamiast portb=0 powinno być portb=255 (oczywiście dziesiętnie). Set i Reset nie są wymagane to tylko kwestia wyboru metody konfiguracji portu. Wszystko jest ładnie opisane pod linkiem, który podałem wcześniej. Można jeszcze zamiast podprogramów zastosować procedury lub funkcje, jeśli zajdzie potrzeba zwrócenia wartości.

    0
  • #13 25 Wrz 2017 20:59
    piterek-23
    Poziom 31  

    Nie bardzo wiem jak ten Twój program ma działać :(

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    *ten program może nie działać, ja też jestem początkujący ;)

    0