Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
09.02.2007, 21:33
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
ШИМ АВР проблема
Не могу вывести на выход ОС1А (МК Мега 16) 0 вольт. При записи «0» в регистры OCR1AH и OCR1AL на выход ОС1А выводится +5 вольт. Тот же результат и при максимальном значении 1023. А ведь должно быть при каком то из этих значении 0 вольт, так написано в ДатаШит. Что я делаю не так?
DDRD=0x20;
TCCR1A= 0x83; // 10000011
TCCR1B=0x09; // 00001001
pwm = 1023 или pwm=0; // при любом варианте на выходе ОС1А +5в
OCR1AH = (char)(pwm››8);
OCR1AL = (char)pwm;
Программа пишется в CodeVision, моделируется в Протеусе, может проблема в нем?
|
|
|
|
09.02.2007, 21:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Ее еще сконфигурировать надо как выход в рег. DDR.
А так подтяжка при входе дает +5В.
|
|
|
|
09.02.2007, 22:03
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Сообщение от lsa
|
Ее еще сконфигурировать надо как выход в рег. DDR.
А так подтяжка при входе дает +5В.
|
Это я не все скопировал . В программе эта нога настроена как выход. Проблема похоже не в этом
|
|
|
|
09.02.2007, 22:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Вот работает:
Код:
|
$regfile = "m16def.dat"
$crystal = 1000000
Ddrd.5 = 1
Config Timer1 = Pwm , Prescale = 1 , Compare A = Toggle
Tccr1a = &H83
Start Timer1
Dim Pwm9 As Integer
Pwm9 = 950
Ocr1ah = High(pwm9)
Ocr1al = Low(pwm9)
End |
|
|
|
|
10.02.2007, 02:10
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Твой код работает.Но мне нужно на С для CodeVision
|
|
|
|
10.02.2007, 03:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Сообщение от Zemlyanov
|
Твой код работает.Но мне нужно на С для CodeVision
|
Просто разные режимы.
TCCR1A= 0x83; // 10000011
TCCR1B=0x09; // 00001001
Это с переменной разрешающей способностью.
TCCR1A= 0x83; // 10000011
TCCR1B=0x01; // 00000001
Это с 10 битной (как в примере с Баском.)
Ocr1a=1023 и 0В на выходе
Ocr1a=0 и +5В на выходе.
Только учитывать что внутри диапазона инверсное заполнение.
(при 1022 примерно 99%, а уже при 1023 0%)
|
|
|
|
10.02.2007, 03:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от Zemlyanov
|
мне нужно на С для CodeVision
|
Пожалуйста.
avr123.nm.ru/z8.htm
там ШИМ на Си для CodeVisionAVR примерами с симуляцией в VMLAB.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
10.02.2007, 21:35
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Сообщение от avr123-nm-ru
|
Сообщение от Zemlyanov
|
мне нужно на С для CodeVision
|
Пожалуйста.
avr123.nm.ru/z8.htm
там ШИМ на Си для CodeVisionAVR примерами с симуляцией в VMLAB.
|
Я смотрел пример. Там тоже при pwm_val=0 или 1023 на выходе +5 в .
Ниже скриншот показания осцилографа при pwm_val=1023 на обоих выходах. Я не пойму что за скачки на графике, должны быть чистые 0 или 5вольт? Посмотрите в чем дело, прикрепил архив с HEX и COFF файлом для мега16
Вот исходник (укороченный от avr123.nm.ru)
#include ‹mega16.h›
#include ‹delay.h›
#include ‹stdio.h›
unsigned int pwm_val;
void main(void)
{
PORTD=0x00;
DDRD=0x30; // 0011 0000 PD5(OC1A) PD4(OC1B) - PWM Timer1 OUT
// DDRD=0x20; // 0010 0000 PD5 (OC1A) - PWM Timer1 OUT
TCCR1A=0xA3;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
ACSR=0x80;
SFIOR=0x00;
OCR1BH = 0x03; // PWM(PD4)
OCR1BL = 0xFF; // PWM(PD4)
while (1){
pwm_val = 1023;
OCR1AH = (char)(pwm_val››8);
OCR1AL = (char)pwm_val;
};
}
Аналогичный код на Бейсике (компилятор Bascom Avr) в Протеусе работает нормально.
А на С(компилятор CodeVision, пробовал компилить на нескольких версиях) выдает в Протеусе бред какой то. Обидно, пол года назад делал аналогичную программу все работала нормально, жаль исходника не осталось, может я что то забыл за это время?
Помогите !!!
-- Прилагается рисунок: --
Прикрепленный файл: 106754.rar
|
|
|
|
10.02.2007, 23:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
дак мои то примеры работают. вы их укоротили и теперь не работает. значит ищите в укорочении - откатывайте назад почуть-чуть пока не заработает.
а SCOPE для ШИМ лучше в VMLAB.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
11.02.2007, 01:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Делал раньше я проект с управлением нагрузкой ШИМ.
Там разные режимы использовались.
Сегодня рассмотрел настройки 10битного ФАСТ.
Они такие
TCCR1A= 0x83
TCCR1B=0x09
Попробовал в Протеусе, не сходится с реальностью.
Попробовал на макетке и оказалось работает как надо.
Мой Протеус тоже выдал при 1023 провалы (в реальности такого нет, провалы появляются только при значениях например 1020).
Наверное ошибочка в симуляции этих режимов именно Протеуса.
В реальности, при изменении OCR1A от 0 до 1023 наблюдается ШИМ от 0 до 100% линейно и без инверсий и закидонов.
При OCR1A=0 ШИМ=0%
При OCR1A=511 ШИМ=50%
При OCR1A=255 ШИМ=25%
При OCR1A=1023 ШИМ=100%
Вот такие дела.
Компилировал 3 варианта - АВРСТУДИЯ, БАСКОМ, КОДЕВИЖН.
Результат одинаков.
Отличия только между реальностью и ПРОТЕУСОМ.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Сигнатура в АВР
|
Tolstopuz |
Микроконтроллеры, АЦП, память и т.д |
3 |
19.05.2009 22:20 |
!!! Проблема с организацией ШИМ для полумоста !!!
|
hubble |
Микроконтроллеры, АЦП, память и т.д |
28 |
12.09.2008 17:34 |
Проблема с ШИМ в attiny2313
|
Gonchar |
Микроконтроллеры, АЦП, память и т.д |
36 |
16.04.2008 22:07 |
Новый Баском АВР
|
Kabron |
Микроконтроллеры, АЦП, память и т.д |
42 |
15.02.2008 11:17 |
массивы в АВР
|
Limit |
Микроконтроллеры, АЦП, память и т.д |
9 |
02.05.2006 13:55 |
Часовой пояс GMT +4, время: 22:50.
|
|