Перейти к содержанию

Linskuit

Members
  • Постов

    4
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Саратов

Электроника

  • Стаж в электронике
    Менее года
  • Сфера радиоэлектроники
    Микроконтроллеры

Достижения Linskuit

Новичок

Новичок (1/14)

  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. Спасибо огромное, очень помогли разобраться, что и как работает. Оказывается все дело было в глобальной прерывании.
  2. А примера с протеусом у вас нет? Я проверяю на протеусе и ничего не работает
  3. Вот оно, даже как. Хорошо попробую))) Спасибо.
  4. Здравствуйте уважаемые! Задача такая, нужно чтобы в определенном диапозоне значений загорался определенный светодиод. К примеру (ADC>0 но ADC<256) и загорается 1 диод. Делал по подобным видео (там разбирали с LCD дисплеем). В протеусе конечно ничего не работает. Уверен что чего то в коде не хватает. Заранее спасибо. #define F_CPU 8000000 #include <avr/interrupt.h> #include <avr/io.h> #include <util/delay.h> int main(void) { DDRD=0xff; PORTD=0x00; //Настройка АЦП ADCSRA|= (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);//делитель 128 //ADMUX ADMUX|= (0<<REFS1) | (1<<REFS0)//опорное напряжение 5в | (0<<MUX3) | (0<<MUX2) | (0<<MUX1) | (0<<MUX0); ADCSRA|= (1<<ADEN); //включение АЦП int readADC() //считывание ацп { ADCSRA|= (1<<ADSC); //запуск преобразования while ((ADCSRA &(1<<ADSC))); //ожидание окончания преобразования } unsigned int voltage_ADC ;//переменная результата напряжения voltage_ADC = ADCW;//считываем значение преобразования if ((voltage_ADC >768) && (voltage_ADC <1023)) {PORTD = 0b00000010;} else if ((voltage_ADC >257) && (voltage_ADC <768)) {PORTD = 0b00000100;} else if ((voltage_ADC >0) && (voltage_ADC <256)) {PORTD = 0b00000001;} ADCSRA |= (1<<ADSC);//запускаем очередное преобразование while(1) { } }
×
×
  • Создать...