Subversion Repositories KoE_projects

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1. #ifndef __pae_mcu_H
  2. #define __pae_mcu_H
  3.  
  4. #include <LPC23xx.h>
  5. #include <STDLIB.h>
  6. #include <absacc.h>
  7. #include "compress.h"
  8. #include "type.h"
  9. #include <stdbool.h>
  10. #include <stdint.h>
  11. #include "string.h"     // strlen
  12. #include "integer.h"
  13. #include "diskio.h"
  14. #include "ff.h"
  15.  
  16. #define fpga_pause \
  17. { \
  18.         fpga_timing = 0; \
  19.         while(fpga_timing < fpga_timing_const) {}; \
  20. }
  21.  
  22. #define pll_pause \
  23. {       \
  24.                 volatile int i; \
  25.                 for(i = 0; i < 100000; i++);    \
  26. }
  27.  
  28. #define BUFSIZE 512
  29. static unsigned char buffer[BUFSIZE];
  30.                
  31. #define condition_1 ((cycle_counter == 0) && (send_data_flag == 0xff) && get_data_flag && get_status_flag)
  32. #define condition_2 ((cycle_counter == 1) && timer_flag)
  33. #define condition_3 ((send_data_flag == 0xff) && get_data_flag && get_status_flag && myshko_flag)              
  34. #define condition_4 ((cycle_counter == 2) && (send_data_flag == 0xff) && get_data_flag && get_status_flag)
  35. #define condition_5 ((cycle_counter == 3) && (send_data_flag == 0xff) && get_data_flag && get_status_flag)
  36. #define condition_6 ((cycle_counter == 4) && (send_data_flag == 0xff) && get_data_flag && get_status_flag)
  37. #define condition_7 ((cycle_counter == 5) && (send_data_flag == 0xff) && get_data_flag && get_status_flag)
  38.  
  39. #define mcu_firmware_date "20.02.2024"
  40.  
  41. #define fpga_timing_const 3
  42. volatile unsigned char fpga_timing = 0;
  43.  
  44. #define pll_timing_const 5000
  45. volatile unsigned int pll_timing = 0;  
  46.  
  47. volatile UINT Timer_div = 0;            /* Performance timer (1kHz increment) */
  48. volatile UINT Timer = 0;                                /* Performance timer (1kHz increment) */
  49.  
  50. volatile unsigned char test_counter=0;         
  51.  
  52. volatile unsigned long cmos __at (0xE0084000);
  53. volatile unsigned long *cmos_a;
  54. unsigned long cmos_d;
  55. unsigned char *data_base_addr = 0;
  56.  
  57. unsigned char ReadAddrFnc(unsigned long addr);
  58. extern unsigned char basic48[];
  59. extern unsigned long basic48_size;
  60. extern unsigned char basic128[];       
  61. extern unsigned long basic128_size;
  62. extern unsigned char trdos[];  
  63. extern unsigned long trdos_size;
  64. extern unsigned char gluk[];   
  65. extern unsigned long gluk_size;
  66. extern unsigned char logo[];   
  67. extern unsigned long logo_size;
  68. extern unsigned char fpga[];   
  69. extern unsigned long fpga_size;
  70. extern unsigned char fatall[]; 
  71. extern unsigned long fatall_size;
  72.  
  73. void rom_from_rom(unsigned char page, unsigned long size);
  74. char trd_to_ram(char* filename);
  75. void upload_firmwarez(void);
  76. void fpga_send_data(char data, unsigned int skoka);
  77. void fpga_send_command(char command);
  78. void upload_from_rom(void);
  79. char upload_from_sd(char* filename);
  80. char screen_from_sd(char* filename);
  81. char rom_from_sd(unsigned char page, char* filename);
  82. void sd_spi_unsetup(void);
  83. char sd_error;
  84.  
  85. #define i2c_bufsize 16384
  86.  
  87. volatile unsigned char get_cmos_data_flag;
  88.  
  89. void timer0_irq(void) __irq;    // priority = 0
  90. void timer1_irq(void) __irq;    // priority = 1
  91.  
  92. void i2c_irq(void) __irq;               // priority = 14
  93.  
  94. void sd_spi_setup(void);
  95. void sd_spi_unsetup(void);
  96.  
  97. void fpga_init(void);
  98. char fpga_spi_send(unsigned char spi_data);
  99.  
  100. char upload_from_sd(char* filename);
  101.  
  102. void pll_setup(void);
  103. void pwm_setup(void);
  104. void timer0_setup(void);
  105. void timer1_setup(void);
  106.  
  107. DWORD get_fattime (void);
  108.  
  109. extern bool mouse_data_transmit(unsigned char data);
  110. void upload_data(void);
  111. void klava_int(void);
  112. void caps_shift(void);
  113. void symbol_shift(void);
  114.  
  115. void z80_reset(void);
  116.  
  117. void gpio_i2c_setup(void);
  118. void gpio_fpga_send_command(char command);
  119. void gpio_fpga_send_data(char data, unsigned int skoka);
  120. void i2c_get_status(void);
  121. void i2c_get_data(void);
  122. void rtc_setup(void);
  123.  
  124. void led0_on(void);
  125. void led0_off(void);
  126. void led1_on(void);
  127. void led1_off(void);
  128.  
  129. void get_cmos_data(unsigned char status);
  130. void transmit_cmos_data(void);
  131.  
  132. void kempston_setup(void);
  133. unsigned char kempston_read(void);
  134.  
  135. void pentagon_init(void);
  136. void system_cycle(void);
  137.  
  138. extern void mouse_transaction(void);
  139. extern void mouse_restart(void);
  140. extern void ps2_init(void);
  141.  
  142. void adc_setup(void);
  143. unsigned int in_l_measure(void);
  144. unsigned int in_r_measure(void);
  145. unsigned int in_l;
  146. unsigned int in_r;
  147.  
  148. extern volatile bool myshko_flag;
  149. extern volatile unsigned int mouse_answer_timeout;
  150. extern volatile unsigned char mouse_last_data;
  151. extern bool mouse_setup(void);
  152.  
  153. unsigned char int_delay;
  154.  
  155. extern volatile unsigned char m_byte_number;
  156. extern volatile unsigned char m_x;
  157. extern volatile unsigned char m_y;
  158. extern volatile unsigned char m_b;
  159. extern volatile unsigned int mouse;
  160. extern volatile unsigned char ps2_transmit_flag1;
  161.  
  162. unsigned char i2c_command;
  163. unsigned char i2c_data;
  164.  
  165. unsigned short addr;
  166. unsigned short a;
  167.  
  168. volatile unsigned int buffer4cmos[256];
  169. volatile unsigned char i2c_buffer[16384];
  170.  
  171. volatile unsigned int i2c_byte_number;
  172. volatile unsigned int i2c_number_of_bytes;
  173.  
  174. volatile bool timer_flag;
  175.  
  176. volatile unsigned char send_command_flag;
  177. volatile unsigned char send_data_flag;
  178. volatile bool get_status_flag;
  179. volatile bool get_data_flag;
  180.  
  181. volatile unsigned char cmos_ready;
  182.  
  183. volatile unsigned char received_status;
  184.  
  185. void i2c_setup(void);
  186. unsigned long e;
  187. unsigned long k;
  188.  
  189. char lastkey[2]={' ',0};
  190.  
  191. unsigned char unshifted[][2] = {0x0d,9,0x0e,'|',0x15,'q',0x16,'1',0x1a,'z',0x1b,'s',0x1c,'a',
  192. 0x1d,'w',0x1e,'2',0x21,'c',0x22,'x',0x23,'d',0x24,'e',0x25,'4',0x26,'3',0x29,' ',0x2a,'v',0x2b,'f',
  193. 0x2c,'t',0x2d,'r',0x2e,'5',0x31,'n',0x32,'b',0x33,'h',0x34,'g',0x35,'y',0x36,'6',0x39,',',0x3a,'m',
  194. 0x3b,'j',0x3c,'u',0x3d,'7',0x3e,'8',0x41,',',0x42,'k',0x43,'i',0x44,'o',0x45,'0',0x46,'9',0x49,'.',
  195. 0x4a,'-',0x4b,'l',0x4c,'ø',0x4d,'p',0x4e,'+',0x52,'æ',0x54,'å',0x55,'\\',0x5a,13,0x5b,'¨',0x5d,'\'',
  196. 0x61,'<',0x66,8,0x69,'1',0x6b,'4',0x6c,'7',0x70,'0',0x71,',',0x72,'2',0x73,'5',0x74,'6',0x75,'8',
  197. 0x79,'+',0x7a,'3',0x7b,'-',0x7c,'*',0x7d,'9',0,0};
  198.  
  199. unsigned char shifted[][2] = {0x0d,9,0x0e,'§',0x15,'Q',0x16,'!',0x1a,'Z',0x1b,'S',0x1c,'A',
  200. 0x1d,'W',0x1e,'"',0x21,'C',0x22,'X',0x23,'D',0x24,'E',0x25,'¤',0x26,'#',0x29,' ',0x2a,'V',0x2b,'F',
  201. 0x2c,'T',0x2d,'R',0x2e,'%',0x31,'N',0x32,'B',0x33,'H',0x34,'G',0x35,'Y',0x36,'&',0x39,'L',0x3a,'M',
  202. 0x3b,'J',0x3c,'U',0x3d,'/',0x3e,'(',0x41,';',0x42,'K',0x43,'I',0x44,'O',0x45,'=',0x46,')',0x49,':',
  203. 0x4a,'_',0x4b,'L',0x4c,'Ø',0x4d,'P',0x4e,'?',0x52,'Æ',0x54,'Å',0x55,'`',0x5a,13,0x5b,'^',0x5d,'*',
  204. 0x61,'>',0x66,8,0x69,'1',0x6b,'4',0x6c,'7',0x70,'0',0x71,',',0x72,'2',0x73,'5',0x74,'6',0x75,'8',
  205. 0x79,'+',0x7a,'3',0x7b,'-',0x7c,'*',0x7d,'9',0,0};
  206.  
  207. void ctrl(void);
  208.  
  209. void additional_action(unsigned char unpush, unsigned char scode);
  210.  
  211. #define error_timeout 5
  212.  
  213. volatile unsigned int timeout = 0;
  214. volatile unsigned int reset_timeout = 0;
  215.  
  216. extern volatile bool mouse_read_error;
  217. extern volatile bool mouse_write_error;
  218. extern volatile bool mouse_wheel;
  219.  
  220. extern volatile unsigned int m_timeout;
  221.  
  222. extern void interrupt(unsigned char input_bit);
  223. extern void reset_error(void);
  224. extern volatile unsigned char keyarray[5];
  225. extern volatile bool klava;
  226. extern volatile bool reset;
  227. extern volatile bool magic;
  228. extern volatile bool keyboard_error;
  229. extern bool shift_flag;
  230. extern bool ctrl_flag;
  231. extern volatile bool backspace_flag;
  232.  
  233. unsigned char cycle_counter=0;
  234.  
  235. #endif
  236.