AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
14.03.2010, 21:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,731
Сказал спасибо: 2,439
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
SBI PORTB или PINB ?
Забыл уже ассемблер.
|
|
|
|
14.03.2010, 21:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
Посмотри невключен ли фус совместимости с At90S8535
|
|
|
|
14.03.2010, 22:53
|
|
Прохожий
Регистрация: 21.06.2006
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
Быстрая реакция, спасибо.. Посмтрю.
Насчет "SBI PORTB или PINB" все таки SBI PORTB, еще раз спасибо..
|
|
|
|
14.03.2010, 23:14
|
|
Прохожий
Регистрация: 21.06.2006
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
Только-что проверил. На фусе совместимости с At90S8535 стояла птичка, убрал птичку - эффект тот же. Попутно разбросал метки (те что с восьмерками) в другие части программы и выяснил, что программа останавливается в том месте, где есть переход из подпрограммы в другую подпрограмму. Например когда вызывается подпрограма формирования сигнала сброса для термометра, котора в свою очередь вызывает подпрограмму временной задержки.
Может что-то с указателем стека? Не оставляйте меня надолго с этой проблемой.
Может быть у когото есть какой нибудь проект для данного процика в асемблере. Кинте заголовочек и какую то часть програмули. Плиз..
Заранее благодарен
|
|
|
|
15.03.2010, 06:02
|
|
Гражданин KAZUS.RU
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
PORTB и portb это не одно и тоже.
__________________
Не ошибается лишь тот, кто ни чего не делает!
|
|
|
|
15.03.2010, 20:27
|
|
Частый гость
Регистрация: 02.12.2008
Сообщений: 32
Сказал спасибо: 23
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
poff: В чем компилишь проект? И есть ли предупреждения при компиляции?
По тексту программы:
1. Есть переходы на п/п обработки прерываний, а самих прерываний нет - не понятно, как компилятор пропускает такое (есть переход , например "rjmp INT0addr" а самой метки "INT0addr:" нет).
2. Не сохраняются регистры в подпрограммах - возможно где-то портятся регистры.
3. Инициализация стека выполнена правильно.
Пример п/п задержки с сохранением/восстановлением регистров
;***** Subr for delay on 41 mks
.equ L0 = 16
.equ L1 = 3
.equ L2 = 2
; Tdelay={16+L2*(3+L1*(3+L0*3))}*tmc
; for Fzq=8MHz tmc=0.125 mks
delay41mks:
push r20 ; 2
push r21 ; 2
push r22 ; 2
ldi r20, L2 ; 1
delay2: ldi r21, L1 ; 1 -------------------------------|
delay1: ldi r22, L0 ; 1 -----------------| |
delay: dec r22 ; 1 --| Lp1= | Lp2= |
brne delay ; 1/2 --| L0*(1+2) | =(L1+3)*L1= |
dec r21 ; 1 | = |
brne delay1 ; 1/2 -----------------| |
dec r20 ; 1 |
brne delay2 ; 1/2 -------------------------------|
pop r22 ; 2
pop r21 ; 2
pop r20 ; 2
ret ; 4
|
|
|
|
15.03.2010, 20:37
|
|
Частый гость
Регистрация: 02.12.2008
Сообщений: 32
Сказал спасибо: 23
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
poff: В догонку - ты забил в качестве адресов (меток) подпрограмм обработки прерываний адреса векторов (из "m8535def.inc") если какое-либо прерывание возникает (не разбирался, что разрешено) то программа переходит сама на себя, поскольку твоя запись таблицы векторов это :
INT0addr: rjmp INT0addr
по сути - бесконечный цикл.
|
|
|
|
15.03.2010, 20:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,731
Сказал спасибо: 2,439
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
Точно. Программа заходит в любое прерывание и там и остается.
|
|
|
|
15.03.2010, 21:19
|
|
Прохожий
Регистрация: 21.06.2006
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
то sio_66. К сожалению, в программировании я самоучка. Такую стилистику и правила написания программ я с успехом использовал для реализации нескольких непростых проектов на базе ATTiny2313. Данный проект потребовал большего числа входных портов, в связи с этим и был выбран процессор 8535. Используется компилятор tavrasm. Компилятор не ругается. Идею на счет невозврата из прерывания проверю, но сомневаюсь, поскольку для работы прерываний их нужно еще и разрешить. Для упрощения исследований моей проблемы прямо сейчас напишу упрощенную версию тестовой програмки для данного процика. Еще раз подчеркиваю "Таже програмуля переделанная под ATTINY2313 работает нормально". переделанная - значит просто исправлены названия портов. В любом случае спасибо за поддержку..
|
|
|
|
15.03.2010, 21:45
|
|
Прохожий
Регистрация: 21.06.2006
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
to sio_66. Как и предполагал, удаление ссылок на прерывния, кроме RESET, не дало результата. Буду искат дальше, напишу тестовую програмку...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:16.
|
|