Mercurial > public > mk2
changeset 330:447390289f47 ScreenDump
NEW screen_dump serial command (l)
author | JeanDo |
---|---|
date | Tue, 10 May 2011 03:18:20 +0200 |
parents | 1adcfb4b4c27 |
children | 469f4861c7c1 |
files | code_part1/OSTC_code_asm_part1/MAIN.ASM code_part1/OSTC_code_asm_part1/definitions.asm code_part1/OSTC_code_asm_part1/dump_screen.asm code_part1/OSTC_code_asm_part1/isr.asm code_part1/OSTC_code_asm_part1/oled_samsung.asm code_part1/OSTC_code_asm_part1/surfmode.asm |
diffstat | 6 files changed, 151 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/code_part1/OSTC_code_asm_part1/MAIN.ASM Mon May 09 08:12:12 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/MAIN.ASM Tue May 10 03:18:20 2011 +0200 @@ -88,6 +88,7 @@ #include oled_samsung.asm ; Attached in 80-System 8-Bit Mode #include aa_wordprocessor.asm ; New antialiased word processor and fonts #include color_processor.asm ; Color image drawing. +#include dump_screen.asm ; Copy screen contains to serial interface #include valconv.asm ; outputs to POSTINC2 #include eeprom_rs232.asm ; Internal EEPROM and RS232 Interface #include menu_custom.asm ; Menu "Custom FunctionsI" and "Custom FunctionsII"
--- a/code_part1/OSTC_code_asm_part1/definitions.asm Mon May 09 08:12:12 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/definitions.asm Tue May 10 03:18:20 2011 +0200 @@ -387,8 +387,8 @@ #DEFINE win_flip_screen win_flags,0 ; 180° rotation of the OLED screen. ; Flags -#DEFINE tts_extra_time flag1,0 ; unused -#DEFINE FLAG_2 flag1,1 ; unused +#DEFINE tts_extra_time flag1,0 ; Showing "Future TTS" customview +#DEFINE uart_dump_screen flag1,1 ; Screen copy to USB. #DEFINE pre_zero_flag flag1,2 ; leading zeros #DEFINE neg_flag flag1,3 ; e.g. Sub_16 (sub_c = sub_a - sub_b) #DEFINE FLAG_3 flag1,4 ; unused
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/code_part1/OSTC_code_asm_part1/dump_screen.asm Tue May 10 03:18:20 2011 +0200 @@ -0,0 +1,117 @@ +;============================================================================= +; +; File dump_screen.asm +; +; Dump screen contains to the serial interface. +; +; This program is free software: you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation, either version 3 of the License, or +; (at your option) any later version. +; +; This program is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program. If not, see <http://www.gnu.org/licenses/>. +; +; Copyright (c) 2011, JD Gascuel. +;============================================================================= +; HISTORY +; 2011-05-08 : [jDG] Creation. +; +; BUGS : +; * ... +;============================================================================= + +; Manage interface to the OSTC platform: +dump_screen: + bcf uart_dump_screen ; clear flag! + + movlw 'l' + movwf TXREG ; Send command echo. + bsf no_sensor_int ; No Sensor Interrupt + bcf PIE1,RCIE ; no interrupt for UART + bcf PIR1,RCIF ; clear flag + bsf LED_blue ; LEDusb ON + call rs232_wait_tx ; wait for UART + + call dump_screen_0 + + bcf no_sensor_int ; Restore Sensor Interrupt + bcf LED_blue ; Clear led + bcf LED_red ; Clear led + bsf PIE1,RCIE ; Interrupt for RS232 + return + +;============================================================================= +; Dump screen contains to the UART + +dump_screen_0: + + ;---- Send OLED box command for the full screen window ------------------- + mullw 0 ; PRODH:L <- 0 + + AA_CMD_WRITE 0x35 ; VerticalStartAddress HIGH:LOW + AA_DATA_WRITE_PROD ; 00:00 + + AA_CMD_WRITE 0x36 ; VerticalEndAddress HIGH:LOW + AA_DATA_WRITE 0x01 + AA_DATA_WRITE 0x3F + + AA_CMD_WRITE 0x37 ; HorizontalAddress START:END + AA_DATA_WRITE 0x00 + AA_DATA_WRITE 0xEF + + AA_CMD_WRITE 0x20 ; Start Address Horizontal (.0 - .239) + AA_DATA_WRITE_PROD ; 00:00 + + AA_CMD_WRITE 0x21 ; Start Address Vertical (.0 - .319) + AA_DATA_WRITE_PROD ; 00:00 + + AA_CMD_WRITE 0x22 ; Start reading. + rcall PLED_DataRead ; Dummy pixel to skip. + rcall PLED_DataRead ; Dummy pixel to skip. + + movlw .160 ; 160x2 columns + movwf PRODH +dump_screen_1: + btg LED_red ; LEDactivity toggle + + movlw .240 ; 240 lines + movwf PRODL + +dump_screen_2: + setf TRISD ; PortD as input. + + rcall PLED_DataRead ; read first pixel-low byte + movwf TXREG ; send + call rs232_wait_tx ; wait for UART + + rcall PLED_DataRead ; read first pixel-high byte + movwf TXREG ; send + call rs232_wait_tx ; wait for UART + + rcall PLED_DataRead ; read second pixel-low byte + movwf TXREG ; send + call rs232_wait_tx ; wait for UART + + rcall PLED_DataRead ; read second pixel-high byte + movwf TXREG ; send + call rs232_wait_tx ; wait for UART + + clrf TRISD ; Back to normal (PortD as output) + + decfsz PRODL,F + bra dump_screen_2 + + AA_CMD_WRITE 0x22 ; Sync high/low byte, again. + + decfsz PRODH,F + bra dump_screen_1 + + AA_CMD_WRITE 0x00 ; NOP, to stop Address Update Counter + return +
--- a/code_part1/OSTC_code_asm_part1/isr.asm Mon May 09 08:12:12 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/isr.asm Tue May 10 03:18:20 2011 +0200 @@ -56,6 +56,8 @@ bsf uart_send_int_eeprom2 ; set flag dcfsnz uart1_temp,F ; "k" bsf uart_store_tissue_data ; set flag + dcfsnz uart1_temp,F ; "l" + bsf uart_dump_screen ; set flag movlw 0xC1 cpfseq RCREG ; 115200Baud Bootloader request?
--- a/code_part1/OSTC_code_asm_part1/oled_samsung.asm Mon May 09 08:12:12 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/oled_samsung.asm Tue May 10 03:18:20 2011 +0200 @@ -184,6 +184,15 @@ ; bsf oled_rw endm ; +; Input : data as macro parameter. +; Output : NONE +; Trash : WREG +; +AA_DATA_WRITE macro data + movlw data + rcall PLED_DataWrite + endm +; ; Input : PRODH:L as 16bits data. ; Output : NONE ; Trash : NONE @@ -517,6 +526,24 @@ return ; ----------------------------- +; PLED Read data into WREG +; ----------------------------- +; NOTE: you should "setf TRISD" before calling this function, +; to make PortD an input port... +PLED_DataRead: + bsf oled_rs ; Data register. + nop ; Enable delay to read data... + bcf oled_e_nwr ; Read enable. + nop + nop + nop + nop + nop + movf PORTD,W ; Read byte. + bsf oled_e_nwr ; release bus. + return + +; ----------------------------- ; PLED boot ; ----------------------------- PLED_boot:
--- a/code_part1/OSTC_code_asm_part1/surfmode.asm Mon May 09 08:12:12 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/surfmode.asm Tue May 10 03:18:20 2011 +0200 @@ -199,6 +199,8 @@ goto uart_115k_bootloader ; Yes! btfsc uart_reset_battery_stats ; Reset Battery stats? goto reset_battery_stats ; Yes! + btfsc uart_dump_screen ; Dumps screen contains ? + goto dump_screen ; Yes! bra surfloop_loop ; loop surfacemode