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

 
 
 
Reply to this topicStart new topic
> Mega128 OC1a и PORTB управление портом.
add
сообщение Sep 15 2006, 05:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Вопрос следующий:
Преходя с M8515 на M128 сталкнулся с такой проблемой...: немогу управлять PORTB ..а именно 5 пином.
думаю это связанно с альтернативными функциями порта OC1a, (OCnx). Инициализация почти такая же как и на М8515(на ней все работает). В программе использую таймер1, в режиме "сброс по сравнению" (CTC). В программе устанавливаю пинB5 (для теста) до инициализ. портов и таймера, но он обнуляется после инициализации tccr1b и далее в нуле.?! Привожу кусок кода.
Прошу помочь, может в коде чтото не так, может ссылку где почитать про инициализацию М128 и таймеров.
Код
reset:
clr    r16
out    MCUCR,r16
sbi    portb,5    ;для теста
sbi    portb,4

ldi    r16,LOW(ramend)
out    SPL,r16
ldi    r16,high(ramend)                
out    SPH,r16        

ldi    r16,high(0xaa)                    
out    ocr1ah,r16
ldi    r16,low(0xaa)                    
out    ocr1al,r16    
clr    r16
out    tccr1a,r16
ldi    r16,0b00001001            
out    tccr1b,r16                    
ldi    r16,0b00000000;здесь portb.5 обнуляеться,а portb.4 нет  ?!    
sts    tccr1c,r16            

ldi    zl,0b00110111        
out    ddrb,zl
ldi    zl,0b11001000
out    portb,zl


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 15 2006, 11:32
Сообщение #2


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(add @ Sep 15 2006, 09:47) *
Вопрос следующий:
Преходя с M8515 на M128 сталкнулся с такой проблемой...: немогу управлять PORTB ..а именно 5 пином.
думаю это связанно с альтернативными функциями порта OC1a, (OCnx). Инициализация почти такая же как и на М8515(на ней все работает). В программе использую таймер1, в режиме "сброс по сравнению" (CTC). В программе устанавливаю пинB5 (для теста) до инициализ. портов и таймера, но он обнуляется после инициализации tccr1b и далее в нуле.?! Привожу кусок кода.
Прошу помочь, может в коде чтото не так, может ссылку где почитать про инициализацию М128 и таймеров.


Если Вы это про симулятор AVR Studio, то это такой глюк у него (или фича smile.gif ).
Подобная проблемма у меня была, только уже не помню с каким чипом.
Попробуйте ничего не меняя в коде просимулировать на ATmega64 или ATmega103, все
будет работать. Таймеры у них одинаковые.
Go to the top of the page
 
+Quote Post
add
сообщение Sep 15 2006, 11:40
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Цитата
Если Вы это про симулятор AVR Studio, то это такой глюк у него (или фича ).

:-) я прошил контроллер и все вроде заработало?! а в симуляторе глючит!
чудеса!


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 15 2006, 11:58
Сообщение #4


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(add @ Sep 15 2006, 15:40) *
Цитата
Если Вы это про симулятор AVR Studio, то это такой глюк у него (или фича ).

:-) я прошил контроллер и все вроде заработало?! а в симуляторе глючит!
чудеса!

Я тоже долго с этим мучился. А когда просимулировал на похожем, точно понял
что это глюк AVR Studio.
В итоге, симулировал на одном, а прошивал в нужный.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 16 2006, 19:18
Сообщение #5


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Находим файл:
C:\Program Files\Atmel\AVR Tools\Partdescriptionfiles\ATmega128.xml

