Мелкие вопросы по МК и ПЛИС.
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Все возможно. Только сложно будет такой точности напряжения добиться.
Fucking static initialization order fiasco
- КРАМ
- Друг Кота
- Сообщения: 25172
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Atmega 48 - ADC (AREF - напряжение?) - Компаратор
amd9800 писал(а):Могу ли я подать на AREF например образцовое напряжение 0,512 Вольт ?
Подать конечно можно, но получить что либо в результате - нет.
Даташит определяет МИНИМАЛЬНОЕ значение референсного напряжения - 2(ДВА) Вольта.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Подать-то может и можно, только сразу же вырастет шум и упадет точность, кроме того надо очень тщательно разводить шины аналогового питания контроллера, особенно общий провод - 2 миливольта навести там очень просто - соседняя дорожка с током порядка 100мА, сам ток по этой же дорожке в десяток милиампер - и твои 2мВ падения имеешь, в итоге кроме шума самого АЦП добавится непредсказуемый шум по шине питания.
Re: Мелкие вопросы по МК и ПЛИС.
Понял. Тогда получается надо усилить сигнал с помощью ОУ ?
И как быть с таким описанием в даташите. Вы пишите про 2 Вольта а у атмеги48 встроенное 1,1 вольта, что то у вас не вяжется.
The reference voltage for the ADC (VREF) indicates the conversion range for the ADC. Single ended channels that exceed VREF will result in codes close to 0x3FF. VREF can be selected as either AVCC, internal 1.1V reference, or external AREF pin.
И как быть с таким описанием в даташите. Вы пишите про 2 Вольта а у атмеги48 встроенное 1,1 вольта, что то у вас не вяжется.
The reference voltage for the ADC (VREF) indicates the conversion range for the ADC. Single ended channels that exceed VREF will result in codes close to 0x3FF. VREF can be selected as either AVCC, internal 1.1V reference, or external AREF pin.
Последний раз редактировалось amd9800 Вс июн 29, 2014 23:21:31, всего редактировалось 1 раз.
- КРАМ
- Друг Кота
- Сообщения: 25172
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
Да, именно так и получается.
Причем выбирать ОУ нужно с учетом диапазона измеряемых напряжений...
Не все они Rail-to-Rail... Причем не все по входу и не все по выходу...
Причем выбирать ОУ нужно с учетом диапазона измеряемых напряжений...
Не все они Rail-to-Rail... Причем не все по входу и не все по выходу...
Re: Мелкие вопросы по МК и ПЛИС.
"КРАМ" скажите пожалуйста где в даташите atmega 48 указанно 2 вольта?
Последний раз редактировалось amd9800 Вс июн 29, 2014 23:38:56, всего редактировалось 1 раз.
- КРАМ
- Друг Кота
- Сообщения: 25172
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
Я ошибся. Просто бегло прочел название Вашего контроллера и посмотрел в даташит на 8-ую Мегу.
Re: Мелкие вопросы по МК и ПЛИС.
возможно ли на Atmega48 так настроить таймер?
Например если чип работает на частоте 8МГц и мне необходима частота ШИМа 25Кгц.
То можно настроить 16 битный таймер (Timer 1) чтоб он тикал до 320 и потом таймер сбрасывался ?
Поскольку у Atmega 48 два регистра сравнения на каждый таймер то первый регистр сравнения ставим 320, а второй будет принимать динамические значения от 0 до 320. И он будет связан с выходом OC1B. Таким образом ШИМ будет от 0 до 320 по дискретизации и частота будет 25КГц.
Например если чип работает на частоте 8МГц и мне необходима частота ШИМа 25Кгц.
То можно настроить 16 битный таймер (Timer 1) чтоб он тикал до 320 и потом таймер сбрасывался ?
Поскольку у Atmega 48 два регистра сравнения на каждый таймер то первый регистр сравнения ставим 320, а второй будет принимать динамические значения от 0 до 320. И он будет связан с выходом OC1B. Таким образом ШИМ будет от 0 до 320 по дискретизации и частота будет 25КГц.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Это режим работы таймера 8 или 9.
Re: Мелкие вопросы по МК и ПЛИС.
Не понял вашего ответа
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Ну ёпта, ты даташит на контроллер открывал? Там все режимы работы таймера расписаны, так нужный тебе режим работы - 8 или 9. Впрочем, номер режима работы задается определенными битами управляющего регистра. Но рекомендую все-таки ознакомится с даташитом, т.к. от режима работы таймера зависят и остальные необходимые настройки.
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
Мало того, что грубите, еще и неверно ответили. Подойдет любой режим PWM в котором можно установить значение TOP: 8,9,10,11,14,15.


