Форум по микроконтроллерам: Помогите разобраться с компаратором - Форум по микроконтроллерам

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Помогите разобраться с компаратором

#1 Пользователь офлайн   sharmax 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 2
  • Регистрация: 11 Июль 19

Отправлено 11 Июль 2019 - 16:38

Коллеги, добрый день! В микроконтроллерах я еще пока как слепой котенок, но очень надеюсь на вашу помощь.
Пятый день уже не могу понять, как работает аналоговый компаратор в Attiny 13A... По порядку:
1. Собираем на макетной плате схему - см. вложение.
2. В мастер-построителе программ Code vision AVR конфигурирую порт 2 как выходной с нулевым исходным состоянием, все остальные порты - на вход, но у pb0 и pb1 подтяжку не включаю, у остальных (неиспользуемых) - включаю. Также на вкладке "компаратор" включаю этот компаратор, соответствующей галочкой подключаю ИОН к выводу 5. Неясными остаются назначения галочек "Negative input multiplexer" и "Disable digital input buffers" (1 и 2) - их не трогаю? то есть, не включаю. Галочку "Analog comparator interrupt" также оставляю выключенной, поскольку пока еще не до прерываний.
3. Дополняю заготовку программы соответствующим циклом if - else, который отслеживает состояние бита ACO и соответствующим образом изменяет состояние порта 2, к которому подключен контрольный светодиод.


#include <tiny13a.h>

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=Out Func1=In Func0=In
// State5=P State4=P State3=P State2=0 State1=T State0=T
PORTB=0x38;
DDRB=0x04;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x00;

// Analog Comparator initialization
// Analog Comparator: On
// The Analog Comparator's positive input is
// connected to the Bandgap Voltage Reference
ACSR=0x40;
ADCSRB=0x00;
// Digital input buffer on AIN0: Off
// Digital input buffer on AIN1: Off
DIDR0=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

while (1)
{if (ACO==1) {PORTB.2=1;}
else {PORTB.2=0};
};
}
4. Дальше как обычно - прошиваю МК и устанавливаю его в макетную плату, подаю напряжение. И ничего не происходит - при любом положении движка подстроечного резистора светодиод гореть не желает. На 5 выводе МК напряжение 0,5В, неизменно (хотя, как я понимаю, должно быть 1,2В - мы же подключили к нему ИОН), на 6 выводе напряжение, как и положено, изменяется в зависимости от угла поворота движка.
Также проводил опыт - отключал ИОН от 5 вывода и подавал на него 3В с резистивного делителя - компаратор по прежнему работать не хочет.
Что я делаю не так? Заранее спасибо за ответы.
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей