|
PWM mode таймера, на ATmega8535 |
|
|
|
Jul 23 2011, 12:28
|

Участник

Группа: Участник
Сообщений: 28
Регистрация: 6-04-09
Из: г. Ярославль
Пользователь №: 47 264

|
Решил написать прогу для ATmega8535 которая бы позволяла получить ШИМ сигнал для источника тока. Пишу в AVR studio на асме. Возникла проблема: хочу запустить fast PWM mode таймера выставляю биты WGM00 и WGM01 регистра TССR0 в единицы что соответствует данному режиму по даташиту, однако при компиляции в строке Waveform Generate Mode (окно I/O view) в столбце Value появляется значение CTC (другой режим таймера). При этом когда я перебрал все вариации битов WGM значение режима выставлялось или normal или CTC. Что не так делаю подскажите, вот код:
.include "m8535def.inc" .cseg .org 0 ldi r16, 0b00000111 out OCR0, r16 ldi r16, (1<<6)|(1<<5)|(1<<3)|(1<<0) out TCCR0, r16 ;ldi r16, (1<<3) ;out DDRB, r16
a: nop rjmp a
--------------------
Два элемента, которые наиболее часто встречаются в Вселенной - водород и глупость.
|
|
|
|
|
 |
Ответов
(1 - 6)
|
Jul 24 2011, 14:54
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (novichok @ Jul 23 2011, 21:28)  .include "m8535def.inc" .cseg .org 0 ldi r16, 0b00000111 out OCR0, r16 ldi r16, (1<<6)|(1<<5)|(1<<3)|(1<<0) out TCCR0, r16 ;ldi r16, (1<<3) ;out DDRB, r16
a: nop rjmp a Не надо так оформлять код! Используйте имена битов (WGM.. и другие), а не их порядковые номера. Тогда такие ошибки автоматом и сключаться.
--------------------
Выбор.
|
|
|
|
|
Jul 25 2011, 03:38
|

Участник

Группа: Участник
Сообщений: 28
Регистрация: 6-04-09
Из: г. Ярославль
Пользователь №: 47 264

|
Цитата(ILYAUL @ Jul 23 2011, 21:40)  Посмотрел, что закаывали то он и выставляет Режимы работают как надо, видимо косяк какой то в моей авр студио.
--------------------
Два элемента, которые наиболее часто встречаются в Вселенной - водород и глупость.
|
|
|
|
|
Jul 25 2011, 04:09
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(haker_fox @ Jul 24 2011, 18:54)  Не надо так оформлять код! Используйте имена битов (WGM.. и другие), а не их порядковые номера. Тогда такие ошибки автоматом исключаться. +1 ldi r16, (1<<6)|(1<<5)|(1<<3)|(1<<0) out TCCR0, r16 Для примера : Код .def temp = R16 ldi temp,1<<WGM00|1<<COM01|1<<WGM01|1<<CS01 out ....
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Jul 26 2011, 06:13
|

Участник

Группа: Участник
Сообщений: 28
Регистрация: 6-04-09
Из: г. Ярославль
Пользователь №: 47 264

|
Код .def temp = R16 ldi temp,1<<WGM00|1<<COM01|1<<WGM01|1<<CS01 out .... [/quote] Спасибо, так уже и пишу Цитата(ARV @ Jul 25 2011, 08:11)  4-я студия (не знаю, как 5-я) не симулирует работу PWM-режимов таймеров, об этом напиано в хелпе к симулятору. По крайней мерее вывод OC0 изменяется согласно временным диаграммам, если конфигурирую соответствующий пин порта B на выход то в регистре PinB наблюдаю как выставляется лог. единица при обнулении TCNT0 и лог. ноль при достижении OCR0.
--------------------
Два элемента, которые наиболее часто встречаются в Вселенной - водород и глупость.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|