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

Dlaczego ustawienie szybkości MIDI powoduje błędy transmisji? PIC16Fxxx.

viayner 15 Wrz 2016 09:48 3570 7
REKLAMA
  • #1 15932464
    viayner
    Poziom 43  
    Posty: 10629
    Pomógł: 1563
    Ocena: 2052
    Witam,
    mam problem ktory od paru tygodni "spedza sen z moich powiek".
    Wykonalem juz wiele projektow na mikrokontrolerach PIC 16F i 18F dotyczacych obslugi MIDI, do tej pory wszystkie dzialaja.
    Ostatnio potrzebuje wykonac szybki projekt wyslania jednej komendy midi po nacisnieciu przycisku, i wszystko wydaje sie latwe ale:
    - przy ustawieniu transmisji o standardowej predkosci wszystko dziala poprawnie, terminal bez problemu odbiera wyslana komende (test na 9600, 19200 i 38400)
    - ustawienie szybkosci MIDI powoduje ze sa bledy z transmisja - zadne urzadzenie midi nie odbiera komend MIDI, monitor MIDI wyswietla czasami niepoprawne komendy ale jest to przypadkowe.
    - Testowalem PIC16F877A oraz PIC16F914, zegar 20MHz, 8MHz i wewnetrzny 2,4,8MHz.
    - Mam dostep do kompilatorow Mikroelektronika PICmikroBasic PICmikroC w wersji normalnej jak i PRO. Uzywane w poprzednich projektach, dzialaly poprawnie.
    - Sprawdzilem polaczenia i kable, wszystko dziala poprawnie.
    Czy ktos spotkal sie z takim dziwnym zachowaniem ?
    Pozdrawiam
  • REKLAMA
  • #2 15932473
    zmyslonyy
    Poziom 27  
    Posty: 1050
    Pomógł: 69
    Ocena: 97
    Jak sądzę nic się nie dzieje bez przyczyny. Niemniej na podstawie takiego ogólnego zarysu nie sądzę aby była możliwość udzielenia jakiekolwiek pomocy.
    Może to problem zasilania? zakłóceń?
  • REKLAMA
  • #3 15932491
    viayner
    Poziom 43  
    Posty: 10629
    Pomógł: 1563
    Ocena: 2052
    Witam,
    Dziekuje za reakcje, opis moze ogolny ale narazie sam nie moge dojsc niczego wiecej, dlatego zapytanie.
    Jak wspomnialem tylko transmicja 31250 nie dziala poprwanie standardowe szybkosci sa OK, na oscyloskopie wyglada to roznie, raz udaje mi sie zlapac cala ramke a raz jakies fragmenty. Z ogolnych pomiarow wyglada ze ramka nie jest 31250.
    Zaklucenia starale sie wyeliminowac
    Pozdrawiam
  • REKLAMA
  • #4 15932607
    Urgon
    Poziom 38  
    Posty: 7294
    Pomógł: 197
    Ocena: 2635
    AVE...

    jakby nie patrzeć, to generator zegara dla UART przy 31250 Baud ma błąd 8,51% niezależnie od wybranej częstotliwości zegara. Spróbuj dobrać inny kwarc może?
    Dalej, jak wygląda montaż tego układu? Może masz gdzieś bład lub zimny lut?
  • REKLAMA
  • #5 15936319
    viayner
    Poziom 43  
    Posty: 10629
    Pomógł: 1563
    Ocena: 2052
    Witam,
    Jak wspomnialem robilem juz sporo projektow z obsluga MIDI co prawda glownie MIDI-in i nie bylo problemow,
    A skad masz blad 8.5%. Czy my mowimy o 28800 czy 31250 ? Co do pierwszego to sie zgodze ale ja pracuje na 31250 a tu blad masz 0%. Jak wspomnialem na oscyloskopie ramka wyglada roznie w zaleznosci od togo co zlapie. Podejzewam ze te 31250 jest zle inicjowane.
    Pozdrawiam
  • #6 15936352
    Urgon
    Poziom 38  
    Posty: 7294
    Pomógł: 197
    Ocena: 2635
    AVE...

    Faktycznie, masz rację. Pokaż fragment kodu od inicjalizacji UART. Pokaż też swój prototyp...
  • #7 15939174
    viayner
    Poziom 43  
    Posty: 10629
    Pomógł: 1563
    Ocena: 2052
    Witam,
    "Dobudowalem" sprzetowy monitor MIDI do ukladu i na ustawieniach 31250 odbiera komendy z moich instrumentow (inicjalizacja jest ta sama dla Tx i Rx).
    Zalaczam jak wygladaja przebiegi oraz fragment kodu. Jest to PicBasic ale jest on latwy i jednoznaczny do analizy. Jak widac testowalem wbudowana procedure inicjalizacyjan (do tej pory zawsze mi sie sprawdzala i nadal dziala z MIDI-IN) oraz inicjalizacje wg. microchip'a po rejestrach - efekt identyczny.
    Zrzuty z ekranu, 1 to komenda NoteOn+nuta+velocity (90H+3CH+AAH), 2 3 i 4 to powiekszenie pojedynczej ramki i tu odrazu widac ze niewiadomo dlaczego komendy gdzie pierwszy bit to "1" sa zle transmitowane = nie ma tej "1" tylko "0", rozkaz 3CH jest transmitowany poprawnie a 90H i AAH niebo po bicie startu jest "0" a nie "1" !!!.
    Czemu tak sie dzieje to nie wiem.
    Pozdrawiam
    Załączniki:
    • Pic-Midi.zip (12.5 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #8 15939251
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

✨ Użytkownik ma problem z transmisją MIDI przy ustawieniu prędkości 31250 bps na mikrokontrolerach PIC16F877A i PIC16F914. Przy standardowych prędkościach (9600, 19200, 38400) transmisja działa poprawnie, natomiast przy 31250 występują błędy, a urządzenia MIDI nie odbierają komend. Użytkownik sprawdził połączenia, kable oraz różne częstotliwości zegara (20MHz, 8MHz, 2.4MHz, 8MHz). Inne odpowiedzi sugerują sprawdzenie błędów w konfiguracji UART oraz montażu, a także testowanie prostych komend do analizy transmisji. Użytkownik zbudował sprzętowy monitor MIDI, który potwierdził, że komendy są źle transmitowane, co może wskazywać na problem z inicjalizacją.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA