AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
13.05.2014, 01:07
|
|
Временная регистрация
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Не работают таймеры ATmega48
Доброго времени суток!
Контроллер ATmega48, требуется выводить ШИМ с 4 выводов, для этого используется таймер 0 и 1, вывода соответственно PD5 PD6 PB1 PB2.
Пару дней уже мучаюсь и не могу понять почему нет выхода ШИМ на эти вывода. Скурил даташит, но так и не понял. С МК типа ATmega8 или ATmega16 проблем никогда не возникало, но с этим совсем в ступоре. Выходы при этом ведут себя хитро, выход ШИМ есть только на ножке PB1, а на выводе PB2 уровнем в полвольта (видимо наводка). Без включения таймеров и манипуляциями через PORT ноги ведут себя как положено.
Может есть какая хитрость ?
Код на рисунке во вложении.
|
|
|
|
13.05.2014, 01:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
|
Re: Не работают таймеры ATmega48
Регистры надо грузить через out
out TCCR0x,r16
__________________
Мелочи не решают главного. Они решают всё!
|
|
|
|
13.05.2014, 09:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,792
Сказал спасибо: 2,912
Сказали Спасибо 3,120 раз(а) в 2,111 сообщении(ях)
|
Re: Не работают таймеры ATmega48
Сообщение от gary2007
|
Регистры надо грузить через out
out TCCR0x,r16
|
1. Можно использовать как STx, так и OUT.
2. Но в случае с mega48/88/168/328 только STx, т.к. с непонятного перепугу Atmel перенёс почти все регистры ввода-вывода в пространство ОЗУ.
|
|
|
|
13.05.2014, 10:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Не работают таймеры ATmega48
А можно пользоваться АлгоритмБилдером - всё тот же Ассемблер со 100%-ным контролем кода, только он сам знает, через какие команды куда писать... Я даже сейчас часто подсматриваю, как он оформляет те же сравнения многобайтных чисел
|
|
|
|
13.05.2014, 11:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Не работают таймеры ATmega48
Сообщение от ForcePoint
|
1. Можно использовать как STx, так и OUT.
|
Можно, но только осторожно. OUT работает только с адресами до 63. Поскольку переферии много, то, естественно, 64 адресов не хватает. Поэтому со всем что имеет адрес выше 64 работать как с памятью.
|
|
|
|
13.05.2014, 13:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,792
Сказал спасибо: 2,912
Сказали Спасибо 3,120 раз(а) в 2,111 сообщении(ях)
|
Re: Не работают таймеры ATmega48
Для ассемблера использую макросы из AVR001, они сами выбирают нужные команды в зависимости от диапазона адресов.
А по сути вопроса - вроде никакого криминала.
|
|
|
|
13.05.2014, 21:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
|
Re: Не работают таймеры ATmega48
У меня для мега88 если смотреть листинг IAR компилятора, обращение к регистрам адрес которых меньше 100(дес) идет через out. Выше - через sts.
black27512, предлагаю Вам загнать свой код в СИ, и посмотреть ассемблерный листинг.
Дело 5-ти минут.
__________________
Мелочи не решают главного. Они решают всё!
|
|
|
|
24.06.2014, 10:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 02.03.2011
Адрес: Россия, КБР
Сообщений: 629
Сказал спасибо: 108
Сказали Спасибо 596 раз(а) в 334 сообщении(ях)
|
Re: Не работают таймеры ATmega48
Лень скачивать DataSheet... PB2 не имеет альтернативной функции? например JTAG? если да - пока фьюзы не настроишь не заработает
|
|
|
|
24.06.2014, 11:12
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Не работают таймеры ATmega48
Сообщение от vynt
|
Лень скачивать DataSheet... PB2 не имеет альтернативной функции? например JTAG? если да - пока фьюзы не настроишь не заработает
|
Не имеет - mega48 jtag не поддерживает, только debugwire (оно через reset работает).
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:26.
|
|