Страница 14 из 160
Добавлено: Чт янв 07, 2010 22:36:16
Андрейка
ARV писал(а): В первых документах для имен некоторых битов и для имени регистра использовались одни и те же обозначения (SP и Z)
Нельзя ли уточнить в каких строках файла tn2313def.inc использовались одни и те же обозначения (SP и Z)
Действительно, если заремарить строки: .equ Z = 1 и .equ OR = 3 , то все компилируется без ошибок.
Спасибо.
Добавлено: Чт янв 07, 2010 22:55:58
ARV
Андрейка писал(а):Нельзя ли уточнить в каких строках файла tn2313def.inc использовались одни и те же обозначения (SP и Z)
я напутал - действительно, речь о OR, а не о SP...
Добавлено: Пт янв 08, 2010 22:43:18
Андрейка
Еще вопросик.
ldi temp,0b11111110 ; PD0-вход, остальные не используются
out DDRD,temp ;
ldi temp,0b00000001 ;
out PortD,temp ; PD0-подтяжка, остальные не используются
В процессе отладки наблюдаем, что бит 0 регистра PortD устанавливается, но почему-то не устанавливается бит 0 регистра PinD?
Добавлено: Пт янв 08, 2010 22:51:29
ARV
ну, не забывайте, что те квадратики, что студия вам показывает в качестве PIND - это сигналы, которые якобы приходят на пины ИЗВНЕ, т.е. вы их сами должны установить. изнутри студии они не управляемы.
Добавлено: Сб янв 09, 2010 18:29:14
almir
Уважаемые коты, поздравляю с Новым Годом и Рождеством, был в отъезде, поэтому запоздал с поздравлениями и ответом. Прикрепляю архив со своим бегущим огнем. Так, пока, и не пойму где я туплю.
Добавлено: Сб янв 09, 2010 21:29:57
Андрейка
Хочу уточнить. К примеру, кнопка без фиксации подключена к входу PD0, другим концом к шине 0 В. Когда кнопка нажата на входе будет низкий уровень. Чтобы при ненажатой кнопке на входе PD0 был высокий уровень напряжения включаем подтяжку
ldi temp,0b00000001
out PortD,temp
Дальше я буду проверять состояние входа PD0 с помощью
sbic PinD,0 ; кнопка нажата - то пропускаем строку
Но состояние бита 0 в регистре PinD не меняется - бит всегда сброшен. Для чего же нужна подтяжка?
Добавлено: Сб янв 09, 2010 21:51:01
Pooher
Пин надо настроить на вход с z состоянием, подтянуть внешним резистором, на пример 10к, к +, а кнопку подключить через резистор 100Ом к -. С Вашим подключением и настройками я не удивлюсь, если уже спален порт.
Добавлено: Сб янв 09, 2010 23:26:35
ARV
Андрейка, вы пытаетесь доказать, что студия должна под вас подстраиваться? а я утверждаю, что это вам придется подстраиваться под нее: биты в PINx устанавливаются пользователем вручную, при этом то, что при выводе в PORTx единицы в то время, как порт настроен на ввод должно включать подтяжку, студия просто игнорирует. и все тут - это у нее фича такая. нужна вам единица - поставьте ее вручную, а по состоянию PORTx убедитесь, что "подтяжка" как бы там есть
Pooher, не нужно никакого внешнего резистора на кнопку, если она, конечно, не метровым проводником к МК подключена - хватает встроенной подтяжки.
Добавлено: Вс янв 10, 2010 23:09:18
Андрейка
Дело в следующем
ser temp ; PB0-выход, остальные не используются
out DDRB,temp ;
ldi temp,0b00000001 ;
out PortB,temp; PB0-вкл., остальные не используются
после этого бит 0 PinB устанавливается, но ведь физически на выходе PB0 нет напряжения.
Получается, что когда работаем с выходами биты в PinХ изменяются, а с входами - нет.
Еще есть вопросики.
Если выводы не используем, то как их лучше определять как отключенные выходы или как включенные (подтяжкой) входа?
Надо ли применять на практике последовательные токоограничивающие резисторы? Например, как советует Pooher,
последовательно с моей кнопкой на шину 0В.
Добавлено: Вс янв 10, 2010 23:37:49
Ёжкин Кот
Андрейка писал(а):Дело в следующем
ser temp ; PB0-выход, остальные не используются
out DDRB,temp ;
ldi temp,0b00000001 ;
out PortB,temp; PB0-вкл., остальные не используются
после этого бит 0 PinB устанавливается, но ведь физически на выходе PB0 нет напряжения.
По идее на выходе PB0 должен быть уровень лог.1.
Андрейка писал(а):Если выводы не используем, то как их лучше определять как отключенные выходы или как включенные (подтяжкой) входа?
Как хочешь
Андрейка писал(а):Надо ли применять на практике последовательные токоограничивающие резисторы? Например, как советует Pooher,
последовательно с моей кнопкой на шину 0В.
Никаких токоограничительных резисторов не требуется. Цепляется кнопка на вход порта и включается внутренний резистор. И всё.
Добавлено: Пн янв 11, 2010 09:35:07
Ёжкин Кот
Ёжкин Кот писал(а):Андрейка писал(а):Надо ли применять на практике последовательные токоограничивающие резисторы? Например, как советует Pooher,
последовательно с моей кнопкой на шину 0В.
Никаких токоограничительных резисторов не требуется. Цепляется кнопка на вход порта и включается внутренний резистор. И всё.
Спешу себя поправить: на отладочной плате токоограничительный резистор желателен и даже необходим, дабы избежать кз выхода на землю при ошибке конфигурации порта. А вот в конечном устройстве такой резистор не нужен.
Добавлено: Пн янв 11, 2010 23:00:14
Андрейка
Благодарю. A куды делся ARV, хочу узнать его мнение.
Добавлено: Вт янв 12, 2010 08:59:43
ARV
если не гонитесь за минимальным энергопотреблением - неиспользуемые выводы можете бросить в любом состоянии неподключенными. для лучшей помехоустойчивости не желательно осталвять их в состоянии входов, хотя опять же, это для домашних экспериментов некритично. сброс лучше не бросать неподключенным, если ручонками хватать работающую схему - от наводок с рук будет сбрасываться - соединить его с питанием через резистор 1-10к (можно и напрямую) и через кондерчик на общий.
кнопки в готовых изделиях без всяких резисторов, но при условии, что они рядом с МК. если линии длинные - лучше использовать внешние подтяжки (внутренняя подтяжка 40-70 килоом, а внешнюю желательно ставить 1-10 килоом). на длинных линиях параллельно кнопке конденсатор 0,1 мкф не помешает.
в общем, для игрушек - ничего не надо, а для серьезных изделий - лучше перебдеть.
резистор последовательно с кнопкой - это страховка от кривых рук или больной головы. т.е. момогает спасти порт МК, если он назначен выходом, а кнопку нажали и закоротили его на общий.
Добавлено: Вт янв 12, 2010 22:37:06
Андрейка
Спасибо. Пока вопросов не имею.
Добавлено: Ср янв 20, 2010 21:57:17
Dexa
Кто-нибудь знает как в studio посмотреть что записывается в ОЗУ в режиме отладки?
p.s. после выхода из обработчика прерываний попадаю на вектор reset а потом соответственно на инициализацию, а должен же попасть основную программу, где собака зарыта?
Код: Выделить всё
.cseg
.org 0
rjmp RESET ; Reset Handler
.org INT1addr
rjmp EXT_INT1 ; IRQ1 Handler
.org INT0addr
rjmp EXT_INT0 ; IRQ0 Handler
.org OVF1addr
rjmp TIM_OVF1 ; Timer1 Overflow Handler
;***************Èíèöèàëèçàöèÿ*****************
RESET: ldi temp,RamEnd ;èíèöèàëèçàöèÿ ñòåêà
out SPL,temp
ldi temp,0b11111111;âõîäû è âûõîäû ïîðòà B
out DDRB,temp
ldi temp,0b10000011;âõîäû è âûõîäû ïîðòà D
out DDRD,temp
ldi temp,0b00000000;íà÷àëüíîå ñîñòîÿíèå ïîðòà B è ïîäòÿæêà
out PortB,temp
ldi temp,0b11110000;íà÷àëüíîå ñîñòîÿíèå ïîðòà D è ïîäòÿæêà
out PortD,temp
ldi temp,0x80;
out ACSR,temp
ldi Temp,0b11000000;ðàçðåøàåì ïðåðûâàíèå INT0 è INT1
out GIMSK,Temp
ldi Temp,0b00001110; INT1 ïî âîçðàñòàþùåìó, INT0 ïî óáûâàþùåìó ôðîíòó
out MCUCR,Temp
ldi Temp,0b10000000; âûáèðàåì ïðåðûâàíèå ïî ïåðåïîëíåíèþ 1 òàéìåðà
out TIMSK, Temp
ldi Temp,0 ;îáíóëåíèå òàéìåðà
out TCNT1H,Temp
out TCNT1L,Temp
sei
;***************Îñíîâíàÿ ïðîãðàììà*****************
Start:
rjmp Start; áåñêîíå÷íûé öèêë
Добавлено: Ср янв 20, 2010 22:19:59
ARV
а при чем тут ОЗУ? посмотреть можно при помощи меню View.
однако, судя по тому, что вы в стек записываете только младший байт адреса ОЗУ, а раз указатель стека двухбайтный - то причина именно в этом... надо записывать и младший и старший байты указателя стека.
ну и, конечно, корректность обработчика прерываний проверить, и настройки самих прерываний так же.
Добавлено: Ср янв 20, 2010 22:30:00
Dexa
В озу например записываю код нажатой кнопки вот и хочу проверить.
У меня tiny2313, там же однобайтный стек?
Добавлено: Ср янв 20, 2010 23:02:14
ARV
Dexa писал(а):У меня tiny2313, там же однобайтный стек?
да, однобайтный указатель стека.
Добавлено: Чт янв 21, 2010 19:45:45
Dexa
ARV писал(а):
ну и, конечно, корректность обработчика прерываний проверить, и настройки самих прерываний так же.
а можно чуть-чуть подробнее про это?
После выхода из обработчика прерываний INT1 попадаем в основной цикл, а после выхода из INT0 - на вектор reset со всеми вытекающими. Из обучалки:
Reset - прерывание по сбросу (подача 0 на вывод микросхемы "Reset"; или включение питания; или по переполнению сторожевого таймера)
Ни того, ни другого, ни третьего вроде у меня нет.
Добавлено: Чт янв 21, 2010 20:45:56
ARV
поподробнее нелья - не видя кода о чем говорить?