mirror of https://github.com/cc65/cc65.git
Fixed baud rates
This commit is contained in:
parent
788ae82d30
commit
014f85f226
|
@ -113,12 +113,12 @@ SER_OPEN:
|
||||||
stz TxPtrIn
|
stz TxPtrIn
|
||||||
stz TxPtrOut
|
stz TxPtrOut
|
||||||
|
|
||||||
; source period is 1 us
|
|
||||||
lda #%00011000
|
|
||||||
sta TIM4CTLA
|
|
||||||
ldy #SER_PARAMS::BAUDRATE
|
ldy #SER_PARAMS::BAUDRATE
|
||||||
lda (ptr1),y
|
lda (ptr1),y
|
||||||
|
|
||||||
|
; Source period is 1 us
|
||||||
|
ldy #%00011000 ; ENABLE_RELOAD|ENABLE_COUNT|AUD_1
|
||||||
|
|
||||||
ldx #1
|
ldx #1
|
||||||
cmp #SER_BAUD_62500
|
cmp #SER_BAUD_62500
|
||||||
beq setbaudrate
|
beq setbaudrate
|
||||||
|
@ -139,6 +139,10 @@ SER_OPEN:
|
||||||
cmp #SER_BAUD_2400
|
cmp #SER_BAUD_2400
|
||||||
beq setbaudrate
|
beq setbaudrate
|
||||||
|
|
||||||
|
ldx #68
|
||||||
|
cmp #SER_BAUD_1800
|
||||||
|
beq setbaudrate
|
||||||
|
|
||||||
ldx #103
|
ldx #103
|
||||||
cmp #SER_BAUD_1200
|
cmp #SER_BAUD_1200
|
||||||
beq setbaudrate
|
beq setbaudrate
|
||||||
|
@ -147,65 +151,48 @@ SER_OPEN:
|
||||||
cmp #SER_BAUD_600
|
cmp #SER_BAUD_600
|
||||||
beq setbaudrate
|
beq setbaudrate
|
||||||
|
|
||||||
; clock = 6 * 15625
|
; Source period is 4 us
|
||||||
ldx #%00011010
|
ldy #%00011011 ; ENABLE_RELOAD|ENABLE_COUNT|AUD_8
|
||||||
stx TIM4CTLA
|
|
||||||
|
|
||||||
ldx #12
|
ldx #51
|
||||||
cmp #SER_BAUD_7200
|
|
||||||
beq setbaudrate
|
|
||||||
|
|
||||||
ldx #25
|
|
||||||
cmp #SER_BAUD_3600
|
|
||||||
beq setbaudrate
|
|
||||||
|
|
||||||
ldx #207
|
|
||||||
stx TIM4BKUP
|
|
||||||
|
|
||||||
; clock = 4 * 15625
|
|
||||||
ldx #%00011100
|
|
||||||
cmp #SER_BAUD_300
|
cmp #SER_BAUD_300
|
||||||
beq setprescaler
|
beq setbaudrate
|
||||||
|
|
||||||
; clock = 6 * 15625
|
ldx #103
|
||||||
ldx #%00011110
|
|
||||||
cmp #SER_BAUD_150
|
cmp #SER_BAUD_150
|
||||||
beq setprescaler
|
beq setbaudrate
|
||||||
|
|
||||||
; clock = 1 * 15625
|
ldx #115
|
||||||
ldx #%00011111
|
cmp #SER_BAUD_134_5
|
||||||
stx TIM4CTLA
|
beq setbaudrate
|
||||||
cmp #SER_BAUD_75
|
|
||||||
beq baudsuccess
|
|
||||||
|
|
||||||
ldx #141
|
ldx #141
|
||||||
cmp #SER_BAUD_110
|
cmp #SER_BAUD_110
|
||||||
beq setbaudrate
|
beq setbaudrate
|
||||||
|
|
||||||
; clock = 2 * 15625
|
; Source period is 32 us
|
||||||
ldx #%00011010
|
ldy #%00011101 ; ENABLE_RELOAD|ENABLE_COUNT|AUD_32
|
||||||
stx TIM4CTLA
|
|
||||||
ldx #68
|
ldx #51
|
||||||
cmp #SER_BAUD_1800
|
cmp #SER_BAUD_75
|
||||||
beq setbaudrate
|
beq setbaudrate
|
||||||
|
|
||||||
; clock = 6 * 15625
|
ldx #68
|
||||||
ldx #%00011110
|
cmp #SER_BAUD_56_875
|
||||||
stx TIM4CTLA
|
beq setbaudrate
|
||||||
ldx #231
|
|
||||||
cmp #SER_BAUD_134_5
|
ldx #77
|
||||||
|
cmp #SER_BAUD_50
|
||||||
beq setbaudrate
|
beq setbaudrate
|
||||||
|
|
||||||
lda #SER_ERR_BAUD_UNAVAIL
|
lda #SER_ERR_BAUD_UNAVAIL
|
||||||
ldx #0 ; return value is char
|
ldx #0 ; return value is char
|
||||||
rts
|
rts
|
||||||
|
|
||||||
setprescaler:
|
|
||||||
stx TIM4CTLA
|
|
||||||
bra baudsuccess
|
|
||||||
setbaudrate:
|
setbaudrate:
|
||||||
|
sty TIM4CTLA
|
||||||
stx TIM4BKUP
|
stx TIM4BKUP
|
||||||
baudsuccess:
|
|
||||||
ldx #TXOPEN|PAREVEN
|
ldx #TXOPEN|PAREVEN
|
||||||
stx contrl
|
stx contrl
|
||||||
ldy #SER_PARAMS::DATABITS ; Databits
|
ldy #SER_PARAMS::DATABITS ; Databits
|
||||||
|
@ -368,15 +355,9 @@ SER_IRQ:
|
||||||
stz RxPtrIn
|
stz RxPtrIn
|
||||||
stz RxPtrOut
|
stz RxPtrOut
|
||||||
@noBreak:
|
@noBreak:
|
||||||
lda contrl
|
bra @exit0
|
||||||
ora #RXINTEN|RESETERR
|
|
||||||
sta SERCTL
|
|
||||||
bra @IRQexit
|
|
||||||
|
|
||||||
@rx_irq:
|
@rx_irq:
|
||||||
lda contrl
|
|
||||||
ora #RXINTEN|RESETERR
|
|
||||||
sta SERCTL
|
|
||||||
txa
|
txa
|
||||||
ldx RxPtrIn
|
ldx RxPtrIn
|
||||||
sta RxBuffer,x
|
sta RxBuffer,x
|
||||||
|
@ -392,10 +373,7 @@ SER_IRQ:
|
||||||
sta RxPtrIn
|
sta RxPtrIn
|
||||||
lda #$80
|
lda #$80
|
||||||
tsb SerialStat
|
tsb SerialStat
|
||||||
lda contrl
|
bra @exit0
|
||||||
ora #RXINTEN|RESETERR
|
|
||||||
sta SERCTL
|
|
||||||
bra @IRQexit
|
|
||||||
|
|
||||||
@tx_irq:
|
@tx_irq:
|
||||||
ldx TxPtrOut ; Have all bytes been sent?
|
ldx TxPtrOut ; Have all bytes been sent?
|
||||||
|
@ -418,6 +396,8 @@ SER_IRQ:
|
||||||
beq @exit1
|
beq @exit1
|
||||||
bvs @exit1
|
bvs @exit1
|
||||||
stz TxDone
|
stz TxDone
|
||||||
|
|
||||||
|
@exit0:
|
||||||
lda contrl
|
lda contrl
|
||||||
ora #RXINTEN|RESETERR ; Re-enable receive interrupt
|
ora #RXINTEN|RESETERR ; Re-enable receive interrupt
|
||||||
sta SERCTL
|
sta SERCTL
|
||||||
|
|
Loading…
Reference in New Issue