6 каналов ШИМ на ATMega128.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
advip
Родился
Сообщения: 4
Зарегистрирован: Ср фев 18, 2009 21:24:57

6 каналов ШИМ на ATMega128.

Сообщение advip »

Задача: запустить 6 каналов ШИМ АППАРАТНО! (а не программно с прерываниями, потому что в моём случае МК слишком загружен другими делами). Речь идёт о ATMega128. Самое странное то что в симуляции компилятора AVR Studio всё работает. Протеус тоже одобряет. А на деле (на реальном железе) работают только 2 ШИМ-а из 6. :O: Ножки НЕ горелые, проверял несколько раз. Тестовый код программы прозрачнее льда:

;----------
;какие надо ножки делаем выходами....(эт понятно)
; ВКЛЮЧАЕМ НЕБХОДИМЫЕ УСТРОЙСТВА
; 3 канала ШИМ, на таймере 3
ldi r16,0x7F
sts OCR3AL,r16 ;записать значение 0x007F в число A
ldi r16,0x00
sts OCR3BH,r16
ldi r16,0x7F
sts OCR3BL,r16 ;записать значение 0x007F в число B
ldi r16,0x00
sts OCR3CH,r16
ldi r16,0x7F
sts OCR3CL,r16 ;записать значение 0x007F в число C
ldi r16,0b01010101
sts TCCR3A,r16 ;работает все каналы, 8-разрядный ШИМ
ldi r16,0b00001001
sts TCCR3B,r16 ;частота работы счётчика f/1, ускоренный ШИМ
; 3 канала ШИМ, на таймере 1
ldi temp,0x00
out OCR1AH,temp
ldi temp,0x7F
out OCR1AL,temp ;записать значение 0x007F в число A
ldi temp,0x00
out OCR1BH,temp
ldi temp,0x7F
out OCR1BL,temp ;записать значение 0x007F в число B
ldi temp,0x00
sts OCR1CH,temp
ldi temp,0x7F
sts OCR1CL,temp ;записать значение 0x000F в число C
ldi r16,0b01010101
out TCCR1A,r16 ;работает все каналы, 8-разрядный ШИМ
ldi r16,0b00001001
out TCCR1B,r16 ;частота работы счётчика f/1, ускоренный ШИМ
... Дальше идёт основная программа
;----------

Зашиваю....и что получаю:
ШИМ_1А - работает
ШИМ_1В - работает
ШИМ_1С - НЕ работает
ШИМ_3А - НЕ работает
ШИМ_3В - НЕ работает
ШИМ_3С - НЕ работает

Как вы можете заметить, собака зарыта под командой STS. С командами OUT прокатывает. Как обойти эту проблему мне совершенно не понятно. Может кто спотыкался на таких камнях.
Перед тем как создать тему, я хорошенько погуглил: в далёком 2005-м у одного чела была такая же неувязочка, но его проигнорили. Вообщем выслушаю любые предложения. Заранее спасибо.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: 6 каналов ШИМ на ATMega128.

Сообщение ibiza11 »

JTAG отключен :)?
Ставим плюсы: )
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: 6 каналов ШИМ на ATMega128.

Сообщение Roman Venom »

запись в регистровые пары происходит в формате старший-младший. Чтение наоборот. Это на всякий случай.
Теперь директивы касательно ячейки OCR1CL в студию.

Я этой командой никогда не пользовался, всегда записывал/читал косвенно. Приведу пример как я работаю с оперативкой (косвенно).

При включении чистим, ибо там может быть всё что угодно.

Код: Выделить всё

.equ ADC0_ram=0x0 ;0x0


Код: Выделить всё

clear_SRAM:
clr work1
clr work
;---------clr ADC0_ram
ldi YH,0x1
ldi r28,ADC0_ram
clear_ADC0_ram:
inc work1
st Y+,work
cpi work1,20
brne clear_ADC0_ram
clr work1


Запись в память. В данном случае из АЦП. Чтение аналогично, только с ld.

Код: Выделить всё

ADC_0:
ldi YH,0x1
in work,ADCL
in work1,ADCH
ldi r28,ADC0_ram
st Y+,work;ADC0H
st Y+,work1;ADC0L,
rjmp exit_ADC
Успех - императив!
advip
Родился
Сообщения: 4
Зарегистрирован: Ср фев 18, 2009 21:24:57

Re: 6 каналов ШИМ на ATMega128.

Сообщение advip »

JTAG не оказывает влияния. Косвенная запись также не оправдала надежд. Через пару часиков скину весь проект с протеусом вдогонку.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: 6 каналов ШИМ на ATMega128.

Сообщение ibiza11 »

да, JTAG нипричем в этом случае. Фьюз совместимости с атмега103 не установлен случайно?
Ставим плюсы: )
advip
Родился
Сообщения: 4
Зарегистрирован: Ср фев 18, 2009 21:24:57

Re: 6 каналов ШИМ на ATMega128.

Сообщение advip »

ОЛОЛО!!!! Чел где ты раньше был!!! Действительно фьюс совместимости с ATMega103. Убрал галку в понипрог, и проблема над которой я бился 10часов решена! :))
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: 6 каналов ШИМ на ATMega128.

Сообщение ibiza11 »

:lol: рад, что помог!)
Ставим плюсы: )
advip
Родился
Сообщения: 4
Зарегистрирован: Ср фев 18, 2009 21:24:57

Re: 6 каналов ШИМ на ATMega128.

Сообщение advip »

Кидаю вам исходник (asm для AVR Studio) с протеуснёй в комплекте. И большущее СПАСИБА ibiza11!
Аватара пользователя
fizicko
Родился
Сообщения: 12
Зарегистрирован: Пн июн 14, 2010 13:47:19

Re: 6 каналов ШИМ на ATMega128.

Сообщение fizicko »

:music:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»