В этом файле находим:
Код
<TIMER1>
    <ID>AvrMasterTimer.MasterTimer</ID>
    <IcpVector>0x16</IcpVector>
    <CompAVector>0x18</CompAVector>
    <CompBVector>0x1A</CompBVector>
    <CompCVector>0x30</CompCVector>
    <OvfVector>0x1C</OvfVector>
    <IcpPinAdr>0x10</IcpPinAdr>
    <IcpPinMask>0x10</IcpPinMask>
    <OutputAAdr>0x18</OutputAAdr>
    <OutputAMask>0x20</OutputAMask>
    <OutputBAdr>0x18</OutputBAdr>
    <OutputBMask>0x40</OutputBMask>
    <OutputCAdr>0x18</OutputCAdr>
    <OutputCMask>0x80</OutputCMask>
    <OCFA>TIFR/OCF1A</OCFA>
    <OCFB>TIFR/OCF1B</OCFB>
    <OCFC>ETIFR/OCF1C</OCFC>
    <Prescaler>1:8:64:256:1024</Prescaler>
    <PSRregister>0x20</PSRregister>
    <PSRbitmask>0x01</PSRbitmask>
</TIMER1>

И правим на вот это:
Код
<TIMER1>
    <ID>AVRSimIOTimert16pwm1.SimIOTimert16pwm1</ID>             ; здесь
    <IcpVector>0x16</IcpVector>
    <CompAVector>0x18</CompAVector>
    <CompBVector>0x1A</CompBVector>
    <CompCVector>0x30</CompCVector>
    <CountPinAdr>0x10</CountPinAdr>       ; здесь
    <CountPinMask>0x40</CountPinMask>  ; и здесь
    <OvfVector>0x1C</OvfVector>
    <IcpPinAdr>0x10</IcpPinAdr>
    <IcpPinMask>0x10</IcpPinMask>
    <OutputAAdr>0x18</OutputAAdr>
    <OutputAMask>0x20</OutputAMask>
    <OutputBAdr>0x18</OutputBAdr>
    <OutputBMask>0x40</OutputBMask>
    <OutputCAdr>0x18</OutputCAdr>
    <OutputCMask>0x80</OutputCMask>
    <OCFA>TIFR/OCF1A</OCFA>
    <OCFB>TIFR/OCF1B</OCFB>
    <OCFC>ETIFR/OCF1C</OCFC>
    <Prescaler>1:8:64:256:1024</Prescaler>
    <PSRregister>0x20</PSRregister>
    <PSRbitmask>0x01</PSRbitmask>
</TIMER1>

После этого спокойно симулируем Timer1.

Аналогично поступаем с Timer3, только
<CountPinAdr>0x01</CountPinAdr>
<CountPinMask>0x40</CountPinMask>

Похоже в этих файлах довольно много глюков,
например биты OCR1BL7 и OCR1CL7 объявленны Read only причем и
в ATmega128.xml и в ATmega64.xml sad.gif
Go to the top of the page
 
+Quote Post
add
сообщение Sep 17 2006, 07:49
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Цитата
После этого спокойно симулируем Timer1.


После этих манипуляций студия заругалась что девайсину сию незнает...;-) вернул все обратно...


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 17 2006, 08:01
Сообщение #7


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(add @ Sep 17 2006, 11:49) *
Цитата
После этого спокойно симулируем Timer1.


После этих манипуляций студия заругалась что девайсину сию незнает...;-) вернул все обратно...

А какая у вас версия AVR Studio ?
У меня 4.12.460.
Менял только для Timer1.
После этого Ваш код отлично симулируется.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 17 2006, 09:21
Сообщение #8


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Вот файл для Studio 4.12.460

Подправленно для Timer1 и Timer3.
У меня все работает.
Если кто попробует, отпишитесь плиз.
Прикрепленные файлы
Прикрепленный файл  ATmega128.xml.txt ( 390.13 килобайт ) Кол-во скачиваний: 350
 
Go to the top of the page
 
+Quote Post
add
сообщение Sep 17 2006, 10:27
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Заменил файл и все засимулировалось :-) все дело было наверное в эффекте кривых ручкек.... :-)
Пасиба за помощь!


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 07:48
Рейтинг@Mail.ru


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