Как часто вы должны отправлять биты последовательного фрейма данных, чтобы RCREG SFR в MPLABX распознал его как таковой?
Я пытаюсь смоделировать получение PIC18F458 байта (т. е. ASCII 'Z', 0x5A) через вывод RX, используя файл SCL (см. ниже) в MPLAB X v.5.05.
testbench for "pic18f458" is
begin
process is
begin
loop
RX <= '0';
wait for 104 us;
RX <= '0';
wait for 104 us;
RX <= '1';
wait for 104 us;
RX <= '0';
wait for 1042 us;
RX <= '1';
wait for 104 us;
RX <= '1';
wait for 104 us;
RX <= '0';
wait for 104 us;
RX <= '1';
wait for 104 us;
RX <= '0';
wait for 104 us;
RX <= '1';
wait for 104 us;
end loop;
wait;
end process;
end testbench;
Хотя я вижу, что данные вводятся на вывод, я не вижу, чтобы они были захвачены в регистре RCREG. (Пожалуйста, смотрите изображения сигнала на контакте RX и выходного сигнала RCREG ниже).
Выход сигнала RX Pin
RCREG СФР
Код написан так, что биты передаются со скоростью 9600 бит/с и предполагается, что XTAL = 10 МГц (см. код ниже).
ORG 0000H ; burn into ROM starting at 0
MOVLW B'10010000' ; load wreg with 0x90
MOVWF RCSTA ; enable receive and serial port itself
MOVLW D'15' ; load wreg 0xF
MOVWF SPBRG ; 9600 bps (Fosc / (64 * S[peed) - 1)
BSF TRISC, RX ; make RX pin of PORTC an input pin
CLRF TRISB ; make PORTB an output port
; get a byte from the serial port and place it on PORTB
R1 BTFSS PIR1, RCIF ; check for ready
BRA R1 ; stay in loop
MOVFF RCREG, PORTB ; send value to PORTB
BRA R1 ; keep doing that
END
Поэтому мне было интересно, с какими интервалами я должен отправлять биты в файле SCL, чтобы его можно было распознать как кадр данных битов, передаваемых со скоростью 9600 бит/с.
Мое текущее предположение состоит в том, что каждый бит кадра, состоящий из стартового бита, 8-битных данных и стопового бита, должен передаваться каждые 104 мкс.
Однако это не дает желаемого эффекта с точки зрения регистрации RCREG данных на выводе RX.
Поэтому я был бы признателен за любую информацию, которую кто-либо может предоставить в отношении правильных значений для использования, поскольку я впервые пытаюсь это сделать.