Skocz do zawartości

[Kurs] BASCOM - lekcja3 - zaczynamy programować


Ikar

Pomocna odpowiedź

Witam

Z uwagi na wiele postów z pytaniami początkujących dołączam się do tematu, zamiast

zakładać własny, kolejny o tytule: problem z bascomem.

Otóż na wejściu PB2 występują dwa stany: równiutko 3.78V kiedy jeden z czujników wskazuje że robot jest na stole i 0V kiedy jest poza stołem (to robot który jeździ po stole i omija krawędzie by nie spaść)

Na wyjściu PD3 które kieruje do układu L293D ma być (pierwszy krok w eksperymentach) ten sam stan co na wejściu PB.2 Tu jeden, tam jeden, tu zero, tam zero. Taki "wtórnik"...

Config Pind.0 = Input
Config Pind.1 = Output
Config Pind.2 = Output
Config Pind.3 = Output
Config Pind.4 = Output
Config Pind.5 = Output                                      '
Config Pind.6 = Output

Config Pinb.0 = Output
Config Pinb.1 = Input
Config Pinb.2 = Input
Config Pinb.3 = Output
Config Pinb.4 = Output
Config Pinb.5 = Output
Config Pinb.6 = Output
Config Pinb.7 = Output

Portd = &B0000000
Portb = &B000000

Czujnik1 Alias Pinb.2
Czujnik2 Alias Pinb.1

Klucz1 Alias Pind.3
Klucz2 Alias Pinb.4

Config Debounce = 2



Do
If Czujnik1 = 1 Then
Klucz1 = 1
Elseif Czujnik1 = 0 Then
Klucz1 = 0
End If
Loop

End        

Mikrokontroler reaguje wyjątkowo topornie. Kiedy symulując czujnik zmieniam stan wejścia z 0 na 1 prawie zawsze zmienia wyjście z 0 na 1, ale kiedy od razu po tym, spowrotem symuluje mu stan 0 na wejściu, na wyjściu pozostaje 1, trzeba wtedy posymulować kilka razy zmiane stanu z 1 na 0 i w końcu na wyjściu tez jest 0.

Rozumując logicznie pasowało by coś takiego

While Czujnik1 = 1 then
Klucz1 = 1
else
Klucz1 = 0

tylko jak wiecie to jest błędne bo bascom poznałem 2 godziny temu 😉

Mam nadzieje, że ktoś mnie zrozumiał 😉

Link do komentarza
Share on other sites

Pierwsze co mi się rzuca w oczy:

Klucz1 Alias Pind.3
Klucz2 Alias Pinb.4 

Spróbuj zmienić Pin na Port.

Poza tym warto postarać się o wyeliminowanie drgań zestyków, bo zakładam, że czujnik to zwykła krańcówka z rolką albo inny mechanizm oparty na tact-switchu? Warto poczytać o bascomowej funkcji Debounce, a jeśli tak jak ja nie wierzysz gotowcom, to możesz sprawdzać stan co kilka ms i jeśli wszystkie pomiary będą np. 1, to dopiero wtedy każ wykonywać stosowną instrukcję.

No i jest jeszcze kwestia podpięcia tych czujników - zastosowanie tzw. pull-upów.

Link do komentarza
Share on other sites

Oto jak jest wysterowane wejście

Fototranzystor jest w obudowie razem z diodą IR i stanowią układ TCRT1010

To dosyć dziwne, że na wyjściu wzmacniacza jest zaledwie ~3.78V....

Link do komentarza
Share on other sites

Spróbuj podłączyć wzmacniacz jako komparator, nie jako wzmacniacz. Powinno się nieco poprawić, mimo to, lm324 nigdy nie da na wyjściu VCC tylko VCC - 0,4VCC bodajże.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Witam serdecznie.

Jako, że zbudowałem już pierwszego robota typu BEAM, nadszedł czas na coś z uC 🙂

