|  |  |  |  |  |  | 
														
													
														
															|  |  | bool begin(void (*funct)(), unsigned int microseconds) { |  |  | bool begin(void (*funct)(), unsigned int microseconds) { | 
														
													
														
															|  |  | if (microseconds == 0 || microseconds > MAX_PERIOD) return false; |  |  | if (microseconds == 0 || microseconds > MAX_PERIOD) return false; | 
														
													
														
															|  |  | uint32_t cycles = (24000000 / 1000000) * microseconds - 1; |  |  | uint32_t cycles = (24000000 / 1000000) * microseconds - 1; | 
														
													
														
															|  |  | if (cycles < 36) return false; |  |  |  | 
														
													
														
															|  |  |  |  |  | if (cycles < 17) return false; | 
														
													
														
															|  |  | return beginCycles(funct, cycles); |  |  | return beginCycles(funct, cycles); | 
														
													
														
															|  |  | } |  |  | } | 
														
													
														
															|  |  | bool begin(void (*funct)(), int microseconds) { |  |  | bool begin(void (*funct)(), int microseconds) { | 
														
													
												
													
														
															|  |  |  |  |  |  | 
														
													
														
															|  |  | bool begin(void (*funct)(), float microseconds) { |  |  | bool begin(void (*funct)(), float microseconds) { | 
														
													
														
															|  |  | if (microseconds <= 0 || microseconds > MAX_PERIOD) return false; |  |  | if (microseconds <= 0 || microseconds > MAX_PERIOD) return false; | 
														
													
														
															|  |  | uint32_t cycles = (float)(24000000 / 1000000) * microseconds - 0.5; |  |  | uint32_t cycles = (float)(24000000 / 1000000) * microseconds - 0.5; | 
														
													
														
															|  |  | if (cycles < 36) return false; |  |  |  | 
														
													
														
															|  |  |  |  |  | if (cycles < 17) return false; | 
														
													
														
															|  |  | return beginCycles(funct, cycles); |  |  | return beginCycles(funct, cycles); | 
														
													
														
															|  |  | } |  |  | } | 
														
													
														
															|  |  | bool begin(void (*funct)(), double microseconds) { |  |  | bool begin(void (*funct)(), double microseconds) { | 
														
													
												
													
														
															|  |  |  |  |  |  | 
														
													
														
															|  |  | void update(unsigned int microseconds) { |  |  | void update(unsigned int microseconds) { | 
														
													
														
															|  |  | if (microseconds == 0 || microseconds > MAX_PERIOD) return; |  |  | if (microseconds == 0 || microseconds > MAX_PERIOD) return; | 
														
													
														
															|  |  | uint32_t cycles = (24000000 / 1000000) * microseconds - 1; |  |  | uint32_t cycles = (24000000 / 1000000) * microseconds - 1; | 
														
													
														
															|  |  | if (cycles < 36) return; |  |  |  | 
														
													
														
															|  |  |  |  |  | if (cycles < 17) return; | 
														
													
														
															|  |  | if (channel) channel->LDVAL = cycles; |  |  | if (channel) channel->LDVAL = cycles; | 
														
													
														
															|  |  | } |  |  | } | 
														
													
														
															|  |  | void update(int microseconds) { |  |  | void update(int microseconds) { | 
														
													
												
													
														
															|  |  |  |  |  |  | 
														
													
														
															|  |  | void update(float microseconds) { |  |  | void update(float microseconds) { | 
														
													
														
															|  |  | if (microseconds <= 0 || microseconds > MAX_PERIOD) return; |  |  | if (microseconds <= 0 || microseconds > MAX_PERIOD) return; | 
														
													
														
															|  |  | uint32_t cycles = (float)(24000000 / 1000000) * microseconds - 0.5; |  |  | uint32_t cycles = (float)(24000000 / 1000000) * microseconds - 0.5; | 
														
													
														
															|  |  | if (cycles < 36) return; |  |  |  | 
														
													
														
															|  |  |  |  |  | if (cycles < 17) return; | 
														
													
														
															|  |  | if (channel) channel->LDVAL = cycles; |  |  | if (channel) channel->LDVAL = cycles; | 
														
													
														
															|  |  | } |  |  | } | 
														
													
														
															|  |  | void update(double microseconds) { |  |  | void update(double microseconds) { |