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...
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...
RS232 i konwerter na RS485 Od strony uP standardowo zaczynam od: $crystal = 11059200 $baud = 9600 Odbiór danych przez instrukcje inkey a potem setest case Wysyłanie instrukcja Print . Nie korzystam z przerwań. Od strony PC zależy w czym piszesz program. W VB odbiór i wysyłanie przez MSComm1. (output lub input ) Jest sporo przykładów na elektrodzie....
Mógłbyś trochę rozwinąć ? Niestety nie mogę tego ogarnąć - to już moje drugie podejście, po próbie połączenia UART z PWM, wtedy odpuściłem, bo blokowało mi wyjścia na czas połączenia. Przeglądając przykłady na tym forum wyszło coś takiego: '********************* Konfiguracja UART Config Serialin = Buffered , Size = 40 , Bytematch = All Enable Interrupts...
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.
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, próbuję wykorzystać UART1 do odbioru danych przy użyciu bufora ponieważ w docelowym układzie nie mogę czekać na odbiór przez input. Zmienna _rs_tail_ptr1 określa gdzie znajduje się ostatni znak w buforze. Postanowiłem ją wykorzystać, po odebraniu mojej ramki chciałem wyczyścić bufor. Według helpa można do tego wykorzystać komendy inkey lub input,...
Manual BASCOM-a, w opisie instrukcji SERIALIN mówi że bufor danych wejściowych przechowywany jest w wewnętrznej tablicy bajtów _RS232INBUF0 . Oprócz tego są dwa wskaźniki, na początek tych danych oraz na ich rozmiar. 'Using the CONFIG SERIAL=BUFFERED, SIZE = 10 for example will 'use some SRAM memory 'The following internal variables will be generated...
ok panowie - poradziłem sobie nieoczekiwanie w nieoczekiwany , sprawny, szybki i łatwy sposób, przynajmniej jeśli chodzi o odczyt z układu mojego SLAVE i to bez żadnego softI2C itp... ... jak ? jesli to kogoś zainteresuje .... Bascom to jednak fajne "zwierzątko" otóż w kilku linijkach po obu stronach zorganizowałem softwarowy RS232 na dowolnie wybranym...
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:...
czy nie potrzebna jest tutaj instrukcja INKEY() ? swojego czasu zrobiłem taki układ , że dwa procki atmega8535 przesyłały między sobą zmienną. program zajął dosłownie 3,4 linijki w odbiorczym użyłem instrukcji inkey() tzn , jeżeli było coś w buforze(różne od 0 ) to wyświetlało daną. oczywiście czasy w realizacji pętli były takie same oraz kwarce również...
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()...
(at)grala1Ten Twój kod jest trochę za prosty i z czasem zgubi synchro niemniej jak wrzucisz ten poprawiony na symulator, albo nawet uruchomisz na żywca z tym co Tobie tam nadaje to na chwile powinien podziałać ;) Lepiej byś odbierał znaki w przerwaniu do bufora. Procesor na nic by nie czekał i miał czas na inne sprawy. Do tego synchro, jakis timeout...
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....
Enable Urxc On Urxc Odbior_rs_232 Enable Interrupts Dim Odebrane As String * 16 Dim Time_out As Integer Dim Ax As Byte Do Wait 1 Cls Lcd Odebrane Loop Odbior_rs_232: Odebrane = "" Time_out = 0 Do Ax = Inkey() Incr Time_out If Time_out >= 30000 Then Exit Do If Ax > 0 Then Odebrane = Odebrane + Chr(ax) End If Loop Until Ax = 13 Return Ja używam tego od...
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...
Problem jest 2 strony bo raz trzeba to jakoś wysłać Możesz wysyłać dane poprzez wspomniany terminal, lub przez funkcję np. w delphi WriteFile a 2 jak mikrokontroler ma te informację odczytac?? zadeklaruj sobie: Dim Odbior As Byte a w programie wykorzystaj np. funkcję: Odbior = Inkey() i lepiej będzie wysyłać dane po uprzednim zapytaniu o nie. Bo wysyłanie...
Polecam tobie i innym, ja to sobie tak ułożyłem do AVR. procesor zwróci ci to co wysłałeś do niego z VB6. koma w VB6 nie musisz zamykać po każdej transmisji, masz go otworzyć jak uruchomisz program, jak go zamykasz ( program) to powinien się sam zamknąć.Zmienna "Dane_rs_string" zawiera to co wysłałeś. długość słowa jakie przyjmie to 32 znaki, zależy...
Wielkie dzięki raz jeszcze Panowie za podpowiedz,mam jeszcze jedno pytanie czy do odbioru danych z telefonu uzyć funkcji inkey,czy innej np: input i jak wyswietlić dane będące w buforze transmisji na wyswietlaczu LCD.Jeśli zechcecie mi raz jeszcze pomóc to super a teraz zabieram sie do opanowania waszych wskazówek.DZIĘKI.Pozdrawiam
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().
Problem nielogowania się do sieci rozwiązałem. Jak to czasami bywa przyczyną był błąd montażowy na płytce. W tej chwili po załączeniu zasilania modem ładnie loguje się do sieci. Niestety to nie koniec problemów. Jak próbuję wysłać komendę "AT" z procesora przez UART do modemu do nie otrzymuje "OK" tylko wraca mi z powrotem "AT". Wydaje mi się że problem...
Niestety Jak dam instrukcję ustawienia bufora to już nic nie odbiera (nadawać nadaje). A włączyłeś przerwania :?: Bez bufora(przerwanie RX) , ciężko dogadać się z fonem :( Właśnie zauważyłem że jak zepnę RX z TX uP (wywale printa z głównej pętli i dam wait na 5sek. ) to odbiór też jest na 3 znaki :/ Czy wiesz jak wygląda transmisja asynchroniczna ,...
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
Na początek musisz spiąć atmegę8 z max232, następnie kabelkiem łączysz do komputera. Za pomocą terminala możesz wysyłać różne dane do atmegi.To co chcesz zrobić możesz bez problemu wykonać w bascomie, ale musisz posiadać minimalną wiedzę o tym języku. Dane wysyłane z komputera możesz odczytywać za pomocą funkcji INKEY, WAITKEY, INPUT, INPUTBIN, INPUTHEX,...
Witam Mam problem z komunikacją pomiędzy dwoma mikrokontrolerami Atmega8. Chciałbym między nimi przesyłać dane a dokładnie jedną zmienną pochodzącą z mojego dalmierza ultradzwiękowego do mikroprocesora obsługującego sterowanie robotem. Byłbym wdzięczny jesli otrzymałbym propozycję działającego programu nadawania i odbioru. Moje próby niepowiodły się...
Próbowałem jeszcze waitkey - efekt ten sam tyle że waitkey jak gsm już nie nadaje wiesza program... INPUT nigdy nie używałem. Wstawiłem teraz na szybko INPUT znak (w miejsce znak =inkey() ) Efekt jest taki że nie czyta nic. Cisza. Zmykam do pracy, może po południu coś jeszcze pogrzebie przed weekendem... Pozdro :)
Witam. Pytanie zasadnicze - jaki procesor posiada urzadzenie dokonujace pomiarow (slave) ? Bo rozumiem, ze mozesz go oprogramowac? Tak. To Atmega16. Jesli tak to właczasz po prostu przerwanie od odebranego znaku z UARTa i problem rozwiazany. Kombinowanie z Inkey? A może da się włączyć generowanie przerwania w połączeniu z Inpput?
Połączyłem ATm8 z 2313 za pomocą UARTa. Na 2313 odbieram dane czujników i chcę je przekazywać do "dalszej obróbki" na ATm8. Stany pinów na 2313 są zapisywane do zmiennych np zmienna Q=0 lub Q=1 gdy stan niski/wysoki. To samo robie z innym pinem - inna zmienna np K. Problem pojawia się gdy chcę wysłać te zmienne. Z jedną-nie ma problemu-ATm8 odbiera...
Sprawdzałeś jak się ta transmisja zachowuje kiedy Twoje inkey() w ogóle nie jest używane ? Nie wiem co sobie wkompilowuje Bascom w procesor ale może używa jakiegoś przerwania które z kolei w ten czy inny sposób oddziaływuje na transmisje RS232. Dajmy na to jeśłi RS232 używa przerwań do odbioru lub wysyłania a jakaś inna procedura czy funkcja po wyjściu...
Eh ten rs-232 + przerwania to juz mnie o bóle głowy przyprawia. Mam programik: $crystal = 11059200 ' czestotliwosc kwarcu $baud = 1200 ' predkosc transmisji Dim X As Byte , Znak As Byte Enable Interrupts ' wlaczenie przerwan Enable Serial ' wlaczenie przerwania portu RS232 On Serial Port ' na przerwanie z portu wykonaj procedure "port" Do ' poczatek...
Ja też mam odbiór bufora na przerwaniu, wywoływanym co około 1 sek, śmieci się zdarzają, ale bardzo rzadko, nie zauważyłem natomiast gubienia odpowiedzi modemu Odebrane = "" Do Ch = Inkey() Select Case Ch Case 0 : Exit Do 'nie ma nic to kończ pętlę Case 13 : Call Wysw 'jeśli enter to wyświetla linię Case 10 : 'jeśli LF...
Przykład odbioru z sms.bas b - zmienna typu Byte Sub Getline(s As String) S = "" Do B = Inkey() Select Case B Case 0 'zamiast ischarwaiting Case 13 'filtracja znaku CR Case 10 : If S <> "" Then Exit Do 'filtracja LF i zakończenie Case Else S = S + Chr(b) 'budowanie ciagu End Select Loop End Sub Chociaż...
Witam wszystkich,Panowie mam do Was takie pytanie, walczę od jakiegoś czasu z transmisją między dwoma atmegami8,jedna atmega mierzy temperaturę na piecu Co i wyświetla ją na wyświetlaczu lcd ,druga atmege też z wyświetlaczem mam po drugiej stronie ściany, i chce wynik temperatury z tej w kotłowni przesłać za pomocą UART-u do tej drugiej,używam polecenia...
mam moduły radiowe BR27 i BT27 , odbiornik podłączyłem bezpośrednio z wejściem RX w atmega8515l za odbiór danych odpowiada taki kawałek kodu : Rs_232: Aktualna_pozycja = Inkey() If Aktualna_pozycja > 0 Then Gosub Obliczenia End If Return W przypadku gdy mam wyłączony nadajnk na wyświetlaczu pojawiają mi się same śmieci , załączenie nadajnika powoduje...
Wysyłam z visual basica dwie zmienne x11 i y22 do atmela przez rs MSComm1.Output = " x11" MSComm1.Output = " y22" odbieram Odbior_rs_232: Disable Urxc Sx = "" Wx = 0 Do Ax = Inkey() Incr Wx If Wx >= 30000 Then Exit Do If Ax > 0 Then Sx = Sx + Chr(ax) End If Loop Until Ax = 13 Enable Urxc Return bascom Sx widzi jak obie zmienne x11y22 a nie osobno jak...
Zacząłem od początku: Dim Bufor As Byte Dim Dane As String * 32 Do Bufor = Ischarwaiting() 'Sprawdz czy cos jest w buforze If Bufor = 1 Then Kod = Inkey() Lcd Kod Wait 1 End If Loop na wyświetlacz wypluwane są mi wartości : 77 69 83 83 77 48 02 36....itd.. W tabeli ASCII odczytałem że powstaje: MESSM0...itd.. jak teraz zapisać te wartości...
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...
Witam, od dłuższego czasu męczę się już z GPS'em... Na początek chciałbym "wyciągnąć" tylko nazwę ramki i wysłać ją po RS'sie, w tym celu napisałem taki oto programik: Do Odebrane = Inkey() If Odebrane = 36 Or Starts = 1 Then Starts = 1 Ramka = Ramka + Chr(odebrane) If Odebrane = 13 Then Ciag = Ramka Ramka = "" Starts = 0 Print...
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...
oki taki mam kod może coś tu mi nie gra :) nadajnik ' rs485 dla atmega8 - testowy nadajnik $regfile = "m8def.dat" $crystal = 1000000 $baud = 9600 Config Portd.2 = Output Config Serialin = Buffered , Size = 15 Declare Sub Odbior Dim Lok As Bit Dim Test As Bit Dim Zn As String * 1 Dim I As Integer Dim Adr_s As String * 5 Dim Adres As Byte Dim...
Witam, od jakiegoś czasu opracowuję urządzenia komunikujące się po RS485 w protokole PELCO-D. Urządzenia komunikują się albo jedno albo dwukierunkowo-tutaj to nie istotne... Wszystko działa wyśmienicie i komunikuje się bez najmniejszego błędu gdy nadaje jedno z urządzeń. Urządzenie to nadajnik i odbiornik. Gdy nadają 2 nadajniki jednocześnie (jednocześnie...
Witam serdecznie Jako kolejny krok nauki uczę się oprogramować bluetooth hc-05 oraz atmega 8 sprzęgnięte z aplikacją w telefonie. Połączenie bluetooth jest nawiązane po naciśnięciu przycisków w telefonie wysyłana jest dana typu string. Jeden przycisk wysyła daną o wartości "zapal", drugi przycisk o wartości "zgaś". Do portu atmegi8 podłączona jest dioda...
Witam wszystkich. Mam następujące pytanie: Połączyłem dwa uP 89C2051 i 89C4051 następująco TxD jednego z RxD drugiego. Właczam Bascoma 8051 2.0.11.0 jednego programuje żeby wysyłał drugiego odbierał. Używałem różnych poleceń print , printbin, printhex; a do odbioru inkey, waitkey,inputbin. Żadnych efektów. Owszem kiedy wysyłam np.100 na LCD wyświelją...
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...
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...
Mam problem z następującymi układami, Modem nie chce mi się zalogować do sieci. Komunikacja RS wydaje się być w porządku jednak odbieram jakieś krzaczki tami programik na szybko napisałem: $regfile = "m128def.dat" $crystal = 7372800 $baud = 9600 Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0...
Wykonałem panel lcd 2 x 16 informujący o temperaturze w kotle C.O. , zbiorniku CWU itp. Odbieram dane z urządzenia które wysyła potrzebne informacje. Odbiór: Bufor_flaga = Ischarwaiting() If Bufor_flaga = 1 Then C = "" Do A = Inkey() If A <> "" Then If A = Chr(13) Then Exit Do C = C + A End If Loop End If Zmienną c wyświetlam na wyświetlaczu....
Tutaj masz Baud Rate kalkulator http://www.wormfood.net/avrbaudcalc.php ] i dla 16MHz predkosc 19200 jest jak najbardziej odpowiednia, a mozesz nawet ustawic na 38400 lub 76800 i tez bedzie smigac! Odbior danych najlepiej zrobic wykorzystujac wskazowki ZbeeGin 'a: Dim jakas_zmienna As Byte Dim Uart_buffer As Byte Enable Interrupts {...} Do...
Bart : Dziękuję za podpowiedz z Config input. Faktycznie teraz nie ma że widze w prawym stringu gdy jego wartość jest wysyłana jako 4 miejscowa. Inkey niepotrzebny nie widać LF czy CR ( te 3 poziome kreseczki). Ale odbiornik potrafi zamienić lewo na prawo i tak wyświetla ( czasami 4 krotny reset trzeba wykonać aż załapie odpowiednio ramke)-- nie znam...
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...
inkey bascom bascom inkey rs485 inkey
oporność głośnik przekażnik procesor mleć novotronic
zmywarka indesit schemat zmywarka indesit
Oleo Mac 937 - Regulacja gaźnika i problemy z obrotami Biały dym z wydechu po wymianie intercoolera w Honda Civic 2014 Diesel