Oczywiście najpierw chcę nauczyć się języka. Z części 1 i 2 prawie wszystko rozumiem, a tu jest problem, nic nie pojmuję z pierwszego postu, jakieś 1/0 na wejściach wyjściach, skąd mam wiedzieć który port ma być wejściem który wyjściem itp.

Co ominąłem i do czego powinienem wrócić ?

Póki co nic nie kupuję, tylko postanowiłem nauczyć się Bascoma, gdy już to zrobię zbuduję lub kupię programator.

Mam jeszcze pytanie co do samego programu Bascom-avr, pobrałem wszystkie możliwe rzeczy ze strony z części pierwszej poradnika i czy dobrze rozumiem, że mam zainstalować tylko "setupdemo" z archiwum "bcavrdmo", tak ? Co zrobić z bibliotekami które są w innych archiwach pobranych ze strony ?

Z góry bardzo przepraszam jak napisałem coś głupiego co powinno być oczywiste. Jednak jak do tej pory przeczytałem tylko książkę Pana Piotra Góreckiego "Wyprawy w świat elektroniki", wykonałem 3 układy i robocika Wall-i, a z programowaniem nigdy nie miałem styczności.

Pozdrawiam.

Link do komentarza
Share on other sites

Wejścia i wyjścia to, krótko mówiąc, piny, którymi "zarządzasz" Ty (np. za pomocą przełączników) lub mikroprocesor. 1 lub 0 to w praktyce ok. 5V lub ok. 0V (jeśli zasilasz uC przy pomocy 5V, oczywiście wartości nie muszą być idealne - mniej więcej w połowie tego przedziału napięć znajduje się "granica" rozróżniania przez procesor 0 od 1, ale lepiej trzymać się jak najbardziej skrajnych wartości).

Jeśli ustawisz dany pin procesora jako pin wejścia (input), to możesz napisać program, który będzie sprawdzać, czy na tym pinie pojawia się logiczne 1 lub 0 (przykładowe 5V lub 0V) - przydaje się zwłaszcza w funkcjach warunkowych (np. "if pind.5 = 1 then zrób_cośtam else zrób_coś_innego end if").

Logiczne 0 lub 1 podajesz podłączając do tego pina napięcie przez np. przełącznik.

Z kolei port ustawiony jako wyjście (output) może zostać wykorzystany do sterowania przez procesor, czyt. program decyduje czy na danym porcie ma się pojawić napięcie, czy też nie. Można to wykorzystać np. do sterowania diodami (podłączonymi oczywiście przez rezystor) - dokładnie tak jak w kursie.

Mam nadzieję, że nie zagmatwałem, a rozjaśniłem 😉

Jeśli chodzi o bascoma, to wszystkie potrzebne na początku biblioteki są w instalce.

