From: Martin Perner Date: Sun, 16 Jan 2011 14:52:57 +0000 (+0100) Subject: shit not working X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=calu.git;a=commitdiff_plain;h=refs%2Fheads%2Flcd shit not working --- diff --git a/cpu/src/extension_lcd_b_8.vhd b/cpu/src/extension_lcd_b_8.vhd index 119a1bd..7016a19 100644 --- a/cpu/src/extension_lcd_b_8.vhd +++ b/cpu/src/extension_lcd_b_8.vhd @@ -15,6 +15,8 @@ use work.extension_lcd_pkg_8.all; architecture behav of extension_lcd_8 is constant CLK_Divide : integer := 16; +constant LCD_Delay : std_logic_vector(19 downto 0) := x"3fffe"; +--constant LCD_Delay : std_logic_vector(19 downto 0) := x"0000e"; -- for simulation --w1_st_co(0) == 1 => ready for data --w1_st_co(1) == 1 => setup finished @@ -184,7 +186,7 @@ begin end if; when DO_WAIT => - if lcd_set_delay < x"3fffe" then + if lcd_set_delay < LCD_Delay then lcd_set_delay_nxt <= lcd_set_delay + 1; else lcd_set_delay_nxt <= (others => '0'); @@ -216,7 +218,7 @@ begin end if; when DO_WAIT => - if lcd_set_delay < x"3fffe" then + if lcd_set_delay < LCD_Delay then lcd_set_delay_nxt <= lcd_set_delay + 1; else lcd_set_delay_nxt <= (others => '0'); @@ -267,6 +269,7 @@ begin lcd_done_nxt <= '1'; lcd_count_nxt <= 0; lcd_st_nxt <= "00"; + when others => null; end case; @@ -283,6 +286,7 @@ begin when "100" => lcd_rom_data <= x"001"; when "101" => lcd_rom_data <= x"006"; when "110" => lcd_rom_data <= x"080"; + when "111" => lcd_rom_data <= x"13C"; when others => lcd_rom_data <= x"0b0"; --goto 0,0 -- Line 1 --when "000111" => lcd_rom_data <= x"120"; -- Welcome to the diff --git a/progs/testbench.s b/progs/testbench.s index cc8b4dc..cc86e47 100644 --- a/progs/testbench.s +++ b/progs/testbench.s @@ -1,5 +1,9 @@ #include "dt_inc.s" .text + .define LCDBASE, 0x2060 + .define LCDSTATUS, 0x0 + .define LCDADDR, 0x4 + .org 0x0 start: br+ main @@ -18,12 +22,14 @@ main: loop: call u_recv_byte - cmpi r0, 0x42 - breq reset_timer - call t_valget - addi r1, r0, 0 - call u_send_uint - call u_send_newline + ldi r0, LCDBASE@lo + ldih r0, LCDBASE@hi + ldw r1, LCDSTATUS(r0) + call u_send_byte + ldi r0, LCDBASE@lo + ldih r0, LCDBASE@hi + ldis r1, 0x141 + stw r1, LCDADDR(r0) br loop reset_timer: