ARV писал(а): В первых документах для имен некоторых битов и для имени регистра использовались одни и те же обозначения (SP и Z)
Нельзя ли уточнить в каких строках файла tn2313def.inc использовались одни и те же обозначения (SP и Z)
Действительно, если заремарить строки: .equ Z = 1 и .equ OR = 3 , то все компилируется без ошибок.
Спасибо.
ну, не забывайте, что те квадратики, что студия вам показывает в качестве PIND - это сигналы, которые якобы приходят на пины ИЗВНЕ, т.е. вы их сами должны установить. изнутри студии они не управляемы.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Уважаемые коты, поздравляю с Новым Годом и Рождеством, был в отъезде, поэтому запоздал с поздравлениями и ответом. Прикрепляю архив со своим бегущим огнем. Так, пока, и не пойму где я туплю.
Хочу уточнить. К примеру, кнопка без фиксации подключена к входу PD0, другим концом к шине 0 В. Когда кнопка нажата на входе будет низкий уровень. Чтобы при ненажатой кнопке на входе PD0 был высокий уровень напряжения включаем подтяжку
ldi temp,0b00000001
out PortD,temp
Дальше я буду проверять состояние входа PD0 с помощью
sbic PinD,0 ; кнопка нажата - то пропускаем строку
Но состояние бита 0 в регистре PinD не меняется - бит всегда сброшен. Для чего же нужна подтяжка?
Пин надо настроить на вход с z состоянием, подтянуть внешним резистором, на пример 10к, к +, а кнопку подключить через резистор 100Ом к -. С Вашим подключением и настройками я не удивлюсь, если уже спален порт.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Андрейка, вы пытаетесь доказать, что студия должна под вас подстраиваться? а я утверждаю, что это вам придется подстраиваться под нее: биты в PINx устанавливаются пользователем вручную, при этом то, что при выводе в PORTx единицы в то время, как порт настроен на ввод должно включать подтяжку, студия просто игнорирует. и все тут - это у нее фича такая. нужна вам единица - поставьте ее вручную, а по состоянию PORTx убедитесь, что "подтяжка" как бы там есть
Pooher, не нужно никакого внешнего резистора на кнопку, если она, конечно, не метровым проводником к МК подключена - хватает встроенной подтяжки.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
ser temp ; PB0-выход, остальные не используются
out DDRB,temp ;
ldi temp,0b00000001 ;
out PortB,temp; PB0-вкл., остальные не используются
после этого бит 0 PinB устанавливается, но ведь физически на выходе PB0 нет напряжения.
Получается, что когда работаем с выходами биты в PinХ изменяются, а с входами - нет.
Еще есть вопросики.
Если выводы не используем, то как их лучше определять как отключенные выходы или как включенные (подтяжкой) входа?
Надо ли применять на практике последовательные токоограничивающие резисторы? Например, как советует Pooher,
последовательно с моей кнопкой на шину 0В.
ser temp ; PB0-выход, остальные не используются
out DDRB,temp ;
ldi temp,0b00000001 ;
out PortB,temp; PB0-вкл., остальные не используются
после этого бит 0 PinB устанавливается, но ведь физически на выходе PB0 нет напряжения.
По идее на выходе PB0 должен быть уровень лог.1.
Андрейка писал(а):Если выводы не используем, то как их лучше определять как отключенные выходы или как включенные (подтяжкой) входа?
Как хочешь
Андрейка писал(а):Надо ли применять на практике последовательные токоограничивающие резисторы? Например, как советует Pooher,
последовательно с моей кнопкой на шину 0В.
Никаких токоограничительных резисторов не требуется. Цепляется кнопка на вход порта и включается внутренний резистор. И всё.
Андрейка писал(а):Надо ли применять на практике последовательные токоограничивающие резисторы? Например, как советует Pooher,
последовательно с моей кнопкой на шину 0В.
Никаких токоограничительных резисторов не требуется. Цепляется кнопка на вход порта и включается внутренний резистор. И всё.
Спешу себя поправить: на отладочной плате токоограничительный резистор желателен и даже необходим, дабы избежать кз выхода на землю при ошибке конфигурации порта. А вот в конечном устройстве такой резистор не нужен.
если не гонитесь за минимальным энергопотреблением - неиспользуемые выводы можете бросить в любом состоянии неподключенными. для лучшей помехоустойчивости не желательно осталвять их в состоянии входов, хотя опять же, это для домашних экспериментов некритично. сброс лучше не бросать неподключенным, если ручонками хватать работающую схему - от наводок с рук будет сбрасываться - соединить его с питанием через резистор 1-10к (можно и напрямую) и через кондерчик на общий.
кнопки в готовых изделиях без всяких резисторов, но при условии, что они рядом с МК. если линии длинные - лучше использовать внешние подтяжки (внутренняя подтяжка 40-70 килоом, а внешнюю желательно ставить 1-10 килоом). на длинных линиях параллельно кнопке конденсатор 0,1 мкф не помешает.
в общем, для игрушек - ничего не надо, а для серьезных изделий - лучше перебдеть.
резистор последовательно с кнопкой - это страховка от кривых рук или больной головы. т.е. момогает спасти порт МК, если он назначен выходом, а кнопку нажали и закоротили его на общий.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Кто-нибудь знает как в studio посмотреть что записывается в ОЗУ в режиме отладки?
p.s. после выхода из обработчика прерываний попадаю на вектор reset а потом соответственно на инициализацию, а должен же попасть основную программу, где собака зарыта?
а при чем тут ОЗУ? посмотреть можно при помощи меню View.
однако, судя по тому, что вы в стек записываете только младший байт адреса ОЗУ, а раз указатель стека двухбайтный - то причина именно в этом... надо записывать и младший и старший байты указателя стека.
ну и, конечно, корректность обработчика прерываний проверить, и настройки самих прерываний так же.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
ARV писал(а):
ну и, конечно, корректность обработчика прерываний проверить, и настройки самих прерываний так же.
а можно чуть-чуть подробнее про это?
После выхода из обработчика прерываний INT1 попадаем в основной цикл, а после выхода из INT0 - на вектор reset со всеми вытекающими. Из обучалки:
Reset - прерывание по сбросу (подача 0 на вывод микросхемы "Reset"; или включение питания; или по переполнению сторожевого таймера)
Ни того, ни другого, ни третьего вроде у меня нет.
......aлкоголь расширяет сосуды, курение их сужает, а сдают почему-то нервы......