Как часто вы должны отправлять биты последовательного фрейма данных, чтобы 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.

Поэтому я был бы признателен за любую информацию, которую кто-либо может предоставить в отношении правильных значений для использования, поскольку я впервые пытаюсь это сделать.

0 ответов

Другие вопросы по тегам