Ставим плюсы: )
Re: Мелкие вопросы по МК и ПЛИС.
Alexeyslav писал(а):Ну ёпта, ты даташит на контроллер открывал? Там все режимы работы таймера расписаны
Уважаемый Алексей 8 бит это отчет до 256.
А 9 бит это уже отчет до 512.
А мне нужно получить частоту 25КГц при частоте чипа 8МГц. Вы наверное даже не поняли моего вопроса а отвечаете грубо и непрофессионально. Подозреваю что вы очень плохо разбираетесь в микроконтроллерах.
И кстати даташит я не только открывал но и читал, и про режимы 8бит 9бит и 10бит я знаю.
ibiza11 писал(а):Подойдет любой режим PWM в котором можно установить значение TOP: 8,9,10,11,14,15.
Хорошо выбираю я режим 9.
В регистре TCCR1B выставляю биты WGM13 WGM12 в положение - 1 0
В регистре TCCR1A WGM11 WGM10 в положение - 0 1
А дальше какие действия?
Может вы не поняли постановку задачи?
Допустим мне надо чтоб ШИМ работал по такому принципу. В одном регистре сравнения я задаю значение к примеру 10. Выход PORTB.2 (OC1B) сигнал будет изначально Высоким таймер потикал 10 тактов и поменял сигнал на выходе на Низкий потом потикал еще 310 таков до 320 и таймер сбросился в ноль, сигнал стал высоким. И опять все с начала.
Выставил я временно вместо 320 -> 256 чтоб сравнить частоту с таймером 0 (на нем у меня обычный 8 бит ШИМ - частота получается 31,2 КГц)
TCCR1A=0b10100001;
TCCR1B=0b00010001;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0xFF;
OCR1BH=0x00;
OCR1BL=0x20;
Так непонятно почему получается частота ШИМ 1 в два раза ниже хотя должна быть одинаковой.
Желтый это образцовый сигнал из протеуса на 24КГц
Синий и Красный это выходы А и Б от таймера 0
Зеленый это выход Б от таймера 1
Выход А постоянно высокий
- Вложения
-
- PWM.PNG
- (8.52 КБ) 618 скачиваний
Re: Мелкие вопросы по МК и ПЛИС.
Наверно поэтому. Сравните иллюстрации режимов 9 и 15. Есть существенная разница, не так ли. Именно поэтому здесь был предложен режим 14 или 15.
In phase and frequency correct PWM mode the counter is incremented until the counter value matches either the
value in ICR1 (WGM13:0 =, or the value in OCR1A (WGM13:0 = 9). The counter has then reached the TOP and
changes the count direction. The TCNT1 value will be equal to TOP for one timer clock cycle. The timing diagram
for the phase correct and frequency correct PWM mode is shown on Figure 16-9 on page 129. The figure shows
phase and frequency correct PWM mode when OCR1A or ICR1 is used to define TOP. The TCNT1 value is in the
timing diagram shown as a histogram for illustrating the dual-slope operation. The diagram includes non-inverted
and inverted PWM outputs. The small horizontal line marks on the TCNT1 slopes represent compare matches
between OCR1x and TCNT1. The OC1x Interrupt Flag will be set when a compare match occurs.
Последний раз редактировалось akl Пн июн 30, 2014 09:53:18, всего редактировалось 1 раз.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Хм, просто создалось такое впечатление что даташит не открывали. Чем же режимы 8 или 9 не подходят? не позволяют получить 25кГц при 8Мгц тактовой частоте? Просто TOP значение придется ставить не 320 а 160.
Кроме установки режима работы таймера(последним действием) надо будет установить режим работы выхода COM1B1:0(=0b10 или 0b11 в зависимости от полярности требуемых импульсов) в регистре TCCR1A, в OCR1A занести значение 160(=320/2) а OCR1B нужное значение ШИМ 0..159.
При этом желательно отключить таймер TCCR1B CS12:0 = 0b000 и после настойки и установки режима работы включить его TCCR1B CS12:0 = 0b001.
Кроме установки режима работы таймера(последним действием) надо будет установить режим работы выхода COM1B1:0(=0b10 или 0b11 в зависимости от полярности требуемых импульсов) в регистре TCCR1A, в OCR1A занести значение 160(=320/2) а OCR1B нужное значение ШИМ 0..159.
При этом желательно отключить таймер TCCR1B CS12:0 = 0b000 и после настойки и установки режима работы включить его TCCR1B CS12:0 = 0b001.
Re: Мелкие вопросы по МК и ПЛИС.
Alexeyslav писал(а):При этом желательно отключить таймер TCCR1B CS12:0 = 0b000 и после настойки и установки режима работы включить его TCCR1B CS12:0 = 0b001.
для чего надо отключать таймер, а потом включать?
Alexeyslav писал(а):Хм, просто создалось такое впечатление что даташит не открывали.
Впечатления у вас не правильные.
Как мне правильно определить какие пины использовать на Atmega 48.
Задача:
1. Выход под ШИМ - определился использовать OC1B (PB2)
2. Нужен целый порт для семи сегментного индикатора и 4 пина для катода поскольку он(индикатор) 4х значный
3. Нужен компаратор сравнивать один сигнал который постоянно меняется с одним постоянным напряжением
4. Нужно 2 Канала ADC я выбрал ADC6 и ADC7
5. 3 кнопки, но без вызова прерывания.
Re: Мелкие вопросы по МК и ПЛИС.
Вычёркиваете из схемы фиксированные производителем лапы (RESET, OC1B, AIN0, AIN1, ADC6, ADC7). Оставшиеся лапы назначаете самостоятельно, с учётом возможности совмещения функций ввода-вывода (индикация-кнопки).
Re: Мелкие вопросы по МК и ПЛИС.
В том то и дело что ни одного целого порта не остается для семисегментного индикатора и думаю как же быть?
Неудобно работать с пинами с разных портов.
Ну если так уж быть как объединить скажем 5 пинов одного порта и 3 другого порта как один целый 8 битовый массив?
Чтоб сразу записать 8 битовое значение.
Неудобно работать с пинами с разных портов.
Ну если так уж быть как объединить скажем 5 пинов одного порта и 3 другого порта как один целый 8 битовый массив?
Чтоб сразу записать 8 битовое значение.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Выключать, чтобы не было непредсказуемого поведения пока будете загружать регистры. Это крайне необходимо если ШИМ у вас управляет силовыми ключами иначе можно силовые ключи пожечь и т.д. и т.п.
Если вы это делаете в самом начале после сброса то дополнительно отключать не нужно, таймер и так стоит.
А если в прошивке используется "программный сброс" переходом на нулевое прерывание то это делать просто необходимо.
Учитывая целый ряд обстоятельств, лучше его отключить даже если знаете что он отключен - кто его знает куда потом в будущем пойдет этот код...
Если вы это делаете в самом начале после сброса то дополнительно отключать не нужно, таймер и так стоит.
А если в прошивке используется "программный сброс" переходом на нулевое прерывание то это делать просто необходимо.
Учитывая целый ряд обстоятельств, лучше его отключить даже если знаете что он отключен - кто его знает куда потом в будущем пойдет этот код...
немного доработать аппаратную часть, добавить регистр сдвига для сегментов - он потребует всего 3-х выводов от контроллера. В другом случае, если это решение неприемлемо - написать подпрограмму(назвать её что-то вроде set_segment) которая на входе возьмет один байт и распихает его по нужным портам используя логические выражения и прочее - да хоть побитно. Изменяя аппаратную конфигурацию достаточно будет просто переписать эту подпрограмму. Впрочем этот вариант универсален - программу переписывать не надо, а подпрограмма может с такой же эффективностью работать и с внешним регистром сдвига.ни одного целого порта не остается для семисегментного индикатора и думаю как же быть?
-
Wanderer123
- Родился
- Сообщения: 10
- Зарегистрирован: Пн июн 30, 2014 14:47:24
Re: Мелкие вопросы по МК и ПЛИС.
Добрый день! Попросили сделать УЗО с выводом на семисегментный индикатор тока утечки (дифференциального тока) в диапазоне 1-100мА. Хочу все это сделать на ATmega8. Как вывести данные с МК на индикатор я знаю, но как подружить трансформатор тока и АЦП МК нет. Буду благодарен за любую информацию. Заранее спасибо!