Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
А чего тут смотреть - налицо некорректная работа с регистром, одновременно записываемым и в прерывании (temp1), и в основном цикле (r17)
Отправлено
=AVR= 03 марта 2007 г. 03:43
В ответ на:
Ответ: Есче вопросик отправлено
<font color=gray>Anrdey19888</font> 03 марта 2007 г. 02:43
Во-первых, никогда так не делай, назвал регистр Rxx именем - обращайся к нему только по имени, забудь про Rxx. Для корректной работы на время конкурентных обращений всегда нужно запрещать прерывания:
cli
mov r18,r17
andi r17,0x0F
out PORTD,r17
sei
swap r18
andi r18,0x0F
; out PORTD,r18
Во-вторых, для проверки совершенно не нужно было заморачиваться с таймером и прерыванием, достаточно было простого цикла:
foo:
in r17,PINB
mov r18,r17
andi r17,0x0F
swap r18
andi r18,0x0F
; out PORTD,r17
out PORTD,r18
rjmp foo
И, в-третьих, не забывай ставить теги < pre > и < /pre > перед и после кода соответственно, иначе движок конфы будет корежить текст
Составить ответ | Вернуться на конференцию
Ответы
- Ответ: Да дело в том что надо по таймеру т.к. надо проверять правильность импульсов приходящих в порт В по 2 линиям первая PB0-3, вторая PB4-7 см.рисунок. и выводить в порт D первую неправильную комбинацию. — Anrdey19888 (03.03.2007 13:58:1 86.57.161.208, 192 байт)
- мдя, только это ничего не объясняет — DASM (03.03.2007 03:44:51 212.58.192.14, пустое)
- Я в его неформатированном коде детально не копался - например, не смотрел режим таймера, а он может, например, забить ноги OC1x (PB3..4), может и программатор PB5..7 подсаживать, может, он и просто PB на землю замыкает, а пуллапы не включены, кто знает - просто указал на некорректность — =AVR= (03.03.2007 04:17:9 80.92.96.19, пустое)