[BASCOM] Parę pytań, początkujący.

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
MichalZ
-
Posty: 40
Rejestracja: 10 gru 2008, 15:16
Lokalizacja: Kraków
Kontakt:

[BASCOM] Parę pytań, początkujący.

Post autor: MichalZ » 11 gru 2008, 16:42

Witam, jestem początkujący w technice AVRów, trochę zrozumiałem ale jest parę rzeczy, które mi się mieszają, będę wdzięczny za wytłumaczenie :wink:
1. Dlaczego np. zaświecenie diody następuje gdy podamy na port stan 0? Przy katodzie diody podłączonej do pinu, anoda przez rezystor do 5V. Czyżby normalnie panowało tam napięcie 5V, po zerowaniu prąd może popłynąć? Nie wiem tego i mi się miesza :)
2. Gdy zwieramy port ustawiony wcześniej jako wejście do masy, to instrukcją IF sprawdzamy czy stan jest 0, czy 1? Raz mi działa dobrze, raz kompletnie wszystko głupieje.
Procesor Attiny2313, Bascom-avr demo.

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 11 gru 2008, 16:56

MichalZ pisze:Dlaczego np. zaświecenie diody następuje gdy podamy na port stan 0?
Gdyż zamykasz obwód elektryczny.
MichalZ pisze:Raz mi działa dobrze, raz kompletnie wszystko głupieje.
Pull-up wejścia masz ?

MichalZ
-
Posty: 40
Rejestracja: 10 gru 2008, 15:16
Lokalizacja: Kraków
Kontakt:

Post autor: MichalZ » 11 gru 2008, 17:26

Pull-up wejścia masz ?
Nie dawałem, póki co.

Np. taki kodzik, biorąc pod uwagę te wszystkie zero-jedynkowe zamieszania.

Kod: Zaznacz cały

Config Pinb.3 = Output
Config Pinb.2 = Input
Do
If Pinb.2 = 0 Then
Pinb.3 = 0
Else
Pinb.3 = 1
End If
Loop
PortB.3 podłączony jest do katody diody, w optotriaku, anoda przez 430Ω do +5V.
PortB.2 przycisk zwiera do masy, układ kompletnie nie reaguje, żarówka na początku miga, potem przestaje.
RESET: 10kom do +5V jest.

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 11 gru 2008, 17:43

Na pinie wejściowym nie może być stan nieustalony = bez pullup'a (programowy lub rezystorem). Kondensator 100nF na nogach zasilających procesora rozumiem jest?

Awatar użytkownika
RcTomek
Moderator
Posty: 243
Rejestracja: 27 wrz 2007, 21:15
Lokalizacja: Głogów / Wrocław

Post autor: RcTomek » 11 gru 2008, 22:08

MichalZ pisze:

Kod: Zaznacz cały

Config Pinb.3 = Output
Config Pinb.2 = Input
Do
If Pinb.2 = 0 Then
Pinb.3 = 0
Else
Pinb.3 = 1
End If
Loop
Rejestru PINx nie można zapisywać. Służy on wyłącznie do odczytu rzeczywistego stanu końcówki mikrokontrolera, niezależnie od PORTx.
Prawidłowo powinno być Portb.3=0, nie Pinb.3=0.

MichalZ
-
Posty: 40
Rejestracja: 10 gru 2008, 15:16
Lokalizacja: Kraków
Kontakt:

Post autor: MichalZ » 12 gru 2008, 14:16

Dałem elektrolit 47uF przed stabilizator.

Kod: Zaznacz cały

Config Pinb.3 = Output
Config Pinb.2 = Input
Do
If Portb.2 = 0 Then
Portb.3 = 0
Else
Portb.3 = 1
End If
Loop
Dioda podłączona do wyjścia świeci się cały czas, nie reaguje.
//Edit

Kod: Zaznacz cały

Config Portb.3 = Output
Config Portb.2 = Input
Do
If Portb.2 = 1 Then
Portb.3 = 1
Else
Portb.3 = 0
End If
Loop
Dioda świeci lekko, ale po naciśnięciu trochę mocniej. Mi chodzi o to żeby się nie świeciła, a przy naciśnięciu tak.

Awatar użytkownika
RcTomek
Moderator
Posty: 243
Rejestracja: 27 wrz 2007, 21:15
Lokalizacja: Głogów / Wrocław

Post autor: RcTomek » 12 gru 2008, 15:42

MichalZ pisze:Dioda podłączona do wyjścia świeci się cały czas, nie reaguje.
W instrukcji IF sprawdź stan pinu a nie portu, powinno być ok.
Rejestr PINx - sprawdzanie rzeczywistego stanu pinu, niezależnie od PORTx.
Rejestr PORTx - ustawianie 'domyślnego' stanu poszczególnych wyjść mikrokontrolera. Przykładowo jeżeli ustawimy PORTB.3 jako wejście podciągnięte do plusa zasilania i zewrzemy to wyprowadzenie do masy (np. mikroswitchem), stan PORTB.3 sięnie zmieni, natomiast PINB.3 przyjmie stan niski.
Rozumiesz już różnicę?

