Помогите состыковать програмный модуль на Ассемблере с UltraLogik |
Ответить | Страница 12> |
Автор | |
Новичок Присоединился: 04 Ноябрь 2005 Категория: Kazakhstan Online Status: Offline Публикации: 16 |
Опубликовано: 03 Июль 2006 09:30 |
Подскажите пожалуйста, где ошибка в программном модуле для UltraLogik16 (программа для сброса Wathcdog Timer) .386 Запуск программы на UltraLogik с программным модулем сброса Watchdog Timer приводит к зависанию контроллера - черный(чуть подсвеченный экран) На клавиатуру (Enter, Alt+Ctrl+Del) не реагирует. Но программный модуль однократно сбрасывает Watchdog (судя по времени перезагрузки). |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
|
Посмотри мой пример: http://forum.cta.ru/forum_posts.asp?TID=1743&PN=3 А для какого контроллера подпрограмма? |
|
Vel
|
|
Новичок Присоединился: 04 Ноябрь 2005 Категория: Kazakhstan Online Status: Offline Публикации: 16 |
|
Контроллер ICOP-6021 (на чипе M6117D, совместимый 386SX CPU)
|
|
Участник Присоединился: 27 Апрель 2005 Категория: Ukraine Online Status: Offline Публикации: 81 |
|
Не делайте lock в конце процедуры. Потому что другие библиотеки, которые обращаются к системным регистрам (например GPIO), делают unlock и все. Поэтому, если вы вызываете в таком порядке: 1) GPIO_Init 2) Watch_Dog_Init 3) InGpio - подвесит программу |
|
AlexZ
|
|
Новичок Присоединился: 04 Ноябрь 2005 Категория: Kazakhstan Online Status: Offline Публикации: 16 |
|
Сделал модуль без блокировки регистра конфигураций (Lock configuration register). Та же самая проблема. GPIO не используется. Похоже, что программный модуль не стыкуется с UltraLogik16 |
|
Участник Присоединился: 27 Апрель 2005 Категория: Ukraine Online Status: Offline Публикации: 81 |
|
Вот мой кусок кода для программы для ICOP 6015, основная часть написана на C++. .286 read_cr proc near ; на входе al = адрес, на выходе al - знач. write_cr proc near ; на входе al = адрес, ah - знач. wd_init proc wd_reset proc wd_unhook proc |
|
AlexZ
|
|
Участник Присоединился: 27 Апрель 2005 Категория: Ukraine Online Status: Offline Публикации: 81 |
|
Еще подумал и пришла следующая мысль: попробуйте сделать так, чтобы при создании исполнительного модуля также создавался .map файл (результат компоновки) и опубликуйте этот файл. Тогда, что-то можно будет сказать.
|
|
AlexZ
|
|
Новичок Присоединился: 04 Ноябрь 2005 Категория: Kazakhstan Online Status: Offline Публикации: 16 |
|
Программа сделанная под DOS работает: RWQ.map содержит следующее: 00000H 00000H 00000H _TEXT CODE Program entry point at 0000:0000 |
|
Участник Присоединился: 27 Апрель 2005 Категория: Ukraine Online Status: Offline Публикации: 81 |
|
1) Думаю нужно не <.386>, а <.286> 2) сегмент стека не нужен - он в основной программе (assume оставьте только для кода). 3) Вызывает сомнение модель small, т.к. скорей всего вся программа выполнена в модели large 4) оставьте только push ax и pop ax!!! |
|
AlexZ
|
|
Участник Присоединился: 27 Апрель 2005 Категория: Ukraine Online Status: Offline Публикации: 81 |
|
Ах да. Я уже вам писал не делайте lock config register!
|
|
AlexZ
|
|
Ответить | Страница 12> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |