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

USB => DMX FT232RLR Atmega8

sheeeep 26 Sie 2008 00:54 3926 5
REKLAMA
  • #1 5475180
    sheeeep
    Poziom 25  
    Chcę zbudować takową przejściówkę, aczkolwiek zbuforować ją przez Atmegę. Miedzy innymi z powodu możliwości zawieszenia PCta, oraz innych ficzerów które do atmegi dorzucę.

    Z założeń 40Hz odświerzanie lini DMX, 512 * 8 * 40 = 163.840 bitów /s
    DMX opiera się na Rs485 jako standard przy 250kbitach.
    Odświerzanie komputer => atmega też wypadało by żeby było takie samo jak na lini dmx. + jakiś bit parzystości.
    I w tym momencie rodzi mi się wiele pytań. Bo mogę zrobić klucze na UART-a i kluczować sobie FT232 / RS485 ale wtedy FT232 musiało by bardzo szybko musiało dane przesyłać 1Mbit min.
    A 2gie wyjście UART do FT232, a I/O do RS485, bo i tak trzeba zrobić odpowiednią ramkę odmierzyć czasy etc. Tylko tutaj mi się programowo pomysł urywa. Wysyłam na linię dmx, mam 4uS na odebranie danych z UDR, jak nie ma to NOPuje. Tylko trzeba dokładnie wiedzieć ile trwa odebranie danych z UDR i wiele innych problemów w tym widzę.
    No i przy takiej opcji to jeszcze się nie wymieszczę z pamięcią, 512 paczka do wysłania, i kolejna do odbioru 512... No chyba żeby to zsynchronizować? Wysyłam - moge odebrać i nadpisuje to co jest wysłane? wtedy f takie samo dla FT232. Albo atmega32.
    Jak to widzicie?
    I jeszcze co może mnie zaskoczyć w FT232RLR, i jak sprawa wygląda odnośnie programowania tego pod windowsem/linuxem np. na 1MBit?

    pozdrawiam
  • REKLAMA
  • Pomocny post
    #2 5475259
    KJ
    Poziom 31  
    Dlaczego akurat M8 może weź coś co ma 2 UART-y np. M162 Trochę większy gabarytowo procesor ale zawsze można wziąć wersję SMD. Ewentualnie wersja karkołomna. DMX jest jednokierunkowy... Czy transmisja z PC będzie 2 kierunkowa ? Jeżeli nie to możesz podłączyć TX z FTDI do RXa w uC a TX w uC do konwertera RS485 i bawić sie programowo w odbieranie i wysyłanie na zmianę tym samym uartem. Ja osobiście zastosował bym atmegę162 :)
  • REKLAMA
  • #3 5475761
    sheeeep
    Poziom 25  
    Witam :)
    Przyznaje się że nie wiedziałem że któryś z niższych AVRów ma 2 UARTy. Ale to rewelacyjna sprawa wtedy mogę sobie bez problemów podłączyć PC z M. dwukierunkowo. A z 2giego na wyjście. Super!

    Tylko potem zostaje kwestia implementacji. Bo jedyny sensowny pomysł jaki mi się pojawia wysłania pakietu danych to:
    1. Wyłączenie UARTA
    2. Wprowadzić I/O w stan zamknięty //Break zazwyczaj 100uS
    3. Delay 100uS
    4. Wprowadzić I/O w stan wysoki //MAB 8uS
    5. Delay 8uS
    6. Włączyć UARTA
    7. Wysłać pierwszy bajt zerowy
    8. Pętla wysyłająca to co jest w tablicy.
    9. Wyłączenie UARTA
    10. Ustawienie I/O w stan wysoki
    11. Gdy nadejdzie odpowiedni czas przejście do pktu 1.


    Delaye bym chyba musiał zrealizować najlepiej na liczniku, 128 cykli zegara przy 16MHz dawało by 8uS. Preskalowany licznik np. /8, ustawię licznik startowo na EF jak się licznik przeładuje to lecimy dalej. Tylko nie wiem na ile to będzie kolidowało w odbiór danych z USB.

    No i nadal zostaje mała ilość pamięci :cry: tylko wsumie nie wiem czy warto sobie dołączać jakąś pamięć, i to obsługiwać (bo wsumie portów jest na tyle :) ) bo wsumie 512 kanałów nie potrzebuję. 400 Mi wystarczy więc było by luzu ok 200bajtów na inne zmienne. Bo rozumiem że stos też jest na tej samej pamięci odkładany?

    No i do tego 24C256 na inne bajery. Ale to już inne klocki.

    Dzięki za odpowiedzi i pozdrawiam
    sheep
  • REKLAMA
  • REKLAMA
  • #5 5483737
    Freddy
    Poziom 43  
    Zobacz tutaj, jest dużo na temat DMX.
    Link
  • #6 5484689
    sheeeep
    Poziom 25  
    Balu napisał:
    W tej samej jest stos.

    Czyli ATMEGA128?

    Cytat:
    Zobacz tutaj, jest dużo na temat DMX.
    Link

    Wsumie programowanie to jakoś pójdzie, tylko nie wiem jak się wyrobić z tymi wszystkimi danymi i dwoma transmisjami naraz.
REKLAMA