start spi work
This commit is contained in:
parent
e0ba885132
commit
ae17478c14
67
main.s65
67
main.s65
@ -27,15 +27,16 @@
|
|||||||
; LCD
|
; LCD
|
||||||
; .include "utility.asm6502"
|
; .include "utility.asm6502"
|
||||||
LCD_IO = IO1
|
LCD_IO = IO1
|
||||||
.include "lcd.s65"
|
.include "system/lcd.s65"
|
||||||
; Keypad Reading
|
; Keypad Reading
|
||||||
KP_IO = IO2
|
KP_IO = IO2
|
||||||
.include "keypad.s65"
|
.include "system/keypad.s65"
|
||||||
; SPI
|
; SPI
|
||||||
SPI_IO = IO1
|
SPI_IO = IO2
|
||||||
.include "system/spi.s65"
|
.include "system/spi.s65"
|
||||||
; Printer
|
; Printer
|
||||||
.include "printer.s65"
|
.include "programs/printer.s65"
|
||||||
|
.include "programs/print_slow.s65"
|
||||||
; Digital Humidity and Temerature Sensor
|
; Digital Humidity and Temerature Sensor
|
||||||
; .include "dht.s65"
|
; .include "dht.s65"
|
||||||
|
|
||||||
@ -48,20 +49,20 @@ nmi:
|
|||||||
jsr lcd_char
|
jsr lcd_char
|
||||||
rti
|
rti
|
||||||
irq:
|
irq:
|
||||||
|
IRQ_VAR = 0
|
||||||
; read IRFs, while bit 7 ist set handle interrupts
|
; read IRFs, while bit 7 ist set handle interrupts
|
||||||
; Print str_irq
|
|
||||||
@irq_io1:
|
@irq_io1:
|
||||||
; todo use a reserved address instead of 0
|
lda SPI_IO+IO::IFR
|
||||||
lda IO1+IO::IFR
|
sta IRQ_VAR
|
||||||
sta 0
|
bbr7 IRQ_VAR,@irq_io2
|
||||||
bbr7 0,@irq_io2
|
bbs2 IRQ_VAR,@irq_spi_p ; check SR
|
||||||
bbs2 0,@irq_spi_p ; check SR
|
|
||||||
@irq_io2:
|
@irq_io2:
|
||||||
lda IO2+IO::IFR
|
; lda IO2+IO::IFR
|
||||||
sta 0
|
; sta IRQ_VAR
|
||||||
bbr7 0,@irq_return
|
; bbr7 IRQ_VAR,@irq_return
|
||||||
bbs4 0,@irq_keypad ; check CB1
|
; bbs4 IRQ_VAR,@irq_keypad ; check CB1
|
||||||
; this should never be reached
|
; this should never be reached
|
||||||
|
jsr lcd_clear
|
||||||
Print str_irq_unknown
|
Print str_irq_unknown
|
||||||
; force reset interrupt flags
|
; force reset interrupt flags
|
||||||
lda #$ff
|
lda #$ff
|
||||||
@ -86,7 +87,7 @@ irq:
|
|||||||
reset:
|
reset:
|
||||||
jsr lcd_init
|
jsr lcd_init
|
||||||
|
|
||||||
jsr kp_init
|
; jsr kp_init
|
||||||
|
|
||||||
jsr spi_p_init
|
jsr spi_p_init
|
||||||
|
|
||||||
@ -114,53 +115,34 @@ reset:
|
|||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
.proc home
|
.proc home
|
||||||
.macro wait
|
jsr rb_keypad_read
|
||||||
wait:
|
|
||||||
stz 1
|
|
||||||
stz 2
|
|
||||||
.repeat 2
|
|
||||||
nop
|
|
||||||
.endrepeat
|
|
||||||
inc 1
|
|
||||||
bne wait
|
|
||||||
inc 2
|
|
||||||
bne wait
|
|
||||||
.endmacro
|
|
||||||
|
|
||||||
; jsr rb_keypad_read
|
|
||||||
lda KB_LAST
|
|
||||||
beq home
|
beq home
|
||||||
stz KB_LAST
|
|
||||||
; beq home
|
; beq home
|
||||||
cmp #'A'
|
cmp #'A'
|
||||||
jeq printer
|
jeq printer
|
||||||
cmp #'B'
|
cmp #'B'
|
||||||
|
jeq SPI_CODE_START
|
||||||
; jeq dht_request
|
; jeq dht_request
|
||||||
cmp #'C'
|
cmp #'C'
|
||||||
jeq print_1
|
jeq print_1
|
||||||
cmp #'D'
|
cmp #'D'
|
||||||
jeq print_2
|
jeq print_2
|
||||||
cmp '4'
|
|
||||||
bra debug
|
|
||||||
|
|
||||||
cmp #'*' ; print home menu again if not visible (message 1 and 2 jmp to home)
|
cmp #'*' ; print home menu again if not visible (message 1 and 2 jmp to home)
|
||||||
jeq return_home
|
jeq return_home
|
||||||
|
|
||||||
jmp home
|
jmp home
|
||||||
|
|
||||||
debug:
|
|
||||||
DEBUG_LED_ON 0
|
|
||||||
jmp home
|
|
||||||
|
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
|
|
||||||
print_1:
|
print_1:
|
||||||
Print message_1
|
jsr lcd_clear
|
||||||
|
PrintSlow message_1,10
|
||||||
jmp home
|
jmp home
|
||||||
|
|
||||||
print_2:
|
print_2:
|
||||||
Print message_2
|
jsr lcd_clear
|
||||||
|
PrintSlow message_2,10
|
||||||
jmp home
|
jmp home
|
||||||
|
|
||||||
.segment "RODATA"
|
.segment "RODATA"
|
||||||
@ -172,7 +154,8 @@ message_2:
|
|||||||
.asciiz "================"
|
.asciiz "================"
|
||||||
message_menu:
|
message_menu:
|
||||||
.byte "<A> Printer "
|
.byte "<A> Printer "
|
||||||
.byte "<B> Temperatur "
|
; .byte "<B> Temperatur "
|
||||||
|
.byte "<B> Run from SPI"
|
||||||
.byte "<C> Text 1 "
|
.byte "<C> Text 1 "
|
||||||
.asciiz "<D> Text 2 "
|
.asciiz "<D> Text 2 "
|
||||||
str_irq:
|
str_irq:
|
||||||
|
@ -11,6 +11,10 @@
|
|||||||
INCLUDE_SPI = 1
|
INCLUDE_SPI = 1
|
||||||
.segment "CODE"
|
.segment "CODE"
|
||||||
|
|
||||||
|
SPI_CODE_START = $3000
|
||||||
|
SPI_PAGES_WRITTEN = $2fff
|
||||||
|
SPI_BYTES_WRITTEN = $2ffe
|
||||||
|
|
||||||
|
|
||||||
.struct SPI_P_Pins
|
.struct SPI_P_Pins
|
||||||
; VIA addresses
|
; VIA addresses
|
||||||
@ -31,6 +35,8 @@ INCLUDE_SPI = 1
|
|||||||
; @param ARG0-1 Address of the SPI_Pins struct
|
; @param ARG0-1 Address of the SPI_Pins struct
|
||||||
;********************************************************************************
|
;********************************************************************************
|
||||||
.proc spi_p_init
|
.proc spi_p_init
|
||||||
|
stz SPI_PAGES_WRITTEN
|
||||||
|
stz SPI_BYTES_WRITTEN
|
||||||
; todo USE MASKS
|
; todo USE MASKS
|
||||||
; set Shift register to shift in under external clock on CB1
|
; set Shift register to shift in under external clock on CB1
|
||||||
lda #IO::ACR::SR_SIN_PHIE
|
lda #IO::ACR::SR_SIN_PHIE
|
||||||
@ -39,13 +45,16 @@ INCLUDE_SPI = 1
|
|||||||
; enable SR interrupts
|
; enable SR interrupts
|
||||||
lda #(IO::IRQ::IRQ | IO::IRQ::SR)
|
lda #(IO::IRQ::IRQ | IO::IRQ::SR)
|
||||||
sta SPI_IO + IO::IER
|
sta SPI_IO + IO::IER
|
||||||
|
DEBUG_LED_ON 1
|
||||||
rts
|
rts
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
.proc spi_p_read
|
.proc spi_p_read
|
||||||
|
DEBUG_LED_ON 0
|
||||||
; print received byte
|
; print received byte
|
||||||
lda SPI_IO + IO::SR
|
lda SPI_IO + IO::SR
|
||||||
jsr lcd_char
|
jsr lcd_char
|
||||||
|
inc SPI_BYTES_WRITTEN
|
||||||
rts
|
rts
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user