KESTVVV
Mar 22 2007, 12:54
У меня такая проблема:
OCR1BH - при записи в эти регисты их значение всегда равно 0x00
ICR1H
OCR1BL - управляются нормально
ICR1L
OCR1AH
OCR1AL
Прерывания запрещены.Очередность записи старшей и младшей части регистров соблюдены.
Эта проблема присутствует во всех режимах формирования PWM.Все режимы работают, только вот в OCR1BH и ICR1H всегда находятся нули.
Очень жду помощи в этой проблемке.
singlskv
Mar 22 2007, 14:21
Цитата(KESTVVV @ Mar 22 2007, 12:54)

У меня такая проблема:
Эта проблема на реальном железе или в AVR Studio ?
Покажите код.
KESTVVV
Mar 22 2007, 14:42
Проблема с железом.Работаю в AVR Studio.HEX прошиваю Chip Blaster AVR ST200 с опторазвязкой.
.def BF1 = R1
LDI BF1,high(RAMEND)
OUT SPH,BF1
LDI BF1,low(RAMEND)
OUT SPL,BF1
SBI DDRB,1
SBI DDRB,2
CLI
LDI BF1,0b10100011
STS TCCR1A,BF1
LDI BF1,0b00000001
STS TCCR1B,BF1
LDI BF1,2
STS OCR1AH,BF1
LDI BF1,0
STS OCR1AL,BF1
LDS BF1,2
STS OCR1BH,BF1
LDI BF1,0
STS OCR1BL,BF1
PP:
RJMP PP
Wild007
Mar 22 2007, 16:07
А что находится в ОЗУ в ячейке 2? Потому что код:
Код
LDS BF1,2
STS OCR1BH,BF1
загружает в BF1 содержимое ячейки 2 ОЗУ. И если там 00, то и в OCR1BH будет 00.
rx3apf
Mar 22 2007, 16:24
Цитата(Wild007 @ Mar 22 2007, 16:07)

А что находится в ОЗУ в ячейке 2? Потому что код:
Код
LDS BF1,2
STS OCR1BH,BF1
загружает в BF1 содержимое ячейки 2 ОЗУ. И если там 00, то и в OCR1BH будет 00.
Еще более загадочным представляется то, что команды ldi BF1,xx работают (если они, конечно, работают) - учитывая, что BF1 = R1, а команда ldi работает только с регистрами 16..31.
Напоминает популярные тесты "найди десять ошибок"
KESTVVV
Mar 22 2007, 16:47
А причиной всему - банальная описка
с BF1 - опечатка во время копирования (.def BF1 = R17 )
главная причина - LDS.
Я щас просто перехожу с x51,поэтомус AVR бывает не все понятно.
Спасибо всем за помостч.