Младежи, имам следният
Ардуино код, който има за задача да подпали някакъв пин, когато се натисне бутона.
С този код проблем нямам. Работи кът пушка, обаче опитвайки се да го преобразувам пишейки го на C, срещам проблем. Стигнал съм до тук и смятам, че е правилна логиката ми, но нищо не се случва (сложих и някой друг коментар по кода)
#include <avr/io.h>
//#include <util/delay.h>
//#include <avr/sfr_defs.h>
int main(void) {
DDRB |= (1 << PORTB5); //Set port B pin 5 as output
DDRB &= ~(1 << PORTB0); //Set port B pin 0 as input
PORTB |= (1 << PORTB0); //Set port B pin 0 to 1 (HIGH)
while (1) {
if (!PORTB & (1<<PORTB0))) // Check if port B pin 0 equal to 1 (The button is pressed)
{
PORTB |= (1<<PORTB5); // turn led on
} else {
PORTB &= ~(1<<PORTB5); // turn led off
}
}
}
ПС. В Ардуино примера по-горе бутона е вързан към DDRD, с пин номер PD2. При мен е вързан към DDRB, PB0(PORTB0), пробвах и с PORTD същият шийт
По някакъв кода ми не отчита, че бутона е ON / OFF. Пробвах и с готова функция без резултат.
if (bit_is_clear(PORTB, PORTB0)) {
}