Например TDA7294

Форум РадиоКот • Просмотр темы - Atmega88 не могу завести ШИМ 10 бит
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт янв 02, 2025 21:27:15

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Atmega88 не могу завести ШИМ 10 бит
СообщениеДобавлено: Пн мар 17, 2014 09:20:27 
Родился

Зарегистрирован: Пн мар 17, 2014 09:16:04
Сообщений: 2
Рейтинг сообщения: 0
Подниму тему. Мой моск уже сломан. Прошу совета.
Итак, камень Atmega88PA.
Какая-то чертовщина :) Делаю тест - простая программа на С для Codevision, версия 2.05.3, сгенерировано кодевизардом:
считываю показания ацп в 10 бит режиме, настраиваю таймер 1 на шим 10 бит WGM:7, из ацп выдаю в OCR1A, делю показания ацп на 4 и одним байтом шлю на платку с трехразрядным семисегментным индикатором, там тоже стоит мега, просто преобразует байт в три десятичных разряда и выводит на индикатор. Дополнительно в цикле опрашиваю нажатие кнопки и при нажатии вместо ацп/4 выдаю старший байт ацп. Для контроля выдаю шим и на OCR1A, и на OCR1В.
Кручу ручку переменника от минимума до максимума, на индикаторе показания меняются от 0 до 255 (ацп/4), при нажатии кнопки - от 0 до 3 (старший байт ацп) - все ок, ацп читает ровно, это часть работает. На выходе OCR1A вольтметр показывает изменение от 0 до 1,12В (62 по индикатору), сбрасывает в 0 и снова от 0 до 1,12В (124 по индикатору), и так 4 раза от мин до макс, как будто шим в 8-битном режиме работает, а не в 10-битном. А на выходе OCR1В все четко - напряжение изменяется от 0 до 4.95В ! Запись в OCR1A и OCR1В делаю друг за дружкой.

Чтение показаний ацп, сгенерировано кодевизардом:

Спойлер// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x60;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}


Упрощеннй текст программы:

СпойлерTCCR1A = 0b10100011; // 0xA3 Старт таймера 1 WGM: 7) PWM 10bit fast
TCCR1B = 0b00001010 ; // 0x0А CK=8MHz, T_PWM= CK/8*1024 = 1024 мкс F_PWM 1кГц
while (1)
{
delay_ms(20);
SPEED= read_adc(1); // Чтение результата АЦП

OCR1AH = (char)(SPEED>>8); // Загрузка OCR1A
OCR1AL = (char)SPEED;

OCR1BH = (char)(SPEED>>8); // Загрузка OCR1В
OCR1BL = (char)SPEED;

PWM=SPEED/4; //

if(PIND.3 == 0){
putchar(ADCH); // ВЫВОД В USART
goto A6;
}

putchar(PWM); // ВЫВОД В USART
A6:
}


Что не так?
Есть две таких платы, поведение идентичное. Сегодня попробую мегу заменить на особь из другой партии.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega88 не могу завести ШИМ 10 бит
СообщениеДобавлено: Пн мар 17, 2014 13:30:58 
Вымогатель припоя
Аватар пользователя

Карма: -2
Рейтинг сообщений: 105
Зарегистрирован: Ср июн 19, 2013 08:10:48
Сообщений: 577
Откуда: Москва, СПб, Липецк, Рязань
Рейтинг сообщения: 1
Я бы не стал опираться на показания вольтметра, хотя действительно странно, что для одного вывода он нормально показывает, а для другого - меньше при одинаковых значениях. А попробуйте выводить на экран значение переменной, в которой результат АЦП, после загрузки в OCRA. А потом измените и выводите после загрузки в OCRB. На предмет меняется переменная или нет. И попробуйте загрузить в OCRA, а потом OCRB=OCRA; И что если поменять очередность загрузки в регистры?
А что Протеус показывает?
Упрощенный текст программы работает?
Дайте полный текст


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega88 не могу завести ШИМ 10 бит
СообщениеДобавлено: Пн мар 17, 2014 13:40:26 
Родился

Зарегистрирован: Пн мар 17, 2014 09:16:04
Сообщений: 2
Рейтинг сообщения: 0
Сегодня ориентировочно в 6:30 утра по Киеву снизошел ко мне великий и могучий бог программеров H_BYTE (условно так его назовем) и воцарилось царсивие его на моей отладочной плате :) А короче - проснулся, еще три раза перепроверил код, скомпилил и залил в камень - смотрю, уже при вращении переменника напряжение меняется от 0 до 1,12В, думаю, уже хорошо. Смотрю внимательнее плату, по схеме OCR1A рулит светодиодом оптопары PC817 через резистор 330 Ом, вижу что вольметром стал уже после резистора. Тыкаюсь вольтметром напрямую на ногу контроллера - ЕСТЬ СИГНАЛ! 0 - 4,95В при повороте переменника от нуля до максимума. Зашил и во вторую плату - все ОК.
Я так и не понял, что это были за глюки, может чего накосячил с настройкой таймеров, старый код не сохранил. Всем спасибо за терпение и умные мысли, тему можно считать закрытой, рабочий код приведен в предыдущем сообщении.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Atmega88 не могу завести ШИМ 10 бит
СообщениеДобавлено: Пн мар 17, 2014 13:45:32 
Вымогатель припоя
Аватар пользователя

Карма: -2
Рейтинг сообщений: 105
Зарегистрирован: Ср июн 19, 2013 08:10:48
Сообщений: 577
Откуда: Москва, СПб, Липецк, Рязань
Рейтинг сообщения: 1
Усталость сказывается. ) отдыхать тоже надо! ;)


Вернуться наверх
 
Новое высоковольтное герконовое реле HR12-V от HONGFA для передовых разработок

Компания Hongfa представляет новое высоковольтное мощное реле HR12-V с нормально разомкнутыми контактами. Герконовые реле имеют ряд преимуществ по сравнению с электромеханическими. Среди них: малый размер, высокая скорость срабатывания, стабильная по характеристикам и взрывобезопасная коммутация цепей и экономичность энергопотребления. Новое реле HR12-V способно коммутировать мощность 100 Вт в цепях постоянного тока, значения которого лежат в области 10 мА/1,5 кВ…1,5 А/60 В. Температура эксплуатации составляет -40…105°C.

Подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y