Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Обоснование выбора жидкокристаллического дисплея ⇐ ПредыдущаяСтр 6 из 6
Для отображения буквенно-цифровой информации DD2 выбираем микросхему HD44780 фирмы HITACHI. Эта микросхема фактически является промышленным алфавитно-цифровым ЖКИ-модулем. Выбор в качестве ЖКИ этой микросхемы обусловлен малым энергопотреблением, простотой использования и возможностью отображения всей необходимой информации. Алфавитно-цифровые ЖКИ-модули HD44780 фирмы HITACHI представляют собой недорогое и удобное решение, позволяющее сэкономить время и ресурсы при разработке новых изделий, при этом обеспечивают отображение большого объема информации при хорошей различимости и низком энергопотреблении. Будучи устройством с динамической индикацией, контроллер встроенный в ЖКИ - модуль циклически производит обновление информации на ЖКИ. Контроллер ЖКИ - модуля фирмы HITACHI содержит полный набор русских символов ASCII в прописном и строчном вариантах, поэтому он весьма удобен для отечественных применений.
Выбор и обоснование типов датчиков тока и Напряжения фирмы LEM. В течение 25 лет существования (с 1972 по 1997) компания ЛЕМ создавала широкий диапазон гальванически изолированных датчиков тока и напряжения, ставшие стандартами в области преобразований. Выбор датчика связан как с техническими, так и с экономическими параметрами. Среди технических параметров особое внимание нужно уделить следующим: - электрические воздействия; - механические воздействия; - температурные воздействия; - условия эксплуатации. В качестве датчика тока был выбран компенсационный датчик на основе эффекта Холла, датчики компенсационного типа используются в промышленных установках, для преобразования и контроля электрического тока. Основным недостатком этой технологии является потребление мощности на компенсацию тока. Эффект Холла вызывается силой Лоренца, которая действует на подвижные носители электрических зарядов в проводнике, когда на них действует магнитное поле перпендикулярно направлению тока. Тонкая пластина полупроводника пересекается вдоль током управления Iупр. (Рисунок 3.6). Магнитный поток В генерирует силу Лоренца FL, перпендикулярно направлению подвижных носителей зарядов, которые и образуют ток. Это ведет к изменению числа носителей зарядов на обоих концах пластины, и создает разницу потенциалов, которая является напряжением Холла VH.
Рисунок 3.6 — Пояснение электрических параметров эффекта Холла.
В то время как датчики прямого усиления дают выход напряжения Uвых, пропорциональный увеличенному напряжению Холла VH, компенсационные датчики обеспечивают выходной ток, пропорциональный напряжению Холла, который действует как сигнал обратной связи, чтобы компенсировать магнитное поле, создаваемое первичным током BP, магнитным полем, создаваемым полем выходного тока BS. Выходной ток намного меньше, чем IP, потому что катушка с NS витками предназначена для генерирования аналогичного магнитного потока (ампер-витков). Таким образом: Следовательно, индукция BS эквивалентна BP и их соответствующие ампер витки компенсируют друг друга. Таким образом, система действует при нулевом магнитном потоке в сердечнике (рисунок 3.7) Рисунок 3.7 - Пояснение принципа работы компенсационного датчика. Компенсационные датчики способны измерять постоянный ток, переменный ток и токи иной формы с гальванической развязкой. Они выделяются следующим: - отличная точность; - очень хорошая линейность; - малый температурный дрейф; - очень быстрое время отклика и широкий частотный диапазон; - не приводят к дополнительным потерям в измерительной цепи; В качестве датчика тока был выбран LTS 25-NP фирмы LEM. Это датчик для электрического преобразования токов: постоянного, переменного, импульсного и т.д. в пропорциональный выходной cигнал с гальванической развязкой между первичной(силовой) и вторичной (измерительной) цепями. Электрические параметры датчика тока LTS 25-NP: - IPN Номинальный входной ток, эфф.знач. 12 A ∙ вит; - IP Диапазон преобразования 0.. ± 80 A ∙ вит; - VSN Номинальное аналоговое выходное напряжение 2.5 ± (0.625·IP/IPN) B; - NS Число вторичных витков (± 0.1 %) 2000; - R L Сопротивление нагрузки ≥ 2 кОм; - RIM Встроенный измерительный резистор (± 0.5 %) 50 Ом; - TCRIM Температурный дрейф измерительного резистора < 50 ppm/K; - VC Напряжение питания (± 5 %) 5 B; - IC Потребляемый ток при IP = 0, VC = 5 V; 20+IS+(VOUT/RL)мА; - Vd Электрическая прочность изоляции, 50 Hz, 1 мин 3 кВ. Многопредельный компенсационный датчик на эффекте Холла, однополярное питание +5В, разработан для установки на печатную плату, изолирующий пластиковый негорючий корпус, адаптирован к применению в микропроцессорных и микроконтроллерных системах, встроенный измерительный резистор, расширенный диапазон преобразования, TA= - 40°C.. + 85°C Преимущества: - отличная точность, хорошая линейность; - очень низкий температурный дрейф; - оптимальное время задержки; - широкий частотный диапазон; - высокая помехозащищенность; - высокая перегрузочная способность. После датчика тока, или непосредственно на входе измерительного канала, включают неинвертирующий усилитель, так как он имеет большое входное сопротивление, что хорошо согласуется с предыдущим каскадом. Коэффициент усиления неинвертирующего усилителя: Т.к. усилитель неинвертирующий, то Таким образом требуемые номиналы резисторов равны: Обоснование выбора датчика напряжения В качестве датчика напряжения был выбран датчик компенсационного типа С, использующиеся в промышленности, где требуется высокая точность преобразования, например, в высокоточных приборах, диагностических и испытательных системах. Также благодаря высокой точности преобразований и абсолютной устойчивости к температуре, эти недавно разработанные датчики используются в лабораториях и для калибровки. В датчиках используется оригинальная система компенсации ампер-витков и встроенный электронно управляемый генератор. В датчики типа С встроены два сердечника Т1 и Т2, сделанные из магнитомягкого материала (Рисунок 3.8), каждый из которых имеет двухсекционную вторичную катушку NS с равным количеством витков. Первичная катушка NP – общая на два сердечника. Две вторичные катушки связаны последовательно. Генератор сигналов прямоугольной формы управляемой частоты (1) подает компенсационный ток IS на вторичную катушку (обмотку) сердечника Т1 (точка А), куда поступает и ток намагничивания Iµ. Рисунок 3.8 структурная схема датчика типа – С
Общая для двух вторичных обмоток точка В связана с выходом активного фильтра 2, который поглощает ток намагничивания Iµ сердечника Т1. Ток Iµ возникает в цепи (меняя полярность напряжения, управляющего генератором прямоугольных импульсов) сразу как только появляется насыщение. Полученная кривая гистерезиса симметрична и упомянутое число вторичных ампер-витков точно соответствует числу первичных ампер-витков. (IS + Iµ) x NS = IP x NP Так как ток намагничивания поглощается фильтром, ток, находящийся в Т2 – вторичный ток IS, без наложения пульсаций. Выходной ток в точке С, следовательно, будет: IS = IP x NP / NS, который преобразуется в выходное напряжение VM с помощью конвертера ток/напряжение 4. Электронная цепь разработана таким образом, чтобы автоматически компенсировать смещение выходного сигнала усилителя и просадку напряжения в пределах широкого температурного диапазона, исключая, тем самым, необходимость регулирования.
Датчики напряжения типа С Конструкция датчика предусматривает встроенный первичный резистор. Количество первичных ампер-витков меньше, чем у датчиков на эффекте Холла компенсационного типа (CV3-...означает 3 ампер-витка). Датчики напряжения CV могут преобразовывать напряжение до 7000 В с точностью 0.2 % и частотным диапазоном от 0 до 700 кГц. В качестве датчика напряжения был выбран CV3 – 200 фирмы LEM. Это датчик для электронного преобразования напряжений: постоянного, переменного, импульсного и т.д. в пропорциональный выходное напряжение с гальванической развязкой между первичной(силовой) и вторичной (измерительной) цепями. Электрические параметры датчика тока CV3 – 500: - VPN Номинальное входное напряжение, эфф.знач. 350 В; - VP Диапазон преобразования 0.. ± 500 B; - VSN Номинальное аналоговое выходное напряжение 10 В; - KN Коэффициент преобразования 500В/10В; - RL Нагрузочный резистор ≥ 1 кОм; - CL Емкость нагрузки ≤ 5нФ; - Vc Напряжение питания (± 5 %) ± 15В; - Vd Электрическая прочность изоляции, 50 Гц, 1 мин, 6 кВ. Преимущества: - отличная точность; - очень хорошая линейность; - низкий температурный дрейф; - высокая помехоустойчивость; - малое время отклика; - широкий частотный диапазон. Так как АЦП работает со «смещенными» аналоговыми сигналами. Нулевое входное напряжение воспринимается как отрицательное, + 2, 5 В на входе воспринимается как нуль, +5 В на входе воспринимается как положительное, равное +2, 5 В. В связи с этим ставится преобразователь уровня, представленного в виде делителя напряжения. Принимаем значение R2 = 1кОм, тогда
Для согласования выходной цепи датчика и входной цепи встроенного в микроконтроллер АЦП используется повторитель напряжения построенный на микросхеме DA3 типа ОР37. После датчиков тока и напряжения установлены два амплитудных ограничителя, для защиты по напряжению входа микроконтроллера.
Разработка ПО МПС
Алгоритм работы устройство
Данная программа предназначена для управления работой всего устройства в целом и выполнения функций в зависимости от нажатия той или иной кнопки. В начале работы программы осуществляется инициализация всего оборудования, то есть настройка портов однокристального микроконтроллера, установка режимов работы таймеров, АЦП, разрешение прерываний. После чего происходит инициализация жидкокристаллического индикатора. Далее микроконтроллер ожидает ввода значений тока, путем ввода значения напряжения изад соответствующего этому току, и выводит полученные значения на ЖКИ. После выполнения подпрограммы устранения броска тока микроконтроллер начинает выполнение основной программы, то есть определяет переход через ноль одной из трех фаз, затем запускается таймер ТС 0, и по прерыванию переполнения формирует управляющий для тиристора. Вследствие этого появляется напряжение на нагрузке. Начинается опрос измерительного канала, то есть микроконтроллер получает данные с датчика тока, сохраняет их в памяти, производит их непрерывное сравнение и таким образом определяет максимальное значение тока за период. При частоте работы АЦП 100 кГц будет производиться примерно 1828 опросов за период, что позволит определять амплитудное значение тока с минимальной погрешностью. Определив амплитудное значение тока микроконтроллер решает разностное уравнение и определяет следующий угол открытия и формирует управляющий сигнал для открытия ключа тем самым меняя угол открытия тиристоров в соответствии с выбранным законом регулирования. После этого данные о токе нагрузки выводятся на жидкокристаллический дисплей. Рисунок 18. Схема алгоритма работы устройства.
Заключение В результате выполнения выпускной квалификационной работы был разработан трехфазный управляемый выпрямитель с микропроцессорной системой управления. Предназначенный для регулирования выходной величины выпрямленного напряжения (тока). Устройство состоит из силой части и микропроцессорной системы управления. Выбранные датчики тока и напряжения фирмы LEM позволяет определить выходные значения тока и напряжения в цепи нагрузки. В качестве микропроцессорного блока управления был взят программируемый контроллер ATmega16. Применение данного микроконтроллера позволило значительно упростить схему системы управления, увеличить надёжность и функциональность выпрямителя.
Список литературы Лачин В. И. Электроника: учебное пособие для вузов / Савелов Н. С./ Ростов н/Д: Феникс, 2009. Полупроводниковые приборы: Транзисторы. Справочник/ В.Л. Аронов, А.В. Баюков, А.А. Зайцев и др. Под общ. Ред. Н.Н. Горюнова. – М.: Энергоатомиздат, 1983. – 904 с. Савин М. М. Теория автоматического управления: учеб. пособие для вузов /Елсуков В. С., Пятина О. Н.; под ред. В.И.Лачина; - Ростов н/Д: Феникс, 2007. Электроника и микропроцессорная техника. Дипломное проектирование систем автоматизации и управления: учебник/ Под ред. В.И.Лачина, Ростов н/Д: Феникс, 2007., 576 с. Григорьян С.Г. Разработка конструкции электронного узла: Методические указания к практическим занятиям по дисциплине “Конструирование электронных устройств” ЮРГТУ, Новочеркасск: ЮРГТУ, 2005. 55 с. Немцов М. В. Электротехника и электроника: учебник для вузов / М.: Высш. шк., 2007. Справочник по электролитическим конденсаторам/ М. Н. Дьяконов, В. И. Карабанов, В. И. Присняков и др.; Под общ. ред. И. И. Четверткова и В. Ф. Смирнова. – М.: Радио и связь, 1983. – 576 с. Бессонов Л. А. Теоретические основы электротехники. Москва.: Высшая школа, 1996. Резисторы: Справочник/В.В. Дубровский, Д.М. Иванов, Н.Я. Пратусевич и др.; Под ред. И.И. Четверткова и В.М. Терехова. – 2 изд., переработанное и дополненное. – М.: Радио и связь, 1991. – 528 с. Васильев А. Е. Микроконтроллеры. Разработка встраиваемых приложений: учеб. пособие для вузов / - М.: БХВ-Петербург, 2008. - 304 с. В.Г. Костиков, Е.М. Парфенов, В.А. Шахнов «Источники электропитания электронных средств» Москва, Горячая линия – Телеком 2001г. Крылов Е. В. Техника разработки программ. Кн. 2: учебник для вузов, в 2 кн. / Острейковский В. А., Типикин Н. Г.; - М.: Высш. шк., 2008. - 469 с. Тавернье К. PIC – микроконтроллеры. Практика применения. М.ДМК Пресс, 2003. Пирогова Е. В. – Проектирование и технология печатных плат, Москва, Форум, Инфра-М, 2005г. – 560 с. Хоровиц П., Хилл У. Искусство схемотехники в 2-х томах. Монография. Издание 3-е, стереотипное, Москва, «Мир», 1986г. Семенов Б. Ю. Силовая электроника: от простого к сложному Серия: Библиотека инженера/ М.: СОЛОН-Пресс, 2006. Гусев В. Г. Электроника и микропроцессорная техника: учебник для вузов / Гусев Ю. М.; / М.: Высш. шк., 2008. Бондарь И. М. Электротехника и электроника / Ростов н/Д: Изд. центр " МарТ", 2005.
Приложение А (обязательное) Перечень элементов.
Приложение Б (справочное) Листинг программы и подключаемых модулей.
Модуль LCD.c: НАЧАЛО функция отправки команды на LCD void send_cmd_to_LCD(unsigned char command)//приняли в переменную command код команды для отправки на LCD {
PORTC = (command & 0xF0); //устанавливаем ножки МК(PC7, PC6, PC5, PC4) согласно с старшими 4мя битами(тетрада) команды PORTC& =~(1< < 0); //PC0(RS) установили 0, т.е. передаем команду(не данные) PORTC|= (1< < 1); //PC1(E) синхронизация _delay_us(2); PORTC& =~(1< < 1); //PC1(E) синхронизация
PORTC = ((command & 0x0F) < < 4); //устанавливаем ножки МК(PC7, PC6, PC5, PC4) согласно с младшими 4мя битами(тетрада) команды PORTC& =~(1< < 0); //PC0(RS) установили 0, т.е. будим передаем команду PORTC|= (1< < 1); //PC1(E) синхронизация _delay_us(2); PORTC& =~(1< < 1); //PC1(E) синхронизация
_delay_us(50); //операция длится больше 43 микросекунд согласно спецификации } //КОНЕЦ функция отправки команды на LCD
//НАЧАЛО функция отправки 8 бит данных на LCD static int send_char_to_LCD(char data, FILE *stream)//приняли в переменную data символ для отправки на LCD { PORTC = (data & 0xF0); //устанавливаем ножки МК(PC7, PC6, PC5, PC4) согласно с старшими 4мя битами(тетрада) команды PORTC|= (1< < 0); //PC0(RS) установили 1, т.е. передаем команду PORTC|= (1< < 1); //PC1(E) синхронизация _delay_us(2); PORTC& =~(1< < 1); //PC1(E) синхронизация
PORTC = ((data & 0x0F) < < 4); //устанавливаем ножки МК(PC7, PC6, PC5, PC4) согласно с младшими 4мя битами(тетрада) команды PORTC|= (1< < 0); //PC0(RS) установили 1, т.е. передаем данные PORTC|= (1< < 1); //PC1(E) синхронизация _delay_us(2); PORTC& =~(1< < 1); //PC1(E) синхронизация(забирай)
_delay_us(50); //операция длится больше 43 микросекунд согласно спецификации
return 0; } //КОНЕЦ функция отправки 8 бит данных на LCD
//НАЧАЛО функция очистки экрана 1)Clear Display void cls() { send_cmd_to_LCD(0x01); //отправляем код команды очистки экрана на LCD _delay_ms(3); //ждем больше 1.53ms согласно спецификации } //КОНЕЦ функция очистки экрана 1)Clear Display
//НАЧАЛО функция перехода на вторую строку ( 8)Set DDRAM Address) void secondline() { //при режиме двух строк //Первая строка (DDRAM) начинается с адреса 0x00(hex) оканчивается адресом 0x27(hex) //Вторая строка (DDRAM) начинается с адреса 0x40(hex) оканчивается адресом 0x67(hex) //устанавливаем курсор(AC) по адресу 0x40(hex), т.е. на начало второй строки send_cmd_to_LCD(0xC0); //1100 0000(bin) _delay_ms(3); } //КОНЕЦ функция перехода на вторую строку ( 8)Set DDRAM Address)
//НАЧАЛО функция начальной инициализации ЖК дисплея void lcdinit() { //Power on
send_cmd_to_LCD(0x02); //для дисплея LM016L
//ждем больше 30ms согласно спецификации _delay_ms(60);
//6)FUNCTION SET //Определение параметров развертки, ширины шины данных //lcdcmd(0x20); //0010 0000(bin) 4 bit, 1 строка, 5*7 шрифт //lcdcmd(0x2C); //0010 1100(bin) 4 bit, 2 строка, 5*11 шрифт send_cmd_to_LCD(0x28); //0010 1000(bin) 4 bit, 2 строка, 5*7 шрифт
_delay_us(50); //по спецификации больше 39микросекунд
//4)DISPLAY ON/OFF CONTROL//Выбор режима отображения //lcdcmd(0x0C); //0000 1100(bin) включение экрана, выключение отображения курсора, курсор не мигает //lcdcmd(0x0D); //0000 1101(bin) включение экрана, выключение отображения курсора, курсор мигает send_cmd_to_LCD(0x0F); //0000 1111(bin) включение экрана, включение отображения курсора, курсор мигает
_delay_us(50); //по спецификации больше 39микросекунд
cls(); //очистка экрана
//3)Entry Mode Set//Выбор направления сдвига курсора или экрана //lcdcmd(0x07); //0000 0111(bin) -> инкрементирование, сдвиг всего экрана включен(влево) //lcdcmd(0x05); //0000 0101(bin) -> декрементирование, сдвиг всего экрана включен(вправо) send_cmd_to_LCD(0x06); //0000 0110(bin) -> инкрементирование, сдвиг всего экрана отключен
_delay_us(50); //по спецификации больше 39микросекунд
//initialization end
} //КОНЕЦ функция начальной инициализации ЖК дисплея
Листинг программы: #include< avr/io.h> #include < util/delay.h> #include < avr/interrupt.h> #define F_CPU 4000000UL #include < avr/pgmspace.h> //утилиты для работы с FLASH памятью МК #include < stdio.h> //Стандартные средства ввода / вывода (для потока 'stream') #include " lcd.h"
volatile int ALPHA; volatile int nABC; volatile int vvod;
//создаём поток mystdout_LCD //FILE — структура, содержащая информацию о потоке. static FILE stdout_LCD = FDEV_SETUP_STREAM(send_char_to_LCD, NULL, _FDEV_SETUP_WRITE); //создаем поток назначив функцию send_char_to_LCD для вывода, функцию для ввода не назначаем написав NULL, используем только вывод установив флаг _FDEV_SETUP_WRITE
//НАЧАЛО функция инициализации АЦП void ADC_INIT() {
//ADCSRA - регистр управления и состояния A ADCSRA|=(1< < 7); //7й бит (ADEN) РАЗРЕШИТЬ РАБОТУ АЦП //Выбор частоты преобразования АЦП. (установка коэффициента деления) ADCSRA|=(1< < 2)|(1< < 1)|(1< < 0); //2й бит (ADPS2), 1й бит (ADPS1), 0й бит (ADPS0) установить в 1, т.е. Коэфф.делен. 128 //Выбор режима работы АЦП ADCSRA|=(1< < 5); //5й бит (ADATE) - режим работы определяется содержимым разрядов регистра SFIOR
//SFIOR регистр специальных функций ввода-вывода SFIOR& =~(1< < 7)& ~(1< < 6)& ~(1< < 5); //Источник сигнала СТАРТ: 7бит (ADTS2) 6бит(ADTS1) 5бит(ADTS0) установить в 0, т.е режим непрерывного преобразования
//ADMUX - Регистр управления мультиплексором АЦП //выбор (ИОН) источника опорного напряжения ADMUX& =~(1< < 7)& ~(1< < 6); //внешний ион напряжения(5V) подключенный к выводу AREF(в STK500 снять перемычку AREF) //ВХОД АЦП ADMUX=0; //задействовать несимметричный вход ADC0(PA0)
} //КОНЕЦ функция инициализации АЦП
int main(void) { sei(); void Inital (void); Inital();
stdout =& stdout_LCD; stdout=& stdout_LCD;
lcdinit(); cls(); ADC_INIT(); char A, B, C, faza, key, last_key, CODE, last_ACP; int nkey=0; double adc_result_volts, adc_result; char Apred, Bpred, Cpred, alhaA; Apred =PIND; Bpred =PIND; Cpred =PIND; Apred & = 0b00001000; Bpred & = 0b00010000; Cpred & = 0b00100000;
char Sinx=0; while (1) // Главный цикл {
A=PIND; B=PIND; C=PIND; A & = 0b00001000; B & = 0b00010000; C & = 0b00100000; ALPHA=0xE5; key=(PINB& 0b01111111); switch (nkey) { case 0:
//если была нажата кнопка if ((key & 0b01111000 )! =0b01111000)//если изменилось состояние выводов PA3-PA6 {
last_key=key; nkey++;
break; } switch (PORTB& 0b111)//в зависимости от предыдущего состояния выводов PA2, PA1, PA0 { //устанавливаем новое состояние выводов PA2, PA1, PA0 case 0b011: PORTB=0b1111101; break; case 0b101: PORTB=0b1111110; break; case 0b110: PORTB=0b1111011; break; } break;
case 1:
if(( key & 0b01111000)==0b1111000) {nkey=0; switch (last_key) { case 0b1110110: CODE=1; break; //118(dec) case 0b1110101: CODE=2; break; //117 case 0b1110011: CODE=3;; break; //115 case 0b1101110: CODE=4;; break; case 0b1101101: CODE=5;; break; case 0b1101011: CODE=6;; break; case 0b1011110: CODE=7;; break; case 0b1011101: CODE=8;; break; case 0b1011011: CODE=9;; break; case 0b0111110: CODE=10;; break; case 0b0111101: CODE=0;; break; case 0b0111011: CODE=11;; break;
} vvod=vvod*10+CODE; }
break; }
// РАБОТА С АЦП if(ADCSRA& (1< < 4))//если преобразование завершено (т.е. установилась 1) в 4м бите(ADIF) {
//считать результат преобразования с регистра данных АЦП (ADC) adc_result=ADC;
//входное напряжение вычисляется по формуле Vin=(ADC*REF)/1024 adc_result_volts=(double)(adc_result*5)/1024;
char mystr[7]; //буфер для перевода числа в строку
//вывод числа с плавающей запятой sprintf(& mystr[0], " %.2f", adc_result_volts); //преобразовываем число с плавающей запятой в строку, 2 знака после запятой printf(" %s: ", & mystr[0]); //передаем строку на LCD(выводим напряжение) if(adc_result_volts! =last_ACP) {cls(); } last_ACP=adc_result_volts;
//если 6я ножка(PA5) то начинаем с начала с 1й ножки(PA0)
}
// ОТКРЫТИЕ ТИРИСТОРВ НА УГОЛ АЛЬФА switch(nABC)//угол по A, B, C { case 0: if(A! =Apred ) { Apred = A; if(A! =0) { TIFR& =~(1< < 1); TIMSK|=(1< < 0); //включить отработку прерывания ТС0 TCNT0=0xDE; faza=A; PORTD =0x00; } } if(B! =Bpred) { Bpred = B; if(B! =0) { faza=B; TIFR& =~(1< < 1); TIMSK|=(1< < 0); //включить отработку прерывания ТС0 TCNT0=0xDE; PORTD =0x00; } } if(C! =Cpred) { Cpred = C; if(C! =0) { TIFR& =~(1< < 1); TIMSK|=(1< < 0); //включить отработку прерывания ТС0 TCNT0=0xDE; faza=C; PORTD =0x00; } }
break; case 1: TIFR& =~(1< < 7); TIMSK& =~(1< < 0); //выключить отработку прерывания ТС0 TIMSK|=(1< < 6); //включить отработку прерывания ТС2 TCNT2=ALPHA; nABC++; break;
case 3: if(faza==A) PORTD|=(1< < 0); //подаем открывающие напряжение на тиристор if(faza==B) PORTD|=(1< < 1); if(faza==C) PORTD|=(1< < 2); TCNT2=0xF0; nABC++; break;
case 5: PORTD =0x00; nABC=0; faza=0; TIMSK& =~(1< < 6); //выключить отработку прерывания ТС2; nABC=0;
break; }//КОНЕЦ ОТСЧЕТА АЛЬФЫ
} return 0;
}
void Inital (void) {
DDRA=0x00; DDRB=0b00000111; //3x4 button matrix DDRC=0b11110011; //LCD DDRD=0b00000111; //выходы на тиристоры PD3-PB5 входы с схемы синхронизации PORTB =0b1111110; /* // инициализация АЦП ADMUX=0b00000111; ADCSRA=0b10000111; */ //инициализация TC0; TIMSK& =~(1< < 0); TCCR0 |= (1< < 2); //пред делитель х256
//TIMSK|=(1> > 0)|(1> > 6); //разрешение прерывания по переполнению //инициализация ТС2 TCCR2 |= (1< < 2)|(1< < 0); }
ISR(TIMER0_OVF_vect) { nABC++; }
ISR(TIMER2_OVF_vect) { nABC++;
}
Популярное:
|
Последнее изменение этой страницы: 2016-07-13; Просмотров: 787; Нарушение авторского права страницы