:arrow: Mictronic: Predkosc transmisji to 9600! Ponizej wklejam wycinki mojego programu do obslugi tego modulu: '------------------------------- ' modul RFiD ' ' 9600.1.0 ' dane 0xff,x,x,x,x,x,crc8 '------------------------------- {...} $baud = 9600 ' predkosc transmisji Config Serialin = Buffered , Size = 100 ' rozmiar bufora {...}...
1) Brak deklaracji CONFIG COM w obu programach 2) W odbiorniku wyrzuć TOGGLE i wstaw RESET bo za chwilę napiszesz czemu led się ciągle świeci ale przyciemniony 3) W odbiorniku wykorzystaj ISCHARWAITING i INKEY. Odbierasz tylko A i na podstawie czy jest =10 czy =15 wykonujesz ifa do świecenia ledem
Skorzystaj z Inkey() i IsCharWaiting().
Ja robiłem podobnie do twojego tyle że zamiast "waitkey" używałem "inkey" w przerwaniu . Odbior: B = Ischarwaiting() If B = 1 Then C = Inkey() If C = "Q" Then Inputbin Aa(1) , Aa(2) , Aa(3) , Aa(4) , Aa(5) , Aa(6) End If End If Return Czyli Q robi u mnie za bajt startu a resztę danych przypisuję zmiennym . W programie głównym obrabiam te zmienne. ps:...
Oproznij_bufor: Do Kod = Inkey() Bufor = Ischarwaiting() Loop Until Bufor = 0 Return
Witam, chce uruchomić transmisje szeregową na podanym w tytule uC i tutaj napotkalem na problem, poniewaz dokumentacja do 48 jest bardzo uboga :/ Zaimplementowalem cos, ale nie dziala. jaka uboga? o czym ty mówisz ? skąd ty takie ubogie dokumentacje bierzesz? wejdź na stronę www.atmel.com i pobierz z tamtąd pełną notę PDF do jakiego zechcesz tylko...
Zastosuj bufor: Config Serialin = Buffered , Size = 100 enable interrupts A oczekiwanie na znak zrób: Bufor_flaga = Ischarwaiting() : If Bufor_flaga = 1 Then Gosub Odbierz_uart Następnie procedura odbioru danych: Odbierz_uart: Bufor = "" Do Bufor_znak = Inkey() Bufor = Bufor + Chr(bufor_znak) Bufor_flaga = Ischarwaiting()...
Taj jak napisałem wyżej. WAITKEY będzie czekało do czasu, aż coś odbierze. Jeśli w tym czasie wystąpi jakieś przerwanie to się ono wykona i wróci do programu wykonywanego wcześniej, czyli do WAITKEY (chyba, że WAITKEY będzie w jakimś podprogramie przerwania - wtedy kolejne przerwanie się nie wykona (wykona się po skończeniu aktualnego), chyba że na...
A po co wogóle kol. Stepel pisze sobie bufor we własnym zakresie, skoro jest coś takiego jak CONFIG SERIALIN, działający na przerwaniach. Potem trzeba tylko umiejętnie wykorzystać INKEY() i ISCHARWAITING().
Pozbądź się RS'owej transmisji buforowej i innych komend typu Ischarwaiting(), Inkey() na rzecz przerwania od URXCx i wtedy sprawdź działanie programu.
Sprawa jest prosta. Trzeba zaglądnąć tu: http://www.mcselec.com/index.php?option=... Na dole strony są dwa pliki, które trzeba ściągnąć - jeden to terminal z plikiem źródłowym programu w VB, a drugi to kontrolka do VB pozwlająca na komunikację przez RS. Trzeba to przestudiować i zastosować w swoim programie do PC....
Skorzystaj z instrukcji INKEY( ), WAITKEY , ISCHARWAITING. Do 'jakaś pętelka A = Inkey() 'odczytujemy znak If A > 0 Then 'czy był jakiś (> 0)? Print A 'jeśli tak to piszemy End If Loop 'to będzie pętelka nieskończona 'Powyższy przykład dotyczy SPRZĘTOWEGO układu UART! 'Program zapisany jako OPEN.BAS zawiera przykład użycia INKEY()...
Witam. Mam mały problem z przepisaniem wartości z DANE do zmiennej CZAS. Potrzebuję by po odczycie z UART wartość CZAS=DANE. Oczywiście żle to robię bo BASCOM pokazuje błąd. [syntax=vbnet] Config Serialin = Buffered , Size = 4 Enable Interrupts Declare Sub Kas_bufor Dim Uart As String * 1 Dim Buf As Word Dim Dane As String * 4 Dim Czas As Word Cls Locate...
Odczytaj_uart: Bufor = Ischarwaiting() 'Sprawdz czy bufor pełny If Bufor = 1 Then Gosub Odczytaj_sprzetowy_uart Ring = Instr(uart_txt , Ringtxt) If Ring > 0 Then 'Jeśli telegon dzwoni Waitms 100 Gosub Odczytaj_sprzetowy_uart Gosub Odczytaj_sprzetowy_uart Waitms 10 Print "ATH" ; Chr(13) 'Rozłącz się Wait 1 Gosub...
Spróbowałem przed chwilą , niestety rezultat ten sam , strasznie mnie dziwi że to hex 0 na dowolnej pozycjii blokuje odczyt całego bufora. Jak używałem INKEY() i kontroli ischarwaiting() to znowu mi wczytywał tylko trzy znaki bez względu na dane. Teraz jest trochę lepiej bo czyta wszystko ale pod warunkiem że nie ma wartosci HEX00
Jest taki sobie programik: $regfile = "m16def.dat" $crystal = 16000000 $baud = 9600 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0 Config Lcd = 20 * 4 Config Serialin = Buffered , Size = 10 Enable Interrupts Declare Sub Kas_bufor Dim Uart As String * 1 Dim Buf As Word Dim Dane...
W pętli zrób tak: [syntax=basic4gl] Bufor = Ischarwaiting() If Bufor = 1 Then Waitms 10 Gosub Odczytaj_sprzetowy_uart End If Pwm0a = Dane [/syntax] W pozycji dane mogą znajdować się liczby od 0 do 255. [syntax=basic4gl] Odczytaj_sprzetowy_uart: Dane = "" Do 'Odbierz znak po znaku Kod = Inkey() Dane = Dane + Chr(kod) 'Zapisz w Dane Bufor = Ischarwaiting()...
Raczej operacją sprawdzenia zajętości bufora UDR, a nie sprawdzenia jego zawartości. Chodzi o coś takiego: Do D = ISCHARWAITING If D <> 0 Then 'jeśli coś jest odczytane to wtedy to zapisz do tablicy D = Inkey() W(n) = D Incr N 'przejdz do czytania kolejnego elementu tablicy If N = 16 Then N = 1 End If End If Loop Mniej więcej.
Niestety pomimo wielokrotnych prób nie udało mi się uruchomić układu. Pomiędzy TXD atmegi a RXD telefonu dałem rezystor 260 Ohm oraz diodę zenera 3V9, a program w bascomie jest następujący: [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $Baud = 19200 Config Serialin = Buffered , Size = 200 Dim Kod As Byte Dim Bufor As Byte Do Print "ATE0"...
To nie jest dobry sposób na odczyt bufora. [syntax=basic4gl] '------------------------Odczyt UART w przerwaniu------------------------------... Serial0charmatch: Enter = 1 If Ignoracja = 0 Then Input Todczyt Noecho End [/syntax] Zawsze miałem kłopoty ze skompletowaniem linii oraz pojawiało się dużo przekłamań jak używałem Input. Lepszym sposobem jest...
witam programuje w bascomie i nie wiem jak uruchomić drugi UART w Atmega162 zrobiłem to tak jak pisało w helpie, pierwszy uart działa bez problemu natomiast drugi nie $regfile = "m162def.dat" $crystal = 14745000 $baud = 9600 $baud1 = 19200 . . (konfiguracja wyświetlacza i deklaracja zmiennych) . . do A = Ischarwaiting() If A = 1 Then I = Inkey() Locate...
Są dwie opcje: Oproznij_bufor: Do Kod = Inkey() 'Czyści bufor Bufor = Ischarwaiting() Dane = "0" Loop Until Bufor = 0 Return lub Odczytaj_uart: Kod = Inkey() Dane = Dane + Chr(kod) Bufor = Ischarwaiting() Ring = Instr(dane , Ringtxt) If Ring > 0 And Stan = 0 Then Stan = 1 Wait 1 Print...
witam proszę o pomoc mam telefon s55 i podpiąłem go tak http://obrazki.elektroda.net/35_12524329... pierw chciałem sprawdzić czy zadzwoni i nic się nie dzieje :( program $regfile = "m8def.dat" $crystal = 8000000 $Baud = 19200 Config Serialin = Buffered , Size = 200 Dim Kod As Byte Dim Bufor As Byte Do Print "ATE0" ; Chr(13)...
Po prostu nie możesz korzystać z instrukcji Input tylko z instrukcji np. Inkey i odbierać 128 bajtów o dowolnej zawartości (nawet bajtów zerowych) Po odebraniu 128 bajtów sprawdzić sumę kontrolną, tak jak pisał kolega mirekk36. Jeśli odebrałeś wysłasz ack spowrotem np. z sumą crc ramki Instrukcja Input się nie nadaje do tego celu. Tylko odbieranie za...
Wiesz, każdy musi swoje odsiedzieć jeśli chce coś zrobić samemu a nie małpować :D Więc przykład działa na co jest dowód, ale inny moduł pewnie wymaga innego traktowania. Masz taki mikrokontroler że możesz uruchomić terminal na drugim USART. Możesz ustawić sobie jakąś diodę i po kolei zapalać ją w różnych procedurach i gasić na ich wyjściu. Będziesz...
Config Serialin = Buffered , Size = 80 Enable Interrupts Dim _Flaga_1s as Bit _Flaga_1s = 0 Config Timer1 = Timer , Prescale = 64 Enable Timer1 : On Timer1 Co1s Cls Do If Ischarwaiting() = 1 Then Znak = Inkey() Print Chr(znak) ; End If if _Flaga_1s = 1 then ' ------> a tutaj wyświetlaj już sobie spokojnie co chcesz co...
Wydaje mi się że masz bład w transmisji ze względu na to że masz kwarc 4Mhz i baud 1200. Tak przy okazji zegar masz przestawiony na wewnetrzne 4MHz czy zewnetrzny kwarc? Jesli na zewnetrzny to ustawiles prawidlowo fuse bity?? Podam Ci prosty program który u mnie dziala bez zarzutu przy kwarcu 8MHz i predkosci transmisji 9600: $regfile = "m32def.dat"...
1) Warunek jest taki że string zawsze musi mieć taka samą długość 2) Użyj funkcji MID aby powycinać ze stringa kawałki z poszczególnymi temp 3) I tutaj uwaga - konwersje string->liczby są pamięciożerne. Jeśli nie wykonujesz żadnych obliczeń temperatury itp to odebrany string wyświetl na lcd jako string a nie jako bajty. Poprostu funkcją MID porozcinaj...
Stosuję takie oto zabiegi: Odczytaj_uart: Bufor = Ischarwaiting() 'Sprawdz czy bufor pełny If Bufor = 1 Then Gosub Odczytaj_sprzetowy_uart Return Odczytaj_sprzetowy_uart: Uart_txt = "" Do 'Odbierz znak po znaku Kod = Inkey() Uart_txt = Uart_txt + Chr(kod) 'Zapisz w Uart_txt Bufor = Ischarwaiting() 'Zakoncz...
Witam serdecznie! Chciałbym poprosić kolegów o rozwiązanie pewnej kwestii. Ischarwaiting() zwraca wartość 1 gdy w buforze coś jest a 0 jak nie ma. Dana wejściowa (Znak) z RS232 na postać 5 znaków + enter czyli 6 znaków. Config Serialin=Buffered, Size=6. Zmienna Znak jest wartości String*6. Dane z RS-a odbierane są w pętli: Dodano po 3 powstał mały byk...
Zrób sobie 6 element tablicy który będzie np znakiem ENTER (żeby rozpoznawać koniec tablicy) natomiast w Bascomie możesz wtedy użyć nawet polecenia INPUT, które po otrzymaniu znaku ENTER wpisze ci twoich 5 elementów tablicy do stringa (też jakby tablicy) - a ze stringa możesz to przełożyć do normalnej tablicy bascomowej - zrobić z tym co ci się żywnie...
Witam, mam problem z SL45i. połączenie jak na obrazku i nic się nie dzieje. (napięcie obniżone tylko na TXuc>>RXtel). Tel nawet nie mignie. http://obrazki.elektroda.net/89_12784375... $regfile = "m32def.dat" $crystal = 8000000 $Baud = 19200 Config Serialin = Buffered , Size = 200 Dim Kod As Byte Dim Bufor As Byte Config Porta = Output 'cały...
dziwna sparawa pierw podpialem tak http://obrazki.elektroda.net/35_12524329... i oczywiscie zle podpialem zgodnie z twoim opisem M. S. i co zadzwonil heeh ale tylko raz odpalem zasilanie podpialem i cisza nic nie idzie dalej hehe tel sprawny bo podpialem go jeszcze pod kompa i dziala program $regfile = "m8def.dat" $crystal = 8000000...
Witam, mam problem z podstawową obsługą siemensa CX65 przez atmegę. Proste sterowanie siemensem c35i w miarę opanowałem, ale mam tylko 1 egzemplarz tego telefonu, w dodatku w marnym stanie, więc postanowiłem powalczyć z trochę nowszym. Przez hyper terminal telefon działa znakomicie, po podpięciu do atmegi nie dzieje się nic. Próbowałem z zasilaniem...
W testach dane próbowałem wysłać tylko raz jak i dawać nadawanie w pętli, odbiór cały czas w pętli. Odbiornik (M8) ma także co chwila przerwanie od timer0 który multipleksuje wyświetlacz led 136x24 pixele :D przerwanie mam co jakieś 800uS aby wyświetlić jedną linijkę (rejestr przesuwny wbija 136 bitów) Nadawanie: [syntax=basic4gl]Do For A = 1 To 408...
Wiem, że InKey zwraca 0 gdy nic nie dostał. Inaczej nie pytałbym o IsCharWaiting... Jak zatem rozwiązać ten problem? Od razu mówię, że pisanie w C lub asemblerze to dla mnie za wysokie progi. Sprzętowy UART w atmelach (jeszcze w miarę rozsądnych cenowo) dochodzi do dwóch linii uart... czyli wciąż za mało.
Ilosc kB nie ma znaczenia bo jest to zmienne i moze miec nawet xMB czas jest proporcjonalny do ilosci danych, lecz mam problem pomiedzy poprawna komunikacja miedzy DELPHI a BASCOM w wymianie tych danych teraz robie tak: #27 0..255 0 - nie będzie kolejnego bajta #13 1 - bedzie kolejny bajt START | DANA | BEDZIE NASTEPNA | KONIEC do if Ischarwaiting()...
Spróbuj tak: 'Odebranie jakiejkolwiek informacji z modułu GPS $regfile = "m16def.dat" $crystal = 8000000 $baud = 9600 Config Lcd = 20 * 4 ' Wyswietlacz 20x4 Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 Cls Dim Dana As string * 1 Dim Licznik As Byte Dim Tekst As String * 32...
Witam Robie włącznik/dialer gsm na C35 ale mam problem czasami z błędnym odczytywanie komend AT oto część kodu. $regfile = "m8def.dat" $crystal = 11059200 $baud = 19200 Wait 1 Print "ATX0" ; Chr(13) Waitms 100 Print "ATZ" ; Chr(13) Waitms 100 Print "ATE" ; Chr(13) Waitms 100 Print "AT+CLIP=1"...
Ja robie to w ten sposób: Ustawiam buforowanie: Config Serialin = Buffered , Size = 150' ilość odbieranych znaków Enable Interrupts' trzeba zezwolić na przerwania W pętli głównej daje warunek: B = Ischarwaiting() If B = 1 Then Gosub Odbierzuart A dalej procedura odczytu: Odbierzuart: C = "" Do A = Inkey() C = C + Chr(a)...
Próbowałem trochę z Inkey, ale tam znowu blokuje cały program - odczyt z zegara PCF8363 zatrzymuje się. Przed Inkeyem dobrze jest sprawdzić czy coś jest w buforze, funkcja IsCharWaiting(): [syntax=basic4gl] If Ischarwaiting() = 1 Then ' sprawdź czy jest jakiś znak do odebrania w buforze lub HW UART ................... End If[/syntax]
Możesz użyć Inkey. Tylko funkcja ta ma taką cechę że nawet jak nic nie ma w UDR to zwraca 0. Także najlepiej zrób to w ten sposób że najpierw sprawdzasz czy jest znak (Ischarwaiting) a potem jeśli jest, to odbierasz Inkeyem. Można też zrobić to w przerwaniu. Jeśli początek odbieranego tekstu masz stały to można też zrobić pętlę w któej ciągle pytasz...
Chcesz odbierać bit? czy bajt? Polecam zajrzeć do helpa bascomowego i zapoznać się z poleceniami Input oraz Config Input - a także Inkey , Ischarwaiting itp. Poza tym jeśli już zaczynasz z RS232 to daj sobie na początek spokój z pozostałą częścią kodu np od 1wire i poćwicz proste przykłady z helpa chociażby odnośnie Input itp - to ci dużo wyjaśni (a...
No dobra. Wywal wszystko na linii Tx telefonu do Rx procesora. Ma być połączenie bezpośrednie. Na drugim kierunku zostaw tak jak masz. Poniżej kod do testów. Powinien działać. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $baud = 19200 Config Lcd = 16 * 2 Config Serialin = Buffered , Size = 100 Enable Interrupts 'Declare Sub Oproznij_bufor...
Witam mam 2 kody czytające uart. Problem jest taki ze jeden działa a drugi nie i nie wiem co jest powodem. Kawałki kodu pracują na Atmega8L. Z góry dzięki za pomoc. - nie działający Odczytaj_sprzetowy_uart: Uart_txt = "" Do Kod = Inkey() Uart_txt = Uart_txt + Chr(kod) Bufor = Ischarwaiting() Loop Until Bufor = 0...
Nadal nie odpowiedziales jasno czy wyswietla tobie znaki z terminala na lcd. Dawno sie nie bawilem uartem. Ten kod powinien dzialc. Dim X As Byte Dim Znak As String * 1 Echo On Do X = Ischarwaiting() If X = 1 Then Znak = Inkey() Lcd Znak End If Loop End
Chcę zaprogramować sterowanie Komendami AT. Coś typu połączenie > rób program Połączenie > przerwij program. Próbowałem dostosować kawałek programu dla Atmega 8 z "Powiadamianie GSM" (było kiedyś w DIY) Kompilator zwraca mi błąd: Error: 7 Line: 0 IF THEN expected [96], in file: Error:123 Line: 0 END IF expected, in file:...
To można rozwiązać na wiele sposobów. Jeśli tylko cześć ramki jest stała a zależy Ci na wartościach odebranych to można użyć bufora kołowego i kiedy wykryjesz koniec ramki to wciągasz z bufora poprzednie siedem bajtów. Tutaj jednak sprawa jest prostsza. Poniższy mikroprogram powinien sprawdzać po kolei nadchodzące bajty. Jeśli się zgadzają to wskaźnik...
U mnie działa coś takiego: Odczytaj_sprzetowy_uart: Uart_txt = "" Do 'Odbierz znak po znaku Kod = Inkey() Uart_txt = Uart_txt + Chr(kod) 'Zapisz w Uart_txt Bufor = Ischarwaiting() 'Zakoncz jeśli CR lub brak znaku w buforze Loop Until Bufor = 0 Or Kod = 13 Return Odczytaj_uart: Bufor = Ischarwaiting()...
Przykłady parsowania danych tekstowych masz w helpie - keyword reference - string. Np polecenia typu LEFT, MID, RIGHT itd. wraz z opisem działania masz przykłady. Do Bufor = Ischarwaiting() 'Sprawdz czy cos jest w buforze If Bufor = 1 Then Waitms 250 Gosub Odczytaj_sprzetowy_uart 'Jesli jest to odzcytaj Oblicz Cls Locate 1 , 1 Lcd Dane; Locate...
aktualnie tak zrobiłem - zawsze na 1 pozycji jest krzak zatem MID i odcięcie pierwszego i jest w miarę dobrze - najgorsze jest tylko to, że wysyłając: (poniżej kod odbioru już trochę zmieniony (kanał 2 uarta m128 idzie w celach monitorowania na RX PCta)) Print #2 , "AT" Print "AT" Waitms 10 If Ischarwaiting() = 1 Then Znak...
Witam! Od dwóch dni próbuje zestawić połączenie pomiędzy atmega8 i siemensem a51. Połączenie sprawdzone - na Tx z uC do Rx komórki dzielnik rezystancyjny do obniżenia napięcia. 3 pin telefonu do 2 uC oraz 4 pin telefonu do 3 uC. Telefon z uC mają wspólną masę. Transmisję próbuję nawiązać przy pomocy programu pytającego komórkę o czas: $regfile = "m8def.dat"...
Poopuszczałeś trochę, a do tego literówki i dlatego wyrzucało błędy. Ten program kompiluje sie poprawnie. $regfile = "attiny2313.dat" $crystal = 11059200 $hwstack = 32 $swstack = 10 $framesize = 20 'DEKLARACJA ZMIENNYCH I PROCEDUR Dim Flaga As Bit , Flaga1 As Bit Dim Wylacz As Byte , Znak As Byte , Adres As Byte , Licznik As Byte Dim Znak1...
To powinno odczytać cały bufor: Odczytaj_sprzetowy_uart: Uart_txt = "" Do 'Odbierz znak po znaku Kod = Inkey() Uart_txt = Uart_txt + Chr(kod) 'Zapisz w Uart_txt Bufor = Ischarwaiting() 'Sprawdź czy jest znak Loop Until Bufor = 0 'Zakoncz jeśli brak znaku Return Do wyłuskania danych polecam instrukcję Instr
Mam problem z transmisją danych. Na PC mam uruchomiony terminal (terminal v1.9b), i jak wysyłam treść z AVR do portu RS232 to terminal poprawnie odczytuje wysłaną treść. Natomiast problem tkwi w transmisji w drugą stronę. Żeby sprawdzić czy poprawnie AVR odbierze dane wysłane z RS232, napisałem tak program żeby po odebraniu treści wysłanej z terminala...
Nie wszystko w tej chwili jest używane, bo to testy. Na przykład Dim Napis As String * 15 Const Koniec = &HFF itp. [syntax=vbnet]$regfile = "m8adef.dat" $crystal = 8000000 '---------------------------- $hwstack = 128 $swstack = 128 $framesize = 128 $baud = 9600 Dim Napis As String * 15 Const Koniec = &HFF '------------------- Declare Sub Oproznij_bufor...
Witam wszystkich mam taki problem.Potrzebuję z aplikacji android wysłać cztery zmienne typu Word do procesora Atmega 32 i zapisać je w Epromie.Dane wysyłane w Srtingu. Na razie wysyłam dane z terminala z Pc-ta.Aplikację na Android pisze mi ktoś inny.Potrafię wysłać jedną zmienną nadaną jako String przekształcić na Word i zapisać ją w Eprom na procku...
Najlepiej pokaż kod w części odbiorczej bo może niepotrzebnie robisz te konwersje tam i z powrotem. Możesz od razu ładować te dane jak przychodzą tylko w zależności od kolejności przesyłania może musisz to robić od końca [syntax=vbnet] Dim Idx As Byte Idx = 4 Do If Ischarwaiting() > 0 Then Arr(Idx) = Inkey() Decr Idx 'załaduje od 4 do 1 If Idx = 0 Then...
witam . meczę sie już jakiś czas z odebraniem danych z modułu czytnika RFID. wysyła on ramkę ttl po zbliżeniu karty do czytnika w takiej postaci: RS232 TTL (ramka danych 0xff,x,x,x,x,x,crc8 ), x-dane karty oczywiście w Bascomie. próbowałem już z poleceniami Waitkey() inkey() czy sprawdzaniem bufora Uart Ischarwaiting(). $baud = 9600 oczywiście całość...
ATmega jest teraz na napięciu Vbat. Główna pętla programu wygląda tak : Do If Guzik_start = 0 Then Cls Lcd "Guzik down" Wait 1 Polecenie = "AT" Printbin Polecenie Else Cls If Ischarwaiting() = 1 Then Znak = Inkey() Lcd ">" ; Znak Else Lcd "Nic" End If Waitms 100 End If Loop End Niestety na komendę...
żebym jeszcze wiedział jak - napisałem Do Call Transmisja Waitms 250 Loop Transmisja: Do Kod = Inkey() Dane = Dane + Chr(kod) Bufor = Ischarwaiting() Loop Until Bufor = 0 Or Kod = 13 Lcd Dane If Dane = "002E" Then Cls Lcd "transmisja..." Set Portd.2 Print A Reset Portd.2 Cls Dane = "" End If...
Witam, to moje pierwsze podejście do BASCOMA, więc prosiłbym o wyrozumiałość. Podłączam atmege16 z zewnetrznym kwarcem 16MHz ( skonfigurowany poprawnie ) do SIEMENS S55. Predkosc 19200. Wysylanie komend działa poprawnie. Telefon dzwoni itd. Problem jest natomiast z kanałem zwrotnym. Próbuje wyświetlić na LCD odpowiedźi telefonu na komendy AT i np sygnal...
Witam Napisałem program, który ma za zadanie odczytać właściwie SMS-a wysłanego do modułu [syntax=vbnet] $regfile = "m8515.dat" $crystal = 7372800 $baud = 9600 $hwstack = 64 $swstack = 64 $framesize = 64 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.6 Config Serialin...
Jak bascomem odczytac &h00 z uarta ? Gdy napisze do aa=inkey() print cjr(aa) loop wywala ciąg zer. Procedura IsCharWaiting rowniez nie dziala na &h00 Zeby nie bylo ciagu zer, musze trzecia linijke zamienic na if aa<>0 then print chr(aa) Gdy wysylam do uarta ciag np: FF F0 A1 00 01 00 00 02 program odczyta go jako FF F0 A1 01 02. Jest jakis...
Koledzy bardzo dziękuję za odp. jednak muszę przyznać, że każdy ma rację. Ja piszę w bascomie ponieważ go lubię i nie piszę programów zaawansowanych. Ja tylko prosiłem o pomoc z com-em. Zobaczę w helpie jak nie dam rady to jeszcze będę prosił o pomoc. Dodano po 1 Panowie jednak coś mi nie działa, proszę o pomoc. Program który jest w uC - nadawanie kodu...
Nie napisałeś jaki to procesor. Przykładowo dla Atmega8/Atmega32 wystarczy gdzieś napisać UCSRB.TXEN = 0 Dla Mega328P UCSR0B.TXEN0 = 0 Mowa o Atmega16. Instrukcja UCSRB.TXEN = 0 rzeczywiście działa ale tylko do czasu, kiedy nie połączę się z drugą Atmegą. Tak wygląda początek programu dla Atmega16 (odbiornik): Dodano po 2 Znalazłem jeszcze taką informację:...
Spróbuj z tym programem: $regfile = "m32def.dat" $crystal = 8000000 $baud = 9600 Dim I As Byte Dim Znak As String * 1 Do Input "podaj wartosc I:" , I Print "wartosc I wynosi:" ; I If I = 1 Then Do Znak = Waitkey() Print "odebrano znak:" ; Znak Loop Until Znak = "k" End If If I = 2...
Witam.. Mam mały problem odnośnie odbioru danych/wyświetleniu przez Atmege na LCD. Zapewniam ze jak wyjmę procka i włączę terminal wszystko działa poprawnie, zaś po włożeniu kostki i programu niżej nic sie nie dzieje nie dostaje żadnej odpowiedzi ani na LCD ani Terminalu, w czym rzecz? [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 16000000 $baud...
Próbowałem podłączyć ATMEGE8-16PU do telefonu komórkowego SIEMENS S35 za pomocą sprzętowego UART i poniosłem klęskę. Nic nie działa, próbuję wysłać na telefon prostą komendę wybrania numeru i nic się nie dzieje. Może troszkę więcej szczegółów. Mikrokontroler jest podłączony do telefonu wg poniższego schematu: http://obrazki.elektroda.net/44_12386816...
Problem polega na tym, że gdy mam ustawione 9600, data bits 8, stop bits 1, parity none jest wszystko w porządku.Ale jeśli ustawie np 4800 lub coś innego np data bits 7 już nie działa i nie wiem co jest grane. Jak używałem komendy input() wszystko pięknie działało a z inkey() nie chce. $regfile = "m162def.dat" 'Kwarc 14,7456MHz $crystal =...
Witam! Mam problem z połączeniem się z GPS. Otóż Mam breloczek z modułem GPS Bluetooth. Chce odczytać z niego dane przez Atmege8 i wyświetlić na LCD. W środku odnalazłem line TX i RX podłączyłem do atmegi tx-rx rx-tx to tego gnd jednak nic nie odczytuje :cry: http://obrazki.elektroda.pl/1011026900_1... GPS Specification: Chipset – MTK....
Może uda mi się rozruszać dyskusję. Udało mi się już uruchomić projektor przez RS, jak i go wyłączyć. Natomiast mam problemy z odebraniem danych o jego stanie. Poniżej pokazuję moją procedurę odbioru danych: [syntax=basic4gl]Do Print Chr(13) ; "*pow=?#" ; Chr(13) Waitms 100 A = Ischarwaiting() If A = 1 Then 'we got something A = Inkey() 'get it Cls...
Im dalej w las, tym więcej grzybów. "Trenuję" nowy problem. W kodzie, po ustawieniu Jumper=0 program czeka na SMS z hasłem. Jeżeli otrzyma poprawne, to zapisuje do pamięci numer telefonu, z którego był wysłany SMS i przechodzi do pętli głównej, a zatem alarm jest uzbrojony - reaguje na czujniki zewnętrzne. W programie brak jest możliwości wyłączenia...
Mam następujący problem. Chcę odczytać z telefonu Siemens C35 (oraz S35) datę i godzinę a następnie wyświetlić je na LCD. Najpierw próbuję odczytać "surowe" dane za pomocą kodu: $regfile = "m8def.dat" $crystal = 8000000 $baud = 19200 Config Lcd = 16 * 1a Config Lcdpin = Pin , Rs = Portc.3 , E = Portc.1 , Db4 = Portb.5 , Db5 = Portb.4 , Db6...
Witam serdecznie!!! Od długiego czasu walczę z Bascomem Atmega 128 i Uartem. Wysyłam komendy AT do modemu GSM i odbieram odpowiedzi. Wszystko jest ok, chodzi bez problemu tak z jakieś 2-3 (różnie to bywa) godziny a później ni z gruszki ni z pietruszki zaczynają sie śmiecie. Odpowiedzi wyświetlam na LCD. Bascom wersja 1.11.9.1 Oto część kodu odpowiedzialna...
U mnie poszło coś takiego: $regfile "m16def.dat" Config Lcd = 16 * 2 $crystal = 1000000 $baud = 9600 Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.0 Config Serialin = Buffered , Size = 12 Dim X As Integer , Y As Integer Config Pind.1 = Output Enable Interrupts ' Musisz włączyć...
Kierunek dobry, ale to pozwala na użycie tylko jednego znaku, który od razu jest przesyłany i następuje wykonanie instrukcji. Chciałbym aby instrukcja była wykonana po wpisaniu np. tekst1 Chyba trzeba zastosować bufor, który będzie dopisywał do stringu kolejne znaki i dopiero po pojawieniu się znaku CR ( czyli kod ASCI 13 ) sprawdzał, czy jest to właściwy...
Witam, Wiem że były podobne posty na ten temat ale nie wiem co z moim programem jest nie tak. Gdy dzwonię na telefon podłączony do uC nic się nie dzieje. Komunikacja z telefonem działa bo wysyłałem przez uC różne komendy AT i odpowiadał. $regfile = "m8def.dat" $crystal = 8000000 $baud = 19200 Config Serialin = Buffered , Size = 100 Config...
Witam , problem polega na odczytywaniu tylko 2 bajtów z bufora uart , wysyłając 5 zaków np.12345 na wyświetlaczu pojawią się tylko 12 a reszty po prostu nie ma . Czy ktoś napotkał podobny problem ...[syntax=vbnet]$regfile = "xm32a4udef.dat" $crystal = 32000000 $hwstack = 32 $swstack = 32 $framesize = 32 Debug Off Config Submode = New Config Eeprom =...
Wywal wszystko od: Ch = Ischarwaiting() do clear serialin w podprogramie "Serial0bytereceived:" ustawiaj sobie jakąś flagę np. Serial0bytereceived: Flaga = 1 Return Następnie w pętli głównej sprawdzaj tą flagę: If flaga = 1 then If Ch = 1 Then U = Inkey() If U = 60 Then Portb.2 = 0 End If If U = 62 Then Portb.2 = 1 End If If U = 64 Then...
Przez PC potrafię wysłać i odebrać SMS (przez Hyper Terminala). Problem tkwi w odbiorze danych przez uP. Oto listing programu, którym próbuję odbierać dane: $regfile = "m8def.dat" $crystal = 8000000 $baud = 19200 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5...
Witaj ja pisałem w bascomie i działa do dziś kod do wysyłania i odbierania wygląda tak: If Ischarwaiting(#2) <> 0 Then Do A = Inkey(#2) If A > 0 Then Led_rs = 1 Select Case F_rs1 Case 0 If A = 2 Then F_rs1 = 1 _rsstr1 = "" End If Case 1 Select Case A Case 3 F_rs1 = 0 Print #2 , Chr(2) ; "To odebralem na 2: " ; _rsstr1 ; Chr(3) Locate 1 , 1...
Jest też taka fajna procedurka Ischarwaiting która wskazuje na to że w buforze jest znak odebrany. Jeśli Ischarwaiting =1 to tylko wtedy czytasz znak. Tak, wiem, tylko tak jak pisałem problem stwarzają puste znaki które są nadawane cały czas. Na prawdę nikt nie ma żadnego pomysłu jak ten problem rozwiązać? Bo mi ich zaczyna brakować i nie mogę sobie...
Dawno się BASCOM-em nie bawiłem , ale jedno mnie ciekawi... Sprawd = Ischarwaiting() Czy ta funkcja nie zwraca przypadkiem informacji, że coś jest w buforze UART ? Jeżeli mam rację to raczej zrobiłbym coś takiego: Dim Nrled as Byte Nrled = Ischarwaiting() If Nrled = 1 Then Nrled = Inkey() If Nrled <> 255 And Nrled <>...
Czy ktos widzi jakis problem w ponizszym listingu?? Gdy telefon dzwoni zapala sie diodka i gasnie znaczy ze przechodzi do "Odbierzuart:" i na tym sie konczy:( $regfile = "m8def.dat" $crystal = 8000000 Baud = 19200 Dim C As String * 200 Dim Syg1 As Byte Dim Syg2 As Byte Dim B As Byte Dim A As Byte Config Serialin = Buffered , Size = 150 Enable Interrupts...
Chyba czegoś nie rozumiem, a więc poprawiłem program według wcześniejszych zaleceń. Dzwonię na komórkę podłączoną do atmegi z telefonu o numerze 509509509. Na ekranie lcd podłączonym pod atmegę wyświetla się "509509509" a procedura select case przechodzi do pod programu "nie_dziala". Pomóżcie bo już nie mam pomysłu. Czemu wyświetla na LCD dobrze, a...
Ale dziwne że jeśli pominę przerwania i config serialin to działa bezbłędnie (w sumie 99/100 bo jadę na zewnętrznym kwarcu 16Mhz i jakieś błędy są możliwe) ale nie tak jak chciałem bo musiałem wpiąć to w pętlę główną: To lata w pętli głównej: 'RS232 UART4 - ODCZYT DANYCH ZE STEROWNIKA KOMINKA Rs4_flaga = Ischarwaiting(#6) : If Rs4_flaga...
Łap bo jak zaczniesz z tym Multimaster to się nigdy z tego nie wygrzebiesz a odkrywasz tu koło na nowo :D Po pierwsze nie zauważyłem wcześniej, że już skonfigurowałeś Serial in 0. Błędem natomiast jest jest używanie Serial out 0 a potem zamiast to wrzucić do bufora to wycinasz po jednej literce ze stringa i nadajesz pojedynczo... Po prostu napisz Print...
Witam. Ostatnio zakupiłem tani nadajnik i odbiornik 433mhz (fs1000a/xy-mk-5v). Problem polega na tym, że nie mogę między nimi nic przesłać :( (attiny2313/attiny2313). Napisałem do nich takie programy: nadajnik: [syntax=basic4gl] $crystal = 4000000 Dim Zmienna As Byte Zmienna = 1 Do Waitms 500 Incr Zmienna If Zmienna = 10 Then Zmienna = 1 Print Zmienna...
Próbuję skomunikować atmege z urządzeniem typu NAS po obu stronach jest oprogramowanie które przy prawidłowym działaniu potrafi ustawic rtc po stronie mikrokontrolera i w druga stronę wysyłac date czas i info o jakims zdarzeniu. Mam tylko jeden problem otóż po wysłaniu z mikrokontrolera np. "uptime" zamiast odpowiedzi nasa dostaje z powrotem "uptime"...
W zasadzie Twój kod działa ale nie bardzo wiem jak go zastosować :( To mój program $regfile = "m32def.dat" $crystal = 8000000 $baud = 19200 Config Serialin = Buffered , Size = 200 Dim Kod As Byte Dim Bufor As Byte Dim R As Byte Dim Q As Byte Config Portc = Input Portc = &HFF Config Porta = Output Porta = &B00000000 Do If Pinc.1 = 0 Then 'uzbrojenie...
Dziekuje za podpowiedzi. Pomimo, ze zastosowalem dopasowanie napiecia na lini UARTu, komunikacja nie zawsze chciala dzialac. Zmienilem wiec zasilanie Atmegi z 5V na 3.3V, polaczylem tel z uC bezposrednio i teraz smiga az mila. Za kazdym razem otrzymuje komunikat zwrotny OK. Wykrywanie dzwoniacego nr tez juz dziala jak nalezy i jest reakcja na "autoryzowany...
Jeśli masz program w uC napisany przez Ciebie to nie rozumiem w czym problem. To Ty ustalasz protokół transmisji i to Ty wybierasz sobie format zapytań i odpowiedzi. Przykładowo: uC - urządzenie podrzędne PC - urządzenie nadrzędne 1. Wysyłasz zapytanie z PC do uC w formacie np: T1 lub T2 lub P 2. uC odbiera to za pomocą pętli interpretującej, wyglądającej...
Nie miałem tego nigdy w rękach, ale sprawdź tak. Powinno działać, tylko napisane tak w 10 minut bez jakichś większych przemyśleń. [syntax=vbnet]$regfile = "m32def.dat" $crystal = 8000000 $hwstack = 64 $swstack = 32 $framesize = 128 $baud = 9600 Config Serialin0 = Buffered , Size = 30 Dim Buff(24) As Byte , Wart As Byte , Postep As Byte Dim Dlugosc_ramki...
Witam, mam dziwny problem, SIM900 nie wysyła sms-ów. Program w Bascomie napisał mi kolega, nie należał do najkrótszych i wszystko działało, odbierał sms-y z komendami i włączał urządzenia, wysyłał sms, dzwonił, odrzucał połączenia itd. Kiedy wyodrębniłem z tego programu fragment który miał tylko wysyłać sms kilka razy zadziałał, a później przestał,...
Witam Odbieram pakiet danych (dokładnie 11 bajtów) przez sprzętowy RS232 z prędkością 38400 (uP ATMEGA 128L kwarc-8MHz) w Bascomie: Config Serialin = Buffered , Size = 7 . . . Odb = Ischarwaiting() If Odb <> 0 Then For L = 1 To 6 Y(L) = Inkey() Waitms 7 Next L Y(1) = Asc(y(1)) Y(2) = Asc(y(2)) Y(3) = Asc(y(3)) Y(4) = Asc(y(4)) Y(5) = Asc(y(5))...
Witam! Podłączyłem telefon komórkowy marki Siemens C35 do AtMega16 za pomocą układu konwertera napięć zamieszczonym poniżej: http://obrazki.elektroda.net/37_12462051... Jestem w połowie drogi ponieważ uP komunikuje się z telefonem (mogę zadzwonić oraz wysłać smsa), jednak nie mogę uzyskać podłączenia w drugą stronę. Na przykład prosty program...
Witam mam taki problem, przeszukalem troche archiwum po czym sklecilem sobie taki program: $crystal = 11059200 $baud = 9600 Config Serialin = Buffered , Size = 100 Config Lcd = 16 * 2 Dim Flaga As Byte Dim Napis As String * 20 Dim I As Byte , X As Byte Set Ddrd.1 '= 1 Enable Interrupts 'Echo Off Do Cls Print "AT+CSQ" I = 0 Flaga = 0 'Flaga = Ischarwaiting()...
Witam Mam program do odczytu danych z modułu GPS. Mój problem polega na tym iże nie wiem jak zrobić zabezpieczenie przed pewną sytuacją a mianowicie w przypadku gdy np. odłączę Moduł. Chcę aby w tej sytuacji wyświetlał napis informujący o tym, bo teraz program się zatrzymuje i zawiesza. Do If Ischarwaiting() = 1 Then A = Inkey() If A...
Witam W zasadzie już zbliżam się ku koncowi stacji meteorologicznej z wykorzystaniem atmegi8 i PC. Z uwagi na funkcje jakie musze wykorzystać a wiec timer i USART wystapił problem. Wykorzystując timer1 generuje przerwanie co sekunde i licze czas aktualny. Podczas połączenia z komputera wysyłam na zasadzie: 1 znak z PC, a w odpowiedzi z Atmegi string...
inkey bascom ischarwaiting interrupts bascom inkey
wkręty mocowania inverter zamiennik tapicerka drzwi skoda octavia
tranzystor kanalem tranzystor kanalem
Jak ładować akumulator wiertarki FERM? Zabezpieczenia nadprądowe dla magazynów energii wysokociśnieniowych