mirror of
				https://github.com/Rockbox/rockbox.git
				synced 2025-10-29 00:36:22 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| --
 | |
| -- ZEN MOZAIC
 | |
| --
 | |
| ZENMOZAIC = {}
 | |
| 
 | |
| function ZENMOZAIC.lcd_send(cmd, data)
 | |
|     STMP.lcdif.set_data_swizzle(3)
 | |
|     STMP.lcdif.send_pio(false, {bit32.band(cmd, 0xff), bit32.rshift(cmd, 8)})
 | |
|     if cmd ~= 0x22 then
 | |
|         STMP.lcdif.send_pio(true, {bit32.band(data, 0xff), bit32.rshift(data, 8)})
 | |
|     end
 | |
| end
 | |
| 
 | |
| function ZENMOZAIC.lcd_init()
 | |
|     STMP.pinctrl.lcdif.setup_system(8, false)
 | |
|     STMP.lcdif.init()
 | |
|     STMP.lcdif.set_word_length(8)
 | |
|     STMP.lcdif.set_system_timing(2, 2, 2, 2)
 | |
|     STMP.lcdif.set_reset(1)
 | |
|     STMP.lcdif.set_reset(0)
 | |
|     STMP.lcdif.set_reset(1)
 | |
|     STMP.lcdif.set_byte_packing_format(0xf)
 | |
| 
 | |
|     ZENMOZAIC.lcd_send(0, 1)
 | |
|     ZENMOZAIC.lcd_send(3, 0)
 | |
|     
 | |
|     ZENMOZAIC.lcd_send(3, 0x510)
 | |
|     ZENMOZAIC.lcd_send(9, 8)
 | |
|     ZENMOZAIC.lcd_send(0xc, 0)
 | |
|     ZENMOZAIC.lcd_send(0xd, 0)
 | |
|     ZENMOZAIC.lcd_send(0xe, 0)
 | |
|     ZENMOZAIC.lcd_send(0x5b, 4)
 | |
|     ZENMOZAIC.lcd_send(0xd, 0x10)
 | |
|     ZENMOZAIC.lcd_send(9, 0)
 | |
|     ZENMOZAIC.lcd_send(3, 0x10)
 | |
|     ZENMOZAIC.lcd_send(0xd, 0x14)
 | |
|     ZENMOZAIC.lcd_send(0xe, 0x2b12)
 | |
|     ZENMOZAIC.lcd_send(1, 0x21f)
 | |
|     ZENMOZAIC.lcd_send(2, 0x700)
 | |
|     ZENMOZAIC.lcd_send(5, 0x30)
 | |
|     ZENMOZAIC.lcd_send(6, 0)
 | |
|     ZENMOZAIC.lcd_send(8, 0x202)
 | |
|     ZENMOZAIC.lcd_send(0xa, 0xc003)
 | |
|     ZENMOZAIC.lcd_send(0xb, 0)
 | |
|     ZENMOZAIC.lcd_send(0xf, 0)
 | |
|     ZENMOZAIC.lcd_send(0x10, 0)
 | |
|     ZENMOZAIC.lcd_send(0x11, 0)
 | |
|     ZENMOZAIC.lcd_send(0x14, 0x9f00)
 | |
|     ZENMOZAIC.lcd_send(0x15, 0x9f00)
 | |
|     ZENMOZAIC.lcd_send(0x16, 0x7f00)
 | |
|     ZENMOZAIC.lcd_send(0x17, 0x9f00)
 | |
|     ZENMOZAIC.lcd_send(0x20, 0)
 | |
|     ZENMOZAIC.lcd_send(0x21, 0)
 | |
|     ZENMOZAIC.lcd_send(0x23, 0)
 | |
|     ZENMOZAIC.lcd_send(0x24, 0)
 | |
|     ZENMOZAIC.lcd_send(0x25, 0)
 | |
|     ZENMOZAIC.lcd_send(0x26, 0)
 | |
|     ZENMOZAIC.lcd_send(0x30, 0x707)
 | |
|     ZENMOZAIC.lcd_send(0x31, 0x504)
 | |
|     ZENMOZAIC.lcd_send(0x32, 7)
 | |
|     ZENMOZAIC.lcd_send(0x33, 0x307)
 | |
|     ZENMOZAIC.lcd_send(0x34, 7)
 | |
|     ZENMOZAIC.lcd_send(0x35, 0x400)
 | |
|     ZENMOZAIC.lcd_send(0x36, 0x607)
 | |
|     ZENMOZAIC.lcd_send(0x37, 0x703)
 | |
|     ZENMOZAIC.lcd_send(0x3a, 0x1a0d)
 | |
|     ZENMOZAIC.lcd_send(0x3b, 0x1309)
 | |
| 
 | |
|     ZENMOZAIC.lcd_send(9, 4)
 | |
|     ZENMOZAIC.lcd_send(7, 5)
 | |
|     ZENMOZAIC.lcd_send(7, 0x25)
 | |
|     ZENMOZAIC.lcd_send(7, 0x27)
 | |
|     ZENMOZAIC.lcd_send(0x5b, 0)
 | |
|     ZENMOZAIC.lcd_send(7, 0x37)
 | |
| 
 | |
|     ZENMOZAIC.lcd_send(0x22, 0)
 | |
|     for i=0,128 do
 | |
|         STMP.lcdif.send_pio(true, {0xff, 0})
 | |
|     end
 | |
| end
 | |
| 
 | |
| function ZENMOZAIC.set_backlight(val)
 | |
|     local v = math.floor((val + 200) * val / 1000)
 | |
|     for i=4,0,-1 do
 | |
|         if bit32.btest(v,bit32.lshift(1,i)) then
 | |
|             HW.UARTDBG.DR.write(0xff)
 | |
|         else
 | |
|             HW.UARTDBG.DR.write(0xf8)
 | |
|         end
 | |
|         while HW.UARTDBG.FR.TXFF.read() == 1 do end
 | |
|     end
 | |
|     HW.UARTDBG.DR.write(0)
 | |
| end
 | |
| 
 | |
| function ZENMOZAIC.init()
 | |
|     ZENMOZAIC.lcd_init()
 | |
|     HW.LRADC.CTRL0.SFTRST.clr()
 | |
|     HW.LRADC.CTRL0.CLKGATE.clr()
 | |
|     HW.LRADC.CHn[0].ACCUMULATE.clr()
 | |
|     HW.LRADC.CHn[0].NUM_SAMPLES.write(0)
 | |
|     HW.LRADC.CHn[0].VALUE.write(0)
 | |
|     local t = {}
 | |
|     for i = 1,1000,1 do
 | |
|         HW.LRADC.CTRL0.SCHEDULE.write(1)
 | |
|         --local time = HW.DIGCTL.MICROSECONDS.read()
 | |
|         local time = i * 1000
 | |
|         local val = HW.LRADC.CHn[0].VALUE.read()
 | |
|         t[#t + 1] = {time, val}
 | |
|     end
 | |
|     local file = io.open("data.txt", "w")
 | |
|     for i,v in ipairs(t) do
 | |
|         file:write(string.format("%d %d\n", v[1] / 1000, v[2]))
 | |
|     end
 | |
|     file:close()
 | |
|     print("Display curve using:")
 | |
|     print("gnuplot -persist");
 | |
|     print("> plot \"data.txt\" using 1:2")
 | |
| end
 | |
| 
 |