реклама на сайте
подробности

 
 
> 16-разрядный аппаратный ШИМ на ATmega64
DREAD
сообщение Mar 31 2008, 12:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 15-05-06
Пользователь №: 17 106



Как организовать 16-разрядный аппаратный ШИМ в режиме fast PWM на Atmega64

таймер инициализируется так:

void Timer_Counter3_init(void)
{
ICR3= 0xFFFF;
TCCR3A = (1<<COM3B1)|(1<<COM3B0)|(1<<WGM31);
TCCR3B = (1<<WGM32)|(1<<WGM33)|(0<<CS30)|(1<<CS31);
//ETIMSK = (1<<TOIE3);
OCR3B = 0;
}
казалось бы должно работать но увы.
Люди добрые подскажите что я не так сделал

никто не хочет подсказать 05.gif

Сообщение отредактировал DREAD - Mar 31 2008, 12:51
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DrGluck
сообщение Apr 1 2008, 10:14
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-11-05
Из: Россия
Пользователь №: 11 361



".....позавчера не мог заставить шимить mega1280 - портировал рабочий код с mega128
дело оказалось в простом - для ноги вывода шима следует ВЫКЛЮЧИТЬ подтягивающий резистор, иначе он все время в 1-це......" -

достойный первоапрельский перл ! ... smile.gif


--------------------
"... Ищущий вечно, однажды найдя, то, что искал бесконечно, мимо прошёл, совершенно беспечно, с кем-то о вечном шутя ..."
Go to the top of the page
 
+Quote Post
yod
сообщение Apr 2 2008, 07:38
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 20-10-06
Пользователь №: 21 500



Цитата(DrGluck @ Apr 1 2008, 16:14) *
".....позавчера не мог заставить шимить mega1280 - портировал рабочий код с mega128
дело оказалось в простом - для ноги вывода шима следует ВЫКЛЮЧИТЬ подтягивающий резистор, иначе он все время в 1-це......" -

достойный первоапрельский перл ! ... smile.gif

никуя смешного
ГЛЯДИ - ВХОДИТ
рабочий код инициализации __atmega128__
Код
.global POW_LAMP_init
POW_LAMP_init:
    ldi        r24,lo8(lamp_dir)
    sts        lamp_ptr,r24
    sts        lamp_count,__zero_reg__
    in        r24,_SFR_IO_ADDR(DDRB)
    ori        r24,1<<PB4;
    out        _SFR_IO_ADDR(DDRB),r24
    in        r24,_SFR_IO_ADDR(PORTB)
    ori        r24,1<<PB4;-------------это работает-----------
    out        _SFR_IO_ADDR(PORTB),r24
    ldi        r24,0b00111
    sts        PORTG,r24                //for external Quarz 32768
    ldi        r24,0b00001000
    out        _SFR_IO_ADDR(ASSR),r24            //use external clock
    ldi        r24,(0b01100000)|timer0speed    //phase correct PWM
    out        _SFR_IO_ADDR(TCCR0),r24
    in        r24,_SFR_IO_ADDR(TIMSK)
    ori        r24,1<<TOIE0
    out        _SFR_IO_ADDR(TIMSK),r24
    RET
.end

И ВЫХОДИТ (С)Иа
рабочий код инициализации _atmega1280_
Код
.global POW_LAMP_init
POW_LAMP_init:
    ldi        r24,lo8(lamp_dir)
    sts        lamp_ptr,r24
    sts        lamp_count,__zero_reg__
    
    in        r24,_SFR_IO_ADDR(DDRB)        //fist led
    ori        r24,1<<PB7;
    out        _SFR_IO_ADDR(DDRB),r24
    in        r24,_SFR_IO_ADDR(PORTB)
    andi    r24,~(1<<PB7); -------------это место пришлось править-----------
    out        _SFR_IO_ADDR(PORTB),r24

    in        r24,_SFR_IO_ADDR(DDRG)        //second led
    ori        r24,1<<PG5;
    out        _SFR_IO_ADDR(DDRG),r24
    in        r24,_SFR_IO_ADDR(PORTG)
    andi    r24,~(1<<PG5);-------------сделано по аналогии-----------
    out        _SFR_IO_ADDR(PORTG),r24

    in        r24,_SFR_IO_ADDR(PORTG)        //for external Quarz 32768
    andi    r24,~((1<<PG3)||(1<<PG4))
    out        _SFR_IO_ADDR(PORTG),r24

    ldi        r24,(1<<AS2)
    sts        ASSR,r24                    //use external clock
    ldi        r24,0b10000001                //phase correct PWM
    out        _SFR_IO_ADDR(TCCR0A),r24
    ldi        r24,0b00000100                //div 1024
    out        _SFR_IO_ADDR(TCCR0B),r24
    
    lds        r24,TIMSK0
    ori        r24,1<<TOIE0
    sts        TIMSK0,r24
    RET
.end
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 08:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016