You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.0 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include <avr/io.h>
void
Taster_init (void){
DDRD &= ~(0b111<<5); /* Set bit 5-7 of Data Direction Register D as input */
DDRC &= ~(1<<2); /* Set bit 2 of Data Direction Register C as input */
PORTD |= (0b111<<5); /* Initialize bit 5-7 of PORTD as for pull up resistor */
PORTC |= (1<<PINC2); /* Initialize bit 2 of PORTC as for pull up resistor */
/** Disable JTAG so Pin 2 of PORTC can be used as a GPIO
* Command needs to be run twice - see MCU Control Register Description (23.8.1)
* Bits 7 JTD: JTAG Interface Disable
* [..] The application software must write this bit to the desired value
* twice within four cycles to change its value. [...]
*/
MCUCR |= (1<<JTD);
MCUCR |= (1<<JTD);
}
uint8_t
Taster1_get (void){
/* Check if pin is low
-> low active pin
-> button is pressed
-> return 1 */
return ((PIND & (1<<PIND7)) == 0);
}
uint8_t
Taster2_get (void){
return ((PIND & (1<<PIND6)) == 0);
}
uint8_t
Taster3_get (void){
return ((PIND & (1<<PIND5)) == 0);
}
uint8_t
Taster4_get (void){
return ((PINC & (1<<PINC2)) == 0);
}