Mój pełny kod znajduje się tutaj.
Zasadniczo przesyłam do Arduino i nie otrzymuję prawidłowej wartości (zauważysz, że próbuję wysłać d'22 '). Oto metoda, w której tak naprawdę uderzyłem w transmisję:
// Metoda przesyłania wartości za pomocą bitów szeregowych bangingvoid uart_tx_bit_bang (unsigned char val) {unsigned char i; Tx_Pin = 0; // Bit startowy uart_time_delay (); for (i = 8; i! = 0; --i) {if (val & 0x01) Tx_Pin = 1; // Rozpocznij od LSB else Tx_Pin = 0; val >> = 1; uart_time_delay (); } Tx_Pin = 1; // Bit stopu uart_time_delay ();}
Ponieważ opóźnienie powinno wynosić 1 / baud, uart_time_delay ()
powinno wynosić 104us. Używam __delay_us (104)
z bibliotek PIC. Każda pomoc w tej sprawie jest bardzo mile widziana.
Jestem pewien, że używam prawidłowej szybkości transmisji na obu końcach.