EmbeddedSystems/EmbeddedSystemsTHM/Taster.c

43 lines
1.0 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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);
}