kopia lustrzana https://github.com/pimoroni/pimoroni-pico
				
				
				
			Inky73: Use a GPIO for busy wait.
							rodzic
							
								
									2ef6d8d8fb
								
							
						
					
					
						commit
						6efa5cfb3f
					
				|  | @ -44,7 +44,7 @@ namespace pimoroni { | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   bool Inky73::is_busy() { |   bool Inky73::is_busy() { | ||||||
|     return !(sr.read() & 128); |     return !gpio_get(BUSY); | ||||||
|   } |   } | ||||||
|    |    | ||||||
|   void Inky73::busy_wait(uint timeout_ms) { |   void Inky73::busy_wait(uint timeout_ms) { | ||||||
|  | @ -75,6 +75,10 @@ namespace pimoroni { | ||||||
|     gpio_set_dir(RESET, GPIO_OUT); |     gpio_set_dir(RESET, GPIO_OUT); | ||||||
|     gpio_put(RESET, 1); |     gpio_put(RESET, 1); | ||||||
| 
 | 
 | ||||||
|  |     gpio_set_function(BUSY, GPIO_FUNC_SIO); | ||||||
|  |     gpio_set_dir(BUSY, GPIO_IN); | ||||||
|  |     gpio_set_pulls(BUSY, true, false); | ||||||
|  | 
 | ||||||
|     gpio_set_function(SCK,  GPIO_FUNC_SPI); |     gpio_set_function(SCK,  GPIO_FUNC_SPI); | ||||||
|     gpio_set_function(MOSI, GPIO_FUNC_SPI); |     gpio_set_function(MOSI, GPIO_FUNC_SPI); | ||||||
|   }; |   }; | ||||||
|  | @ -164,6 +168,12 @@ namespace pimoroni { | ||||||
|       gpio_put(CS, 0); |       gpio_put(CS, 0); | ||||||
|       spi_write_blocking(spi, (const uint8_t*)graphics->frame_buffer, graphics->bounds.w * graphics->bounds.h / 2); |       spi_write_blocking(spi, (const uint8_t*)graphics->frame_buffer, graphics->bounds.w * graphics->bounds.h / 2); | ||||||
|       gpio_put(CS, 1); |       gpio_put(CS, 1); | ||||||
|  |     } else if (graphics->pen_type == PicoGraphics::PEN_3BIT) { | ||||||
|  |       graphics->frame_convert(PicoGraphics::PEN_P4, [this](void *buf, size_t length) { | ||||||
|  |         if (length > 0) { | ||||||
|  |           spi_write_blocking(spi, (const uint8_t*)buf, length); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|     } else { |     } else { | ||||||
|       graphics->frame_convert(PicoGraphics::PEN_INKY7, [this, &totalLength](void *buf, size_t length) { |       graphics->frame_convert(PicoGraphics::PEN_INKY7, [this, &totalLength](void *buf, size_t length) { | ||||||
|         if (length > 0) { |         if (length > 0) { | ||||||
|  | @ -175,7 +185,7 @@ namespace pimoroni { | ||||||
|       }); |       }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     gpio_put(DC, 0); // data mode
 |     gpio_put(DC, 0); // command mode
 | ||||||
| 
 | 
 | ||||||
|     gpio_put(CS, 1); |     gpio_put(CS, 1); | ||||||
| 
 | 
 | ||||||
|  | @ -194,7 +204,8 @@ namespace pimoroni { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   bool Inky73::is_pressed(Button button) { |   bool Inky73::is_pressed(Button button) { | ||||||
|     return sr.read() & button; |     //return sr.read() & button;
 | ||||||
|  |     return false; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -25,6 +25,7 @@ namespace pimoroni { | ||||||
|     uint SCK    = SPI_DEFAULT_SCK; |     uint SCK    = SPI_DEFAULT_SCK; | ||||||
|     uint MOSI   = SPI_DEFAULT_MOSI; |     uint MOSI   = SPI_DEFAULT_MOSI; | ||||||
|     uint RESET  = 27; //25;
 |     uint RESET  = 27; //25;
 | ||||||
|  |     uint BUSY   = 6; | ||||||
| 
 | 
 | ||||||
|     uint SR_CLOCK = 8; |     uint SR_CLOCK = 8; | ||||||
|     uint SR_LATCH = 9; |     uint SR_LATCH = 9; | ||||||
|  | @ -32,7 +33,7 @@ namespace pimoroni { | ||||||
| 
 | 
 | ||||||
|     bool blocking = false; |     bool blocking = false; | ||||||
| 
 | 
 | ||||||
|     ShiftRegister<uint8_t> sr = ShiftRegister<uint8_t>(SR_CLOCK, SR_LATCH, SR_DATA); |     //ShiftRegister<uint8_t> sr = ShiftRegister<uint8_t>(SR_CLOCK, SR_LATCH, SR_DATA);
 | ||||||
| 
 | 
 | ||||||
|   public: |   public: | ||||||
|     enum Button : uint8_t { |     enum Button : uint8_t { | ||||||
|  |  | ||||||
		Ładowanie…
	
		Reference in New Issue
	
	 Phil Howard
						Phil Howard