MichalZ
-
Posty: 40
Rejestracja: 10 gru 2008, 15:16
Lokalizacja: Kraków
Kontakt:

Post autor: MichalZ » 12 gru 2008, 18:40

Kod: Zaznacz cały

Config Portb.3 = Output
Config Portb.2 = Input
Set Portb.2
Set Portb.3
Do
If Pinb.2 = 0 Then
Portb.3 = 0
Else
Portb.3 = 1
End If
Loop
Zastosowałem taki program, i .. ruszyło. Nareszcie.
Dzięki za pomoc, postaram się to pamiętać na przyszłość :mrgreen:
I jeszcze takie pytanie, czy da się wysyłać przez mikrokontroler sygnały COM, wiem że mają wyjścia TxD, RxD, ale jak je wykorzystać?
Chodzi tutaj o transmisję UART, co jest potrzebne od strony hardwarowej i softwarowej?
Chcę tym sterować urządzenie, które normalnie podłącza się do komputera i można sterować przekaźnikami, tyle że zamiast kompa chcę użyć procesora. Może być Atmega16 :wink: Może trochę przesadzam, za dużo na początek, ale jak ktoś wytłumaczy będę wdzięczny.

Awatar użytkownika
RcTomek
Moderator
Posty: 243
Rejestracja: 27 wrz 2007, 21:15
Lokalizacja: Głogów / Wrocław

Post autor: RcTomek » 13 gru 2008, 1:20

Do sterowania przekaźników przez UART ATmega16 to rzeczywiście przesada ;) spokojnie wystarczy np. popularny ATtiny2313.
Do konfiguracji i prowadzenia transmisji przy pomocy RxD i TxD przeznaczone są odpowiednie polecenia Bascom'a. Wybacz, ale w tej chwili nie powiem Ci jakie; od dłuższego czasu nie pisze w Bascom'ie. Poszukaj w pliku pomocy (w którym z resztą jest wiele innych przydatnych informacji).
Jeśli chodzi o stronę sprzętową będziesz potrzebował konwertera napięć ze standardu TTL do RS-232 i odwrotnie. Służy do tego, także bardzo popularny, układ MAX232 plus parę kondensatorów.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 13 gru 2008, 17:51

Do uzywania UARTu w BASCOM sluzy kilka polecen zaleznie od tego czy używamy UARTu sprzetowego czy programowego. Attiny z tego co pamietam posiada sprzetowy i to jego lepiej uzywac wg mnie. Ogolnie schemat jest zawsze taki sam: Najpierw otwieramy urządzenie za pomocą polecenia OPEN , potem uzywamy polecenia PRINT dal wysyłania bajtu albo INPUT dla odbierania bajtu, na koncu zamykamy urządzenie za pomoca polecenia CLOSE. Na stronie Elportalu mozna sciagnac polskiego helpa sprawdz sobie te polecenia i ich składnie. :razz: Jesli czegos nie bedziesz wiedzial to pisz

MichalZ
-
Posty: 40
Rejestracja: 10 gru 2008, 15:16
Lokalizacja: Kraków
Kontakt:

Post autor: MichalZ » 14 gru 2008, 11:08

http://www2.chip.pl/arts/archiwum/n/ima ... 49c23a.gif
Układ mam taki, i chciałbym zrobić do niego przystawkę, która uruchamiała by wyjścia o zadanej godzinie.
MAX232 i Help'a mam więc to nie problem :smile:
I zastanawiam się czy mam wysyłać print'em sposobem:
10101010
czy
8,16,32,64...512 itd.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 14 gru 2008, 12:03

A to chyba bez róznicy jak podasz dane ale pamietaj ze liczby w systemie dwojkowym podajemy z przedrostkiem &b.

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 14 gru 2008, 12:51

Zamiast układziku, do którego linka zapodałeś, możesz użyć procka AVR + MAX232, jak podali Koledzy w poprzednich postach. Co chcesz konkretnie robić? Sterować z kompa jakimiś urządzeniami (LEDami, przekaźnikami), czy wciskać przyciski na płytce i żeby komp reagował na to?

Pozdrawiam :)

MichalZ
-
Posty: 40
Rejestracja: 10 gru 2008, 15:16
Lokalizacja: Kraków
Kontakt:

Post autor: MichalZ » 14 gru 2008, 18:01

M@ciej, chodzi mi, żebym mógł sterować tym urządzeniem:
http://www2.chip.pl/arts/archiwum/n/ima ... 49c23a.gif
z procesora, w przyszłości może będzie to programowane na czas, ale narazie mi starczy kod który by uruchomił powiedzmy co 2 przekaźnik.

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 15 gru 2008, 10:59

Tylko że ten układ nie wymaga procka. Robiłem go kiedyś (był w czasopiśmie CHIP) i działał. Wystarczy podłączyć układ do portu i wysłać do portu znak ASCII. Binarna reprezentacja znaku pojawi się na wyjściu dołączonego układu w postaci stanów logicznych.

ODPOWIEDZ