рд╕реЗрдЧрд╛ рдореЗрдЧрд╛ рдбреНрд░рд╛рдЗрд╡ рдФрд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рднрд╛рдЧ 1 рд╕реЗ рдЧреЗрдордкреИрдб (рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдФрд░ рддреАрди рдмрдЯрди)

рд╢рд░рдж рдЛрддреБ рдЖ рдЧрдИ рд╣реИ , рдЧреЛрднреА рдЦрд┐рд▓ рдЧрдИ рд╣реИ , рдпрд╣ рд▓рдЧрднрдЧ рдордзреНрдп-рд╕рд░реНрджрд┐рдпреЛрдВ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╡рд╛рдбрд╝ рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рд╡рд╣ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдЬрдм рдЖрдк рдХреБрдЫ рдкреБрд░рд╛рдирд╛ рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЦрд┐рдбрд╝рдХреА рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рдмрд░реНрдлрд╝реАрд▓реЗ рддреВрдлрд╝рд╛рди рдХреА рдЖрд╡рд╛рдЬрд╝ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЛрдирд┐рдХ рдпрд╛ рдЬрд┐рдо рдХрд╛ рдХреАрдбрд╝рд╛ред рд▓реЗрдЦ рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ vidos рд╣реИред



рдпрджрд┐ рдЖрдкрдиреЗ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдПрд╕рдПрдордбреА рдЧреЗрдо рдЦреЗрд▓рд╛ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рджреЗрдЦрд╛ рдХрд┐ рдЗрди рдЧреЗрдореНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЧреЗрдо рдкреИрдб рдПрд╕рдПрдордбреА рдХрд╛ рджреЗрд╢реА рдЧреЗрдордкреИрдб рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдЦреЗрд▓ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╣реА Xbox рдпрд╛ рд▓реЙрдЬрд┐рдЯреЗрдХ рдЧреЗрдордкреИрдб рдХреЗ рд╕рд╛рде рдорд┐рд▓рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ, рдорд╛рдирдХ 90 рдХреЗ рджрд╢рдХ рдХреЗ рдЕрдВрдд рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмрдирд╛ рдерд╛ред рд▓реЗрдХрд┐рди 90 рдХреЗ рджрд╢рдХ рдХреЗ рдЕрдВрдд рддрдХ, рд╣рд░ рдХреЛрдИ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓рд╛ рдЧрдпрд╛ рдЬреИрд╕реЗ рд╡рд╣ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред

рдПрд╕рдПрдордбреА рд╕реЗ рдЧреЗрдордкреИрдб рдЦрд░реАрджрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЗрд╕реЗ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдХрдВрд╕реЛрд▓ рдХреЗ рдХреНрд▓реЛрди рдЦреБрдж рдмреЗрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдХрд╛рдлреА рд╕рд╕реНрддреА рдХреАрдордд рдкрд░, рд▓рдЧрднрдЧ 300 рд░реВрдмрд▓ред

рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдореИрдВрдиреЗ рдбрд┐рдХрдореНрдкреЛрдЬрд┐рд╢рди рдХреЗрд╕ рдФрд░ рдбреИрдб DB-9 рдХрдиреЗрдХреНрдЯрд░ рд╕реЗ рдПрдХ usb рдХреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЖрдпреЛрдЬрди рдХрд┐рдпрд╛ред рдФрд░ GPIO рдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдирд┐рд╖реНрдХрд░реНрд╖ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ред рдЧреЗрдордкреИрдб 3.3 рд╡реЛрд▓реНрдЯ рд╕реЗ рдорд╣рд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред



рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдЪреБрдирдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдПрдореБрд▓реЗрдЯрд░ рдерд╛ - рдкрд┐рдХреЛрдбреНрд░рд╛рдЗрд╡, рдпрд╣ рдПрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реИ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдпрд╣ рд░рд┐рдЯреНрд░реЛрдкреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдереЛрдбрд╝реА рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рдиреА рдкрдбрд╝реАред рд╕реНрд░реЛрдд рдХреЛрдб рдЗрд╕ рдкрддреЗ рдкрд░ Github рд╕реЗрд╡рд╛ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред

рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рднрдВрдбрд╛рд░ рд╕реЗ рд╕рдлрд▓рддрд╛ рдХреЗ 3 рдШрдЯрдХ рдЪрд╛рд╣рд┐рдП:

  1. рдкрд┐рдХрд╛рдбреНрд░рд╛рдЗрд╡ рдПрдореБрд▓реЗрдЯрд░ рд╣реА;
  2. рд╕реАрдкреАрдпреВ рдПрдореБрд▓реЗрдЯрд░ - рд╕рд╛рдЗрдХреНрд▓реЛрди68000;
  3. рдФрд░ рдлреНрд░рдВрдЯрдПрдВрдб - рд▓рд┐рдмрд┐рд╕реЛрдлрд╝реЗред

рдЕрдм рдпрд╣ рд╕рдм рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк Picodrive рдХреЛ рдЕрдирдкреИрдХ рдпрд╛ рдЕрдирдкреИрдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЕрдм cyclone68000 рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЦреЛрд▓реЗрдВ, рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

/ /picodrive-master/cpu/cyclone 

рдЖрдкрдХреЛ рд▓рд┐рдмрд┐рдХреЙрдлрд╝ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХреА рдЬрд╛рддреА рд╣реИ:

 / /picodrive-master/platform/libpicofe 

рдЕрдм рдЖрдкрдХреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рддреИрдпрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд░реЗрдВ

 sudo ./configure 

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА - config.mak , рдЗрд╕рдореЗрдВ рдЖрдкрдХреЛ рдХреБрдЫ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдиреАрдЪреЗ рд╕рдорд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рд╣реИ:

 AS = arm-linux-as LDLIBS += -L/usr/lib/arm-linux-gnueabihf -lSDL -lasound -lpng -lm -lz -lwiringPi ARCH = arm PLATFORM = rpi1 

рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - config.h ред рдпрд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ:

 / /picodrive-master/cpu/cyclone 

рдЗрд╕рдореЗрдВ, рдЖрдкрдХреЛ рдЪрд░ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 #define HAVE_ARMv6 1 #define CYCLONE_FOR_GENESIS 1 

рдФрд░ рдЕрдм рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдПрдХ рдЬрдЧрд╣ рдвреВрдВрдврдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдЬрд╣рд╛рдВ рджрдмрд╛рдП рдЧрдП рдмрдЯрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреА рд╣реИ, рдХреЛрдб рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдл рдХрд░рддреЗ рд╣реИрдВ , рдФрд░ рдЗрд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╕рд╕реНрдкреЗрдВрд╕ рдХреЛ рдкрдХрдбрд╝реЗ рдмрд┐рдирд╛, рдореИрдВ рддреБрд░рдВрдд рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЬрд┐рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ:

 / /picodrive-master/pico/ 

рдпрд╣рд╛рдБ рд╣рдо 3 рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ - pico.c , memory.c , memory.h ред рд╕рдВрднрд╡рддрдГ рдЖрдк рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдм рдХреБрдЫ рдПрдХ рдореЗрдВ рд░рдЯрдирд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рдЖрд╕рд╛рди рд▓рдЧ рд░рд╣рд╛ рдерд╛ред
рдФрд░ рдЗрд╕рд▓рд┐рдП, pico.c рдлрд╝рд╛рдЗрд▓ рдореЗрдВ , рдореИрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ GPIO рдкрд┐рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реВрдВред

рддреБрд░рдВрдд рдореИрдВ рдлрд╝рд╛рдЗрд▓ рд╣реЗрдбрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рджреВрдВрдЧрд╛:

 #include "pico_int.h" #include "sound/ym2612.h" #include <wiringPi.h> #define Data0 3 #define Data1 4 #define Data2 5 #define Data3 12 #define Data4 13 #define Data5 10 #define Select 6 struct Pico Pico; struct PicoMem PicoMem; PicoInterface PicoIn; 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, WiringPi рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╕реЗрдЯ рд╣реИ , рдФрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдереЛрдбрд╝рд╛ рдХрдо рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдм рд╢реВрдиреНрдп рдкрд┐рдХреЛрдЗрдирд┐рдЯ (рд╢реВрдиреНрдп) рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ:

 void PicoInit(void) { ... ... PicoDraw2Init(); wiringPiSetup (); pinMode (Select, OUTPUT); pinMode (Data0, INPUT); pinMode (Data1, INPUT); pinMode (Data2, INPUT); pinMode (Data3, INPUT); pinMode (Data4, INPUT); pinMode (Data5, INPUT); digitalWrite (Select, HIGH); } 

