Komunikacja RS 232
- Stefan_25
- Posty: 22
- Rejestracja: 04 sty 2021, 18:36
Komunikacja RS 232
Witam szanowne grono.
Panowie mam pytanie odnośnie komunikacji RS-232 w Bascom AVR.
Sprawa jest taka, dlaczego do poprawnej komunikacji jest potrzebny "specjalny rezonator kwarcowy" najlepiej o częstotliwości 11059200 Mhz
podczas kiedy Arduino nie wymaga takich zabiegów i goni swoje płytki zazwyczaj kwarcem 16 MHz.
Zadałem pytanie ponieważ kupiłem Arduino Nano z 16 MHz kwarcem wgrałem program i działa, jest komunikacja.
Zaprogramowanie tejże płytki Bascom AVR płytka nie odbiera danych a co dziwne wysyła prawidłowo.
Do tego dochodzi kolejny mały problem z samym rezonatorem, na płytce umieszczony jest 16 MHz rezonator ceramiczny wraz z wbudowanymi kondensatorami natomiast gdzie kupić taki o częstotliwości 11059200 Mhz ?
Pozdrawiam
Stefan.
Panowie mam pytanie odnośnie komunikacji RS-232 w Bascom AVR.
Sprawa jest taka, dlaczego do poprawnej komunikacji jest potrzebny "specjalny rezonator kwarcowy" najlepiej o częstotliwości 11059200 Mhz
podczas kiedy Arduino nie wymaga takich zabiegów i goni swoje płytki zazwyczaj kwarcem 16 MHz.
Zadałem pytanie ponieważ kupiłem Arduino Nano z 16 MHz kwarcem wgrałem program i działa, jest komunikacja.
Zaprogramowanie tejże płytki Bascom AVR płytka nie odbiera danych a co dziwne wysyła prawidłowo.
Do tego dochodzi kolejny mały problem z samym rezonatorem, na płytce umieszczony jest 16 MHz rezonator ceramiczny wraz z wbudowanymi kondensatorami natomiast gdzie kupić taki o częstotliwości 11059200 Mhz ?
Pozdrawiam
Stefan.
- Pikczu
- Posty: 392
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Komunikacja RS 232
Cześć Stefan,
Proponuje kupić i przeczytać książkę:
"Mikrokontrolery dla początkujących" Pana Piotr Góreckiego na pisana na podstawie Bascomowej Oślej łączki z miesięcznika "Elektronika dla wszystkich"
https://kamami.pl/avr/207359-mikrokontr ... acych.html cena 52 pln.
Zalecam też zapoznanie się z PDF-em dla mikrokontrolera.
https://www.microchip.com/wwwproducts/en/ATmega328
pdf: https://ww1.microchip.com/downloads/en/ ... 02061B.pdf
Zagadnienie jest przedstawione na stronie 196 tegoż to PDF-a w tabeli 20-4 do 20-7.
Dlaczego arduinowscy wybrali 16Mhz bo taki mieli kaprys.
I wcale nie trzeba zmieniać kwarcu.
Transmisja danych przez uart jest transmisją asynchroniczną w przeciwieństwie do np SPI.
zwyczajnie chodzi oto żeby error był jak najmniejszy.
Więc możesz sobie poganiać swoją męgę 16 milionów razy na sekundę ale będziesz zmuszony do używania baudrejtów które maja najniższy error i tyle.
np 9600 ma błąd tylko 0.2%
Ale już 115200 ma błąd 3.5% co jest już problematyczne bo dane będą odbierane z błędami.
itd.
Proponuje kupić i przeczytać książkę:
"Mikrokontrolery dla początkujących" Pana Piotr Góreckiego na pisana na podstawie Bascomowej Oślej łączki z miesięcznika "Elektronika dla wszystkich"
https://kamami.pl/avr/207359-mikrokontr ... acych.html cena 52 pln.
Zalecam też zapoznanie się z PDF-em dla mikrokontrolera.
https://www.microchip.com/wwwproducts/en/ATmega328
pdf: https://ww1.microchip.com/downloads/en/ ... 02061B.pdf
Zagadnienie jest przedstawione na stronie 196 tegoż to PDF-a w tabeli 20-4 do 20-7.
Dlaczego arduinowscy wybrali 16Mhz bo taki mieli kaprys.
I wcale nie trzeba zmieniać kwarcu.
Transmisja danych przez uart jest transmisją asynchroniczną w przeciwieństwie do np SPI.
zwyczajnie chodzi oto żeby error był jak najmniejszy.
Więc możesz sobie poganiać swoją męgę 16 milionów razy na sekundę ale będziesz zmuszony do używania baudrejtów które maja najniższy error i tyle.
np 9600 ma błąd tylko 0.2%
Ale już 115200 ma błąd 3.5% co jest już problematyczne bo dane będą odbierane z błędami.
itd.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Komunikacja RS 232
Nie przy U2X @pikczu -> doczytaj i sie dowiesz dlaczego 115200 to możliwe i realiable (2,1%)
- Pikczu
- Posty: 392
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Komunikacja RS 232
Oj Bartek taka drobnostka.
Oczywiście że czytałem błąd i tak będzie. A dla Stefana to żadna różnica.
Oczywiście że czytałem błąd i tak będzie. A dla Stefana to żadna różnica.
- Stefan_25
- Posty: 22
- Rejestracja: 04 sty 2021, 18:36
Re: Komunikacja RS 232
Witam.
Dziękuję za odpowiedz , kupię książkę i postaram się nie zadawać głupich pytań.
Stefan.
Dziękuję za odpowiedz , kupię książkę i postaram się nie zadawać głupich pytań.
Stefan.
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Komunikacja RS 232
Szanowny Panie Stefanie. Wysyłać dane 115200 co jest najszybszym patentem Arduino to nie problem.
Odbieranie danych przez uC to nie jest coś takiego co Pan widzi w terminalu dlatego trochę nie dziwię się koledze @pikczu.
Proszę uwierzyć, że te pytania o to jak odbierać te dane po RS`ie się powtarzają co chwilę i może dlatego kolega @pikczu już polecił książkę ahahahaha
Naprawdę jest tego mnóstwo.
Proszę napisać co nie działa dokładnie a może wtedy znajdzie się coś ciekawego i nowego w zagadnieniu
Do poprawnej komunikacji nie jest potrzebny kwarc "Usart friendly".
Odbieranie danych przez uC to nie jest coś takiego co Pan widzi w terminalu dlatego trochę nie dziwię się koledze @pikczu.
Proszę uwierzyć, że te pytania o to jak odbierać te dane po RS`ie się powtarzają co chwilę i może dlatego kolega @pikczu już polecił książkę ahahahaha
Naprawdę jest tego mnóstwo.
Proszę napisać co nie działa dokładnie a może wtedy znajdzie się coś ciekawego i nowego w zagadnieniu
Do poprawnej komunikacji nie jest potrzebny kwarc "Usart friendly".
- Stefan_25
- Posty: 22
- Rejestracja: 04 sty 2021, 18:36
Re: Komunikacja RS 232
Panie NiveaSoft.
Rozumie że są konstruktorzy,programiści i ktokolwiek jeszcze "nie wiem" mają problem z RS ja go również posiadam.
Pytanie było dlaczego zaprogramowanie płytki Arduino Nano z kwarcem 16MHz przez środowisko Arduino komunikacja działa w obie strony przy prędkości 115200 , tu mój błąd ponieważ nie podałem prędkości RS'a
Natomiast programowanie tej samej płytki w Bascom AVR już robi problem z odbieraniem danych , czyli wyśle poprawnie ale odebrać nie potrafi. Chcąc uzyskać komunikacje trzeba korzystać z dedykowanego rezonatora.
Rozumie że są konstruktorzy,programiści i ktokolwiek jeszcze "nie wiem" mają problem z RS ja go również posiadam.
Pytanie było dlaczego zaprogramowanie płytki Arduino Nano z kwarcem 16MHz przez środowisko Arduino komunikacja działa w obie strony przy prędkości 115200 , tu mój błąd ponieważ nie podałem prędkości RS'a
Natomiast programowanie tej samej płytki w Bascom AVR już robi problem z odbieraniem danych , czyli wyśle poprawnie ale odebrać nie potrafi. Chcąc uzyskać komunikacje trzeba korzystać z dedykowanego rezonatora.
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Komunikacja RS 232
To nieprawda. Wszystko można odebrać.
Proszę zwrócić uwagę, że drugi raz proszę o to żeby napisać czego się Panu nie udaje odebrać :p
Postaram się pomóc.
Naprawdę na co dzień nie schodzę poniżej 115200 jak debuguję i wiedzą to wszyscy dla których coś robiłem
Proszę zwrócić uwagę, że drugi raz proszę o to żeby napisać czego się Panu nie udaje odebrać :p
Postaram się pomóc.
Naprawdę na co dzień nie schodzę poniżej 115200 jak debuguję i wiedzą to wszyscy dla których coś robiłem
-
- Posty: 31
- Rejestracja: 07 lip 2019, 0:32
Re: Komunikacja RS 232
Mimo, ze 16mhz nie jest przyjaznym kwarcem to mam komunikacje miedzy avr a androidem i pc zrobiona na 115200 i przesyłam naprawdę megabajty z karty sd i nie ma żadnych błędów. Cos musi byc nie tak z programem
- Stefan_25
- Posty: 22
- Rejestracja: 04 sty 2021, 18:36
Re: Komunikacja RS 232
Witam i przepraszam że późno odpisuję.
Chodzi dokładnie o już wcześniej zaczętą komunikację między dwoma urządzeniami gdzie odbieranie danych napisał "Niveasovt" w poście "Odbiór danych rs232 Bascom".
No i wszystko działa tylko odbieranie musi być właśnie z tym a nie innym kwarcem. I jak wspomniałem wcześniej dziwne jest to że wysyła dobrze dane to odebrać nic nie potrafi.
Problem jest tylko taki że trzeba wymienić kwarc w płytce arduino nano a tam jest ceramiczny i zamontować zwykły bo nie mogę nigdzie dostać 11.059 ceramicznego.
Dlatego pytam co jest spowodowane tym że wysyła dobrze a nie może odebrać a cokolwiek napisane w środowisku arduino działa.
Może faktycznie problem leży w programie.
Oprócz tego kawałka programu jest reszta która jest potrzebna po poprawnej pracy odbioru danych.
Reasumując program działa dobrze przy częstotliwości 11.059200 montujemy kwarc 8Mhz czy 16Mhz koniec, wysyła nie odbiera.
Chodzi dokładnie o już wcześniej zaczętą komunikację między dwoma urządzeniami gdzie odbieranie danych napisał "Niveasovt" w poście "Odbiór danych rs232 Bascom".
No i wszystko działa tylko odbieranie musi być właśnie z tym a nie innym kwarcem. I jak wspomniałem wcześniej dziwne jest to że wysyła dobrze dane to odebrać nic nie potrafi.
Problem jest tylko taki że trzeba wymienić kwarc w płytce arduino nano a tam jest ceramiczny i zamontować zwykły bo nie mogę nigdzie dostać 11.059 ceramicznego.
Dlatego pytam co jest spowodowane tym że wysyła dobrze a nie może odebrać a cokolwiek napisane w środowisku arduino działa.
Może faktycznie problem leży w programie.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- If Ischarwaiting() > 0 Then
- Znak = Inkey()
- Select Case Znak
- Case 10 'otrzymano LF
- Helpb = Split(dane , Nazwa(1) , ";") 'dziel string szukajac średników
- For N = 1 To 5
- Test = Val(nazwa(n))
- If Err = 0 Then dane1(n) = Test
- Next
- gosub Odbior_rs
- Dane = "" 'dane przetworzone, mozna czyścić i czekamy na nowe
- Case Else 'kazdy inny od LF znak dodawaj do stringa
- Dane = Dane + Chr(znak)
- End Select
- End If
Reasumując program działa dobrze przy częstotliwości 11.059200 montujemy kwarc 8Mhz czy 16Mhz koniec, wysyła nie odbiera.