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...
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...
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...
Mam taki oto problem. Stworzyłem programowy UART, ale nie wiem jak sprawdzić czy dostałem jakiś znak. Przerwania i rejestry odpadają jak wiadomo, IsCharWaiting mimo, że w pomocy ma w nawiasie możliwość podania kanału to gdy użyję np. IsCharWaiting(#2) to dostaję błąd nr 328, czyli że funkcja nie jest dostępna dla software'owego uartu. Jakie jest zatem...
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...
Witam Mój problem wiąże się z zaprogramowaniem "Echa" które obijało by sygnał w standardzie RS. Układ buduję w celu sprawdzania poprawności działania konwertera USB-RS485. Aby nie programować układu dla każdej szybkości transmisji chcę użyć pinów PB0-PB3 gdzie za pomocą zworki możliwy byłby wybór jednej z 4 przygotowanych szybkości transmisji: 921600,...
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:...
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
: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 {...}...
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()...
Skorzystaj z Inkey() i 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...
Oproznij_bufor: Do Kod = Inkey() Bufor = Ischarwaiting() Loop Until Bufor = 0 Return
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....
Pozbądź się RS'owej transmisji buforowej i innych komend typu Ischarwaiting(), Inkey() na rzecz przerwania od URXCx i wtedy sprawdź działanie programu.
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...
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.
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().
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...
To możesz zrobić tak: [syntax=basic4gl] Odczytaj_sprzetowy_uart: Dane = "" Do 'Odbierz znak po znaku Kod = Inkey() Dane = Dane + Chr(kod) 'Zapisz w Dane If Dane = "Obroty1" Then Obroty = 1 If Dane = "Obroty2" Then Obroty = 2 If Dane = "Obroty3" Then Obroty = 3 Bufor = Ischarwaiting() 'Zakoncz jeśli brak znaku Loop Until Bufor = 0 Return [/syntax] i...
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...
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...
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...
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...
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...
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"...
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 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...
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...
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...
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...
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)...
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...
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()...
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)...
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()...
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...
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]
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...
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...
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"...
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
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...
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...
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...
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...
inkey bascom bascom inkey ischarwaiting interrupts
iveco daily ciśnienie oleju obudowa nokia rozładowanie baterii telefonicznej
prostowniki telwin kabel brake radio
Sofar Solar KTL-X, HYD-ES – jak wykonać reset falownika, Wi-Fi, ustawienia fabryczne Marantz UD5005 - Tacka nie wysuwa się: przyczyny i rozwiązania