|  |  |  | @ -42,22 +42,22 @@ static void select_col(uint8_t col); | 
			
		
	
		
			
				
					|  |  |  |  |    reaches the value in the output compare register, | 
			
		
	
		
			
				
					|  |  |  |  |    and are turned on when it reaches TOP (=256). */ | 
			
		
	
		
			
				
					|  |  |  |  | static | 
			
		
	
		
			
				
					|  |  |  |  | void setup_leds(void) { | 
			
		
	
		
			
				
					|  |  |  |  |   TCCR1A |=      // Timer control register 1A
 | 
			
		
	
		
			
				
					|  |  |  |  |     (1<<WGM10) | // Fast PWM 8-bit
 | 
			
		
	
		
			
				
					|  |  |  |  |     (1<<COM1B1)| // Clear OC1B on match, set at TOP
 | 
			
		
	
		
			
				
					|  |  |  |  |     (1<<COM1C1); // Clear OC1C on match, set at TOP
 | 
			
		
	
		
			
				
					|  |  |  |  |   TCCR1B |=      // Timer control register 1B
 | 
			
		
	
		
			
				
					|  |  |  |  |     (1<<WGM12) | // Fast PWM 8-bit
 | 
			
		
	
		
			
				
					|  |  |  |  |     (1<<CS12);   // Prescaler 256
 | 
			
		
	
		
			
				
					|  |  |  |  |   OCR1B = 250;    // Output compare register 1B
 | 
			
		
	
		
			
				
					|  |  |  |  |   OCR1C = 250;    // Output compare register 1C
 | 
			
		
	
		
			
				
					|  |  |  |  |   // LEDs: LED_A -> PORTB6, LED_B -> PORTB7
 | 
			
		
	
		
			
				
					|  |  |  |  |   DDRB  &= 0x3F; | 
			
		
	
		
			
				
					|  |  |  |  |   PORTB &= 0x3F; | 
			
		
	
		
			
				
					|  |  |  |  | void setup_leds(void) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     TCCR1A |=      // Timer control register 1A
 | 
			
		
	
		
			
				
					|  |  |  |  |         (1<<WGM10) | // Fast PWM 8-bit
 | 
			
		
	
		
			
				
					|  |  |  |  |         (1<<COM1B1)| // Clear OC1B on match, set at TOP
 | 
			
		
	
		
			
				
					|  |  |  |  |         (1<<COM1C1); // Clear OC1C on match, set at TOP
 | 
			
		
	
		
			
				
					|  |  |  |  |     TCCR1B |=      // Timer control register 1B
 | 
			
		
	
		
			
				
					|  |  |  |  |         (1<<WGM12) | // Fast PWM 8-bit
 | 
			
		
	
		
			
				
					|  |  |  |  |         (1<<CS12);   // Prescaler 256
 | 
			
		
	
		
			
				
					|  |  |  |  |     OCR1B = 250;    // Output compare register 1B
 | 
			
		
	
		
			
				
					|  |  |  |  |     OCR1C = 250;    // Output compare register 1C
 | 
			
		
	
		
			
				
					|  |  |  |  |     // LEDs: LED_A -> PORTB6, LED_B -> PORTB7
 | 
			
		
	
		
			
				
					|  |  |  |  |     DDRB  &= 0x3F; | 
			
		
	
		
			
				
					|  |  |  |  |     PORTB &= 0x3F; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | inline | 
			
		
	
		
			
				
					|  |  |  |  | uint8_t matrix_rows(void) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
	
		
			
				
					|  |  |  | @ -82,7 +82,7 @@ void matrix_init(void) | 
			
		
	
		
			
				
					|  |  |  |  |     setup_leds(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // initialize matrix state: all keys off
 | 
			
		
	
		
			
				
					|  |  |  |  |     for (uint8_t i=0; i < MATRIX_ROWS; i++)  { | 
			
		
	
		
			
				
					|  |  |  |  |     for (uint8_t i = 0; i < MATRIX_ROWS; i++)  { | 
			
		
	
		
			
				
					|  |  |  |  |         matrix[i] = 0; | 
			
		
	
		
			
				
					|  |  |  |  |         matrix_debouncing[i] = 0; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |