logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

PIC i 2x UART. Czy można tak zrobić nawet w tych, które nie mają sprzętowego?

cinekk 01 Maj 2006 04:51 1592 6
REKLAMA
  • #1 2579200
    cinekk
    GSM Product Supporter
    Posty: 1512
    Pomógł: 170
    Ocena: 10
    Czy istnieje możliwość zastosowania podwojnego UART w prostych PIC'ach ktore nie maja nawet jednego sprzętowego ? Np. w PIC12F629 ?
  • REKLAMA
  • Pomocny post
    #2 2579457
    Zaquadnik
    Poziom 27  
    Posty: 998
    Pomógł: 103
    Ocena: 25
    Możesz napisać programową emulację, ale to na pewno da prockowi zajęcie na jakiś czas. Nie wiem ile timerów mają te PICe. No bo w sumie przydałoby się jakoś taktować tą transmisję. Można robić to pętlami opóźniającymi też. I nie wiem czy w takim programie da się zrealizować UART podwójny. To po prostu za bardzo obciążające. Nie lepiej kupić jakiś uC z dwoma UARTami (np. DS89C430) ?
  • REKLAMA
  • Pomocny post
    #3 2580193
    winIO
    Poziom 13  
    Posty: 37
    Pomógł: 4
    Ocena: 3
    Jeśli poradzisz sobie z jednym UARTEM programowym (a da się to osiągnąc na pewno) i jeśli obydwa UARTY "chodzą" z tą samą prędkością, to sprawa niewiele bardziej sie komplikuje przy dodawaniu kolejnych UARTow. Na jednym przerwaniu mozesz skanowac sobie teoretycznie nieograniczona liczbe portow. Gorzej jesli predkosci transmisji roznia sie na obydwu portach. Ale i wowczas mozna z tym sobie jakos dac rade, bo przeciez kazda predkosc transmisji wyrazona w baudach jest wieloktrotnoscia jakiejs potegi dwojki i dowolnej nizszej predkosci transmisji. Będzie trzeba jedynie skanowac obydwa porty w takt przerwan dostosowanych do transmisji, ktora idzie szybciej.
  • #4 2580575
    cinekk
    GSM Product Supporter
    Posty: 1512
    Pomógł: 170
    Ocena: 10
    Dzieki za odpowiedzi w takim razie sprobje dzisiaj dodać drugi uart, z jednym uartem nie mam problemów a oba mogą chodzić na tej samej predkosci. Obciazenie procka też nie gra tutaj tak dużej roli, nawet jeżeli opóźnienie osiągnęłoby kilka sekund w co raczej wątpie.

    Ewentualnie mam też pod ręką PIC16F877A ale czekam na programator do niego, bo mysle ze majac jeden UART sprzetowy z drugim programowym nie błoby już większych problemów.
  • REKLAMA
  • #5 2580782
    winIO
    Poziom 13  
    Posty: 37
    Pomógł: 4
    Ocena: 3
    Jeden UART sprzętowy nie ułatwi Ci jednoczesnego odbioru z dwóch UARTOW sprzetowo. Jeden "kanal" bedziesz mogl odbierac za pomoca sprzetu a drugi softwareowo. Jak na moj gust to bylby zbyt duzy metlik w sofcie. No ale co kto woli....
  • REKLAMA
  • #6 2580884
    cinekk
    GSM Product Supporter
    Posty: 1512
    Pomógł: 170
    Ocena: 10
    Wyszło dosyć prosto, wystarczył program/kompilator CCS i jego wbudowane funkcje, można nawet zdefiniować 3x UART softowy a sama definicja dwóch jest bardzo prosto poprzez przydzielenie nazwy dla każdego z nich dzięki czemu przy wysyłaniu i odbieraniu można wskazać gdzie co ma wędrować, pomimo tego nie zauważyłem aby szybkość programu drastycznie spadła lub moj program jest na tyle prosty że nie jest to tak dużym obciążeniem.
  • #7 2582147
    diag
    Poziom 29  
    Posty: 1401
    Pomógł: 45
    Ocena: 209
    Jaqk masz pewność,że na 2 UARTA-ch nie wystąpi w tej samej chwili transmisja to wszystko jest do zrobienia, ale 2 sftwerowe mogą sie w takim wypadku sypnąć. Softwerowy i hardwerowy dadzą się pogodzić.

Podsumowanie tematu

LABEL_AI_GENERATED
W dyskusji poruszono możliwość implementacji podwójnego UART w prostych mikrokontrolerach PIC, które nie posiadają sprzętowego UART, np. PIC12F629. Zaproponowano programową emulację UART, jednak jest to rozwiązanie obciążające procesor i wymaga precyzyjnego taktowania transmisji, np. za pomocą timerów lub pętli opóźniających. Realizacja dwóch programowych UART-ów jest możliwa, zwłaszcza gdy oba pracują z tą samą prędkością transmisji, co upraszcza synchronizację i obsługę przerwań. W przypadku różnych prędkości transmisji konieczne jest bardziej zaawansowane skanowanie portów w takt przerwań dostosowanych do szybszej transmisji. Połączenie jednego sprzętowego UART z programowym jest wykonalne, ale może komplikować oprogramowanie. Użycie kompilatora CCS ułatwia implementację nawet trzech programowych UART-ów dzięki wbudowanym funkcjom i możliwości przypisania nazw do poszczególnych kanałów, co pozwala na efektywne zarządzanie wysyłaniem i odbiorem danych bez znacznego spadku wydajności. Alternatywnie zasugerowano wybór mikrokontrolera z dwoma sprzętowymi UART-ami, np. DS89C430, aby uniknąć problemów z obciążeniem procesora i złożonością oprogramowania.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA