Доброго времени суток товарищи!
Написал небольшой код для работы с компаратором. Есть сложность с чтением из регистра ACSR, не получается считать 5й разряд в котором находится значения выхода компаратора.
Вот код:
#define F_CPU 1000000UL// тактовая частота(Гц)
// Библиотеки
#include <avr/io.h> //объявление общее для всех AVR
#include <avr/iom16.h> // файл с описанием объявлений для МК
void main(void) // обязательная функция
{
//Инициализация портов
//настраиваем порты B на вход
DDRB = 0xff;
PORTB = 0x00;
// настраиваем порт C на выход
DDRC = 0x00;
PORTC = 0x00;
//настраиваем компоратор
while(1){
// проверка 5го разряда регистра
if ((ACSR & (1<<5)) == 1) - вот эта проверка не работает. А так работает - if ((ACSR == 0b0010000)||(ACSR == 0b0011000) ) , но это какой то костыль кривой.
PORTC = 0xff;
else
PORTC =0x00;
}
}
Подскажите пожалуйста, как еще можно обратиться к отдельному разряду регистра?
Раздел: AVR
Написал небольшой код для работы с компаратором. Есть сложность с чтением из регистра ACSR, не получается считать 5й разряд в котором находится значения выхода компаратора.
Вот код:
#define F_CPU 1000000UL// тактовая частота(Гц)
// Библиотеки
#include <avr/io.h> //объявление общее для всех AVR
#include <avr/iom16.h> // файл с описанием объявлений для МК
void main(void) // обязательная функция
{
//Инициализация портов
//настраиваем порты B на вход
DDRB = 0xff;
PORTB = 0x00;
// настраиваем порт C на выход
DDRC = 0x00;
PORTC = 0x00;
//настраиваем компоратор
while(1){
// проверка 5го разряда регистра
if ((ACSR & (1<<5)) == 1) - вот эта проверка не работает. А так работает - if ((ACSR == 0b0010000)||(ACSR == 0b0011000) ) , но это какой то костыль кривой.
PORTC = 0xff;
else
PORTC =0x00;
}
}
Подскажите пожалуйста, как еще можно обратиться к отдельному разряду регистра?
Раздел: AVR