AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Андрейка
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пт июн 19, 2009 15:05:38
Откуда: Кострома
Контактная информация:

Сообщение Андрейка »

ARV писал(а): В первых документах для имен некоторых битов и для имени регистра использовались одни и те же обозначения (SP и Z)


Нельзя ли уточнить в каких строках файла tn2313def.inc использовались одни и те же обозначения (SP и Z)
Действительно, если заремарить строки: .equ Z = 1 и .equ OR = 3 , то все компилируется без ошибок.
Спасибо.
Андрейка
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Андрейка писал(а):Нельзя ли уточнить в каких строках файла tn2313def.inc использовались одни и те же обозначения (SP и Z)
я напутал - действительно, речь о OR, а не о SP...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Андрейка
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пт июн 19, 2009 15:05:38
Откуда: Кострома
Контактная информация:

Сообщение Андрейка »

Еще вопросик.

ldi temp,0b11111110 ; PD0-вход, остальные не используются
out DDRD,temp ;

ldi temp,0b00000001 ;
out PortD,temp ; PD0-подтяжка, остальные не используются

В процессе отладки наблюдаем, что бит 0 регистра PortD устанавливается, но почему-то не устанавливается бит 0 регистра PinD?
Андрейка
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

ну, не забывайте, что те квадратики, что студия вам показывает в качестве PIND - это сигналы, которые якобы приходят на пины ИЗВНЕ, т.е. вы их сами должны установить. изнутри студии они не управляемы.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
almir
Открыл глаза
Сообщения: 41
Зарегистрирован: Чт ноя 05, 2009 14:34:53

Сообщение almir »

Уважаемые коты, поздравляю с Новым Годом и Рождеством, был в отъезде, поэтому запоздал с поздравлениями и ответом. Прикрепляю архив со своим бегущим огнем. Так, пока, и не пойму где я туплю.
Вложения
runfire3.zip
(11.85 КБ) 257 скачиваний
я не схемотехник, я только учусь
Андрейка
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пт июн 19, 2009 15:05:38
Откуда: Кострома
Контактная информация:

Сообщение Андрейка »

Хочу уточнить. К примеру, кнопка без фиксации подключена к входу PD0, другим концом к шине 0 В. Когда кнопка нажата на входе будет низкий уровень. Чтобы при ненажатой кнопке на входе PD0 был высокий уровень напряжения включаем подтяжку

ldi temp,0b00000001
out PortD,temp

Дальше я буду проверять состояние входа PD0 с помощью

sbic PinD,0 ; кнопка нажата - то пропускаем строку

Но состояние бита 0 в регистре PinD не меняется - бит всегда сброшен. Для чего же нужна подтяжка?
Андрейка
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

Пин надо настроить на вход с z состоянием, подтянуть внешним резистором, на пример 10к, к +, а кнопку подключить через резистор 100Ом к -. С Вашим подключением и настройками я не удивлюсь, если уже спален порт.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Андрейка, вы пытаетесь доказать, что студия должна под вас подстраиваться? а я утверждаю, что это вам придется подстраиваться под нее: биты в PINx устанавливаются пользователем вручную, при этом то, что при выводе в PORTx единицы в то время, как порт настроен на ввод должно включать подтяжку, студия просто игнорирует. и все тут - это у нее фича такая. нужна вам единица - поставьте ее вручную, а по состоянию PORTx убедитесь, что "подтяжка" как бы там есть :)

Pooher, не нужно никакого внешнего резистора на кнопку, если она, конечно, не метровым проводником к МК подключена - хватает встроенной подтяжки.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Андрейка
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пт июн 19, 2009 15:05:38
Откуда: Кострома
Контактная информация:

Сообщение Андрейка »

Дело в следующем

ser temp ; PB0-выход, остальные не используются
out DDRB,temp ;

ldi temp,0b00000001 ;
out PortB,temp; PB0-вкл., остальные не используются

после этого бит 0 PinB устанавливается, но ведь физически на выходе PB0 нет напряжения.
Получается, что когда работаем с выходами биты в PinХ изменяются, а с входами - нет.
Еще есть вопросики.
Если выводы не используем, то как их лучше определять как отключенные выходы или как включенные (подтяжкой) входа?
Надо ли применять на практике последовательные токоограничивающие резисторы? Например, как советует Pooher,
последовательно с моей кнопкой на шину 0В.
Андрейка
Аватара пользователя
Ёжкин Кот
Родился
Сообщения: 9
Зарегистрирован: Вт авг 04, 2009 08:30:00
Откуда: из дремучего расейского леса

Сообщение Ёжкин Кот »

Андрейка писал(а):Дело в следующем

ser temp ; PB0-выход, остальные не используются
out DDRB,temp ;

ldi temp,0b00000001 ;
out PortB,temp; PB0-вкл., остальные не используются

после этого бит 0 PinB устанавливается, но ведь физически на выходе PB0 нет напряжения.