Polecam też przetłumaczony plik pomocy do bascoma (http://www.edw.com.pl/ea/bascom_avr_inst.html - przeczytaj rozdział "instalacja", masz instrukcję jak go połączyć z bascomem).

Póki nie masz programatora ani układów do testów, polecam wbudowany w bascom symulator, szczegóły znajdziesz w polskim helpie, jak już go zainstalujesz 😉

Powodzenia

  • Lubię! 1
Link do komentarza
Share on other sites

Bardzo dziękuję ze pomoc, troszkę mi się wszystko rozjaśniło.

Czyli rozumiem, że np. mogę dać na uC który ma załóżmy 6 pinów, każdy jako wejście albo wyjście ?

I jeśli np. dam 6 pinów wejścia to gdzie wtedy podłączam zasilanie ?

Jeszcze mam takie pytanie z czystej ciekawości, jak długo trzeba się przeciętnie uczyć tego języka, żeby można było w nim napisać prawie każdy program, nawet jakiś bardzo skomplikowany ?

Pozdrawiam.

Link do komentarza
Share on other sites

Zaczynasz od przejrzenia dokumentacji układu (google i "NAZWA_UKŁADU datasheet", ew. wchodzisz na images.google.pl i wklepujesz nazwę układu), szukasz czegoś w tym rodzaju dla swojego procka:

(przykład dla Atmega8)

Masz tam opisane wszystkie piny - widać, gdzie podłączyć VCC, gdzie GND, gdzie znajduje się RESET,SCK,MISO i inne potrzebne do programowania piny. XTAL1 i XTAL2 to miejsce gdzie możesz (ale nie musisz) podpiąć zewnętrzny rezonator, AREF i AVCC są do obsługi przetwornika analogowo-cyfrowego (nie trzeba nic podpinać, jeśli się z niego nie korzysta). Każdy pin jest dokładnie opisany w dokumentacji, dlatego warto przed przystąpieniem do projektowania pcb wiedzieć gdzie i co można podłączyć.

  • Lubię! 1
Link do komentarza
Share on other sites

No i świetnie już prawie wszystko rozumiem 🙂

Doszedłem do wniosku, że jednak najpierw zbuduję ten > https://www.forbot.pl/forum/upload_img/obrazki/IMG_487a7a4f486128632.jpg programator i kupie uC attiny2313.

Czyli muszę kupić:

- Wtyczkę lpt

- 3 rezystorki 330 i jeden 100

- Attiny2313 + podstawkę (x2?)

- diodę, kondensator 100uF i 2 dotykowe przełączniki, trochę kabli (to gdzieś mam)

I z tym co wyżej wypisałem, będę mógł podłączyć mikrokontoler do komputera i zaprogramować ? Obraz wypróbować napisany program z "kursu".

Czy dobrze rozumiem, że do programowania uC, wyjmuje się go z podstawki, a podłącza do programatora ? Czy dobrze myślę że do programatora dobrze kupić jeszcze jedną podstawkę pod Attiny2313, żeby tylko wciskać mikrokontroler w programator, a nie za każdym razem łączyć wszystkie nóżki przewodami ?

Jeszcze raz przepraszam jak pytania są trywialne.

Pozdrawiam.

Link do komentarza
Share on other sites

Możliwe, że na początku będzie Ci łatwiej programować układy w ten sposób, ale musisz wiedzieć, że AVR mają taki wynalazek jak ISP (In-system Programming), który pozwala je zaprogramować bez demontażu z układu - wystarczy wyprowadzenie pinów MOSI, MISO, RST i SCK oraz połączenie GND programatora z GND układu.

Programator, którego schemat podałeś jest względnie ok, ale nie posiada żadnych zabezpieczeń - na początku przygody stanowczo odradzam, bo możesz uszkodzić płytę główną komputera w przypadku nawet drobnej pomyłki. Jeśli masz w kompie port LPT, to możesz poszukać STK200, ja natomiast z mojej strony radzę Ci kupić nieco droższy programator na USB - najlepiej taki z wbudowanym bezpiecznikiem wielokrotnego użytku. Podłączysz go do każdego nowego kompa (obecnie LPT jest na wymarciu, a przejściówki USB-LPT nie zawsze działają tak jak powinny) i gratis będziesz miał możliwość zasilania układu z portu USB, co też na pewno uprości sprawę - zwłaszcza na początku, bo nie musisz kombinować z dodatkowymi zasilaczami. Jeśli jesteś zainteresowany, to szukaj na Allegro "AVR ISP USB", ze złączem typu KANDA i odpowiednim 10 żyłowym przewodem w zestawie - sam tak zaczynałem i poszło gładko 😉

Powodzenia

  • Lubię! 1
Link do komentarza
Share on other sites

Tak więc oczywiście zrobię tak jak piszesz i sam nie będę kombinował bo płyty głównej szkoda. Port LPT mam i nie zanosi się, że będę wymieniał komputer. Takie wejścia mam:

wejcia.th.jpg

Na początek nie chcę zbyt wiele w to "inwestować" bo zawsze jest możliwość, że mi się nie spodoba, znudzi mi się, nie będę umiał itp. 😉

Nie chcę teraz namotać, czy ktoś mógłby mi napisać co potrzebuję jeszcze do zaprogramowania uC jak będę miał:

- http://www.allegro.pl/item946129668_programator_avr_stk200_kanda.html ( Mi-Ster , 946129668)

- Attiny2313.

Czy potrzebuję jeszcze jakąś podstawkę do której podepnę programator i włożę mikrokontroler ? Jak mam to potem połączyć ? Te przewody co wystają pojedynczo z tego programatora do odpowiednich nóżek ? Czy może jakaś płytka potrzebna, żeby wpiąć całą kostkę ? Z tego co czytałem to zasilanie 5V tylko do nóżki uC ?

Pozdrawiam.

Link do komentarza
Share on other sites

Odnoście podłączania programatora - odpowiedź znajdziesz tutaj:

https://www.forbot.pl/forum/topics33/faq-dla-zielonych-vt2415.htm , zainteresuj się złączem KANDA - to jest to, które będzie miał Twój programator (ew. "luźne kable" ułatwiają podłączanie do układów, w których nie ma miejsca na złącze, a konkretne porty uC są wyprowadzone na goldpinach - trzeba jednak najpierw np. miernikiem rozeznać który jest który).

Do programowania przyda się na pewno płytka stykowa i elementy wymienione w tym temacie (diody, rezystory, przełączniki itp. - w końcu chcesz żeby uC coś konkretnego robił).

Z STK200 powinieneś dostać instrukcję, jeśli nie to poszukaj na google. Z tego co pamiętam, układ trzeba zasilać osobno (potrzebny np. zasilacz od komórki na 5V), wiem natomiast, że bez względu na wszystko GND programatora musi być połączone z GND uC.

  • Lubię! 1
Link do komentarza
Share on other sites

I chyba wszystko jasne 🙂

Jutro jak czas pozwoli wybiorę się do elektrycznego po uC i inne drobiazgi i zapytam o programator, jednak wątpię czy będzie. Więc prawdopodobnie zamówię na allegro. Zorientuję się też w cenach płytek stykowych i jak będą przystępne to na pewno nabędę takową.

Planuję wytrawić, albo zastosować uniwersalną płytkę do której będzie podpinane to złącze KANDA, a z niego wszystko doprowadzone do podkładki pod uC, który do programowania będzie się w nią wkładać 🙂 Jaką podkładkę potrzebuję ? Nie ma jakiś specjalnie dedykowanych do Attiny2313.

Pozdrawiam i bardzo dziękuję za pomoc, oczywiście piwa poleciały ;]

Link do komentarza
Share on other sites

elektrycznego po uC

Oj, stracisz tylko czas. Musisz iść do elektronicznego.

Jaką podkładkę potrzebuję ? Nie ma jakiś specjalnie dedykowanych do Attiny2313.

Potrzebujesz dowolnej 20-pinowej, do adaptera polecałbym precyzyjną, lub jeśli masz za dużo kasy to ZIF'a. Jak będziesz wytrawiał płytkę to dorób sobie jeszcze 28pin i 40pin, a jesli będziesz kupował płytkę uniwersalną to zostaw sobie nieco dziurek na dołożenie podstawek.

  • Lubię! 1
Link do komentarza
Share on other sites

Oczywiście literówka. Chodzi mi o sklep elektroniczny.

Hm, jak dorobię jeszcze 28pin i 48pin to z tej wtyczki KANDA, te wszystkie: MISO, MOSI, RST, SCK połączyć tak z tymi podstawkami 28 i 48, żeby w przyszłości można było programować ATmegi 8 i 16 ?

Czyli od programatora łączyć zgodnie z datasheet'ami ATmeg 8 i 16? Dobrze rozumiem, czy namieszałem 🙄

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.