рдпрд╣ рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдореЛрд░реА рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдлрдВрдХреНрд╢рди (рдкреНрд░рдХрд╛рд░) рд╣реИред рдФрд░ рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдореИрдВрдиреЗ GPIO рдкрд┐рди рдХреА рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рдореНрдорд┐рд▓рд┐рдд рдХреА рд╣реИрдВред рдпрд╣рд╛рдВ DB-9 рдХрдиреЗрдХреНрдЯрд░ рдХрд╛ рдкрд┐рдирдЖрдЙрдЯ рд╣реИ ред

рдпрд╣рд╛рдБ рдореБрдЭреЗ рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЧреЗрдордкреИрдб рдореЗрдВ 6 рд╕реВрдЪрдирд╛ рд╕рдВрдкрд░реНрдХ (Data0 ... Data5), рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ (рд╕реЗрд▓реЗрд╕реНрдЯ), рдФрд░ рд╢рдХреНрддрд┐ рд╣реИред

рдЕрдЧрд▓рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ - рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рд╣рдореЗрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ memory.h рдФрд░ memory.c рджреЛрдиреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ред рдЗрд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рддреЛ рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк - Memory.c рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рдирд╛рдо рдХреЗ рд╕рд╛рде 2 рдХрд╛рд░реНрдп рд╣реИрдВ:

 static u32 read_pad_3btn(int i, u32 out_bits) static u32 read_pad_6btn(int i, u32 out_bits) 

рдирд╛рдо 3-рдмрдЯрди рдФрд░ 6-рдмрдЯрди рдЧреЗрдордкреИрдб рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреЛрдИ рднреА 6-рдмрдЯрди рдЧреЗрдордкреИрдб 3-рдмрдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЧреЗрдо рдХреЗ рд╢реЗрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЧреЗрдордкреИрдб рдХреЗ рдЗрд╕ рдореЛрдб рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдореЛрдб рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ 16 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдмрд╛рд░, рдЪрдпрди рдЖрдЙрдЯрдкреБрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред рдЬрдм рдЖрдк = 0 рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрдЯрди рдХреЗ рдорд╛рди рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ - UP, DOWN, A, Startред рдЬрдм Select = 1 рдмрдЯрди рдХреА рд╕реНрдерд┐рддрд┐ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИ - UP, DOWN, LEFT, RIGHT, B, C. рдиреАрдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдореЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред



рддреБрд░рдВрдд рдореИрдВ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреА рдПрдХ рд╕реВрдЪреА рджреВрдВрдЧрд╛:

 static u32 read_pad_3btn(int i, u32 out_bits) { u32 pad = ~PicoIn.padInt[i]; // Get inverse of pad MXYZ SACB RLDU u32 value = 0; if (i == 0 && (out_bits & 0x40)) // TH { digitalWrite (Select, HIGH); delayMicroseconds (20); value ^= digitalRead(Data0) << 0; //read UP button value ^= digitalRead(Data1) << 1; //read DOWN button value ^= digitalRead(Data2) << 2; //read LEFT button value ^= digitalRead(Data3) << 3; //read RIGHT button value ^= digitalRead(Data4) << 4; //read B button value ^= digitalRead(Data5) << 5; //read C button } if (i == 0 && !(out_bits & 0x40)) { digitalWrite (Select, LOW); delayMicroseconds (20); value ^= digitalRead(Data0) << 0; //read UP button value ^= digitalRead(Data1) << 1; //read DOWN button value ^= digitalRead(Data4) << 4; //read A button value ^= digitalRead(Data5) << 5; //read Start button } if (i == 1 && (out_bits & 0x40))// TH { value = pad & 0x3f; // ?1CB RLDU } if (i == 1 && !(out_bits & 0x40)) { value = ((pad & 0xc0) >> 2) | (pad & 3); // ?0SA 00DU } return value; } 

рдпрд╣рд╛рдБ рдореИрдВ рдЧреЗрдордкреИрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрдЧрд░ (out_bits рдФрд░ 0x40) // TH рдХреЗрд╡рд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдХреА рддрд░рд╣ рд╣реА рдмрдЯрди рдХреА рд╕реНрдерд┐рддрд┐ рджреА рдЧрдИ рд╣реИред рдмрдЯрди рджрдмрд╛рдпрд╛ = режред

рдпрд╣рд╛рдБ рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:


рдЕрдЧрд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЬрд╛рд░реА, рдкрд┐рдк-рдкрд┐рдк-рдкрд┐рдк

Source: https://habr.com/ru/post/hi423565/


All Articles