По идее на выходе PB0 должен быть уровень лог.1.

Андрейка писал(а):Если выводы не используем, то как их лучше определять как отключенные выходы или как включенные (подтяжкой) входа?

Как хочешь :)

Андрейка писал(а):Надо ли применять на практике последовательные токоограничивающие резисторы? Например, как советует Pooher,
последовательно с моей кнопкой на шину 0В.

Никаких токоограничительных резисторов не требуется. Цепляется кнопка на вход порта и включается внутренний резистор. И всё.
Аватара пользователя
Ёжкин Кот
Родился
Сообщения: 9
Зарегистрирован: Вт авг 04, 2009 08:30:00
Откуда: из дремучего расейского леса

Сообщение Ёжкин Кот »

Ёжкин Кот писал(а):
Андрейка писал(а):Надо ли применять на практике последовательные токоограничивающие резисторы? Например, как советует Pooher,
последовательно с моей кнопкой на шину 0В.

Никаких токоограничительных резисторов не требуется. Цепляется кнопка на вход порта и включается внутренний резистор. И всё.

Спешу себя поправить: на отладочной плате токоограничительный резистор желателен и даже необходим, дабы избежать кз выхода на землю при ошибке конфигурации порта. А вот в конечном устройстве такой резистор не нужен.
Андрейка
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пт июн 19, 2009 15:05:38
Откуда: Кострома
Контактная информация:

Сообщение Андрейка »

Благодарю. A куды делся ARV, хочу узнать его мнение.
Андрейка
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

если не гонитесь за минимальным энергопотреблением - неиспользуемые выводы можете бросить в любом состоянии неподключенными. для лучшей помехоустойчивости не желательно осталвять их в состоянии входов, хотя опять же, это для домашних экспериментов некритично. сброс лучше не бросать неподключенным, если ручонками хватать работающую схему - от наводок с рук будет сбрасываться - соединить его с питанием через резистор 1-10к (можно и напрямую) и через кондерчик на общий.
кнопки в готовых изделиях без всяких резисторов, но при условии, что они рядом с МК. если линии длинные - лучше использовать внешние подтяжки (внутренняя подтяжка 40-70 килоом, а внешнюю желательно ставить 1-10 килоом). на длинных линиях параллельно кнопке конденсатор 0,1 мкф не помешает.

в общем, для игрушек - ничего не надо, а для серьезных изделий - лучше перебдеть.

резистор последовательно с кнопкой - это страховка от кривых рук или больной головы. т.е. момогает спасти порт МК, если он назначен выходом, а кнопку нажали и закоротили его на общий.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Андрейка
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пт июн 19, 2009 15:05:38
Откуда: Кострома
Контактная информация:

Сообщение Андрейка »

Спасибо. Пока вопросов не имею.
Андрейка
Аватара пользователя
Dexa
Встал на лапы
Сообщения: 119
Зарегистрирован: Ср ноя 07, 2007 15:17:20
Контактная информация:

Сообщение 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; áåñêîíå÷íûé öèêë
......aлкоголь расширяет сосуды, курение их сужает, а сдают почему-то нервы......
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

а при чем тут ОЗУ? посмотреть можно при помощи меню View.

однако, судя по тому, что вы в стек записываете только младший байт адреса ОЗУ, а раз указатель стека двухбайтный - то причина именно в этом... надо записывать и младший и старший байты указателя стека.

ну и, конечно, корректность обработчика прерываний проверить, и настройки самих прерываний так же.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Dexa
Встал на лапы
Сообщения: 119
Зарегистрирован: Ср ноя 07, 2007 15:17:20
Контактная информация:

Сообщение Dexa »

В озу например записываю код нажатой кнопки вот и хочу проверить.
У меня tiny2313, там же однобайтный стек?
......aлкоголь расширяет сосуды, курение их сужает, а сдают почему-то нервы......
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Dexa писал(а):У меня tiny2313, там же однобайтный стек?
да, однобайтный указатель стека.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Dexa
Встал на лапы
Сообщения: 119
Зарегистрирован: Ср ноя 07, 2007 15:17:20
Контактная информация:

Сообщение Dexa »

ARV писал(а):ну и, конечно, корректность обработчика прерываний проверить, и настройки самих прерываний так же.

а можно чуть-чуть подробнее про это?
После выхода из обработчика прерываний INT1 попадаем в основной цикл, а после выхода из INT0 - на вектор reset со всеми вытекающими. Из обучалки:
Reset - прерывание по сбросу (подача 0 на вывод микросхемы "Reset"; или включение питания; или по переполнению сторожевого таймера)
Ни того, ни другого, ни третьего вроде у меня нет.
......aлкоголь расширяет сосуды, курение их сужает, а сдают почему-то нервы......
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

поподробнее нелья - не видя кода о чем говорить?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

Вернуться в «AVR»