Страница 60 из 132
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Сб авг 21, 2010 17:02:52
Arlleex
.db 254
Что это будет означать?
данные - 254 или 11111110 - это символ 8 на индикаторе.
А как ссылаться на эту область памяти? LPM?
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Сб авг 21, 2010 17:31:24
Arlleex
И еще, как определить, где в ПЗУ памяти программ расположились указанные байты?
после всего кода?
т.е. допустим, последним был обработчик прерывания, команда reti была последней командой, и ее адрес был 0x190, значит, что в 0x191 будет расположен 1й параметр директивы .db?
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Сб авг 21, 2010 17:46:40
Rimsky
И еще, как определить, где в ПЗУ памяти программ расположились указанные байты?
после всего кода?
т.е. допустим, последним был обработчик прерывания, команда reti была последней командой, и ее адрес был 0x190, значит, что в 0x191 будет расположен 1й параметр директивы .db?
Вы спрашиваете или просто попиз..ть и поморочить народу голову? Судя по Вашему статусу, и количеству сообщений, такие вопросы это не Ваш уровень

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Сб авг 21, 2010 18:57:15
Arlleex
расположен 1й параметр директивы .db?
Это что?
Вам какая разница, какой у меня уровень?
Я спрашиваю, и читаю другие источники, чтобы научиться! Есть вопросы?

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 13:15:01
Pooher
Применительно к АСМу.
.db 254
Что это будет означать?
данные - 254 или 11111110 - это символ 8 на индикаторе.
А в чём разница между "254" и "11111110"?
Конкретно в НЕХе будет записано "FE".
А как ссылаться на эту область памяти? LPM?
Код: Выделить всё
Array:
.db 1, 2, 3, 4
ReadArray:
clr r16
ldi ZL, LOW(Array*2)
ldi ZH, HIGH(Array*2)
add ZL, r17 ; в r17 индекс элемента
adc ZH, r16
lpm r16, Z
ret
И еще, как определить, где в ПЗУ памяти программ расположились указанные байты?
Где в программе записаны, там и есть.
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 15:21:53
NebelWefer
вопрос такой: в устройстве по кнопке идет циклическое переключение светодиодов. проверка происходит по таймеру 25 Гц.
когда включаю схему диоды начинают мигать словно я держу кнопку постоянно.
пин для кнопки(PD6) сконфигурирован как вход и включен подтягвающий резистор
кнопка замыкает соответственно PD6 на землю.
код проверки:
Код: Выделить всё
if (PIND.6==0)
{
PORTA.0=0;
PORTA.1=0;
PORTB.7=0;
#asm("nop");
#asm("nop");
state++;
switch(state)
{
case 0:PORTA.0=1;break;
case 1:PORTA.1=1;break;
case 2:PORTA.1=1;PORTA.0=1;break;
case 3:PORTB.7=1;break;
case 4:PORTB.7=1;PORTA.0=1;break;
case 5:PORTB.7=1;PORTA.1=1;state=-1;break;
}
} ;
Почему такое может быть? Нужен внешний подтяг. резистор?
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 17:13:37
Gudd-Head
NebelWefer писал(а):Почему такое может быть? Нужен внешний подтяг. резистор?
А как у вас кнопка подключена?
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 18:11:09
NebelWefer
вот подключение кнопки, стандартное вроде....
получается, что не трогая кнопку, диоды все равно моргают, будто подтягивающий резистор не работает и вход висит в воздухе
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 18:25:35
Pooher
Кнопка на PD6, подтяжка на PD7?
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 18:50:52
ibiza11
добавлю к сообщению Pooher`а в программе PORTD, на картинке PORTB.
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 19:27:16
NebelWefer
ibiza11 писал(а):добавлю к сообщению Pooher`а в программе PORTD, на картинке PORTB.
да, на картинке ошибся, там должен быть PD6,
Pooher писал(а):Кнопка на PD6, подтяжка на PD7?
почему? 0b1000000 - утановка 6го бита, и кнопка на PD6. PD7 отсутствует у 2313
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 19:48:45
Gudd-Head
NebelWefer писал(а):почему? 0b1000000 - утановка 6го бита, и кнопка на PD6. PD7 отсутствует у 2313
Бред. Пишите корректно: 0b01000000, даже если 7-ой бит отсутствует. За вас никто не будет думать, есть 7-ой бит или нет.
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 20:07:05
NebelWefer
В чем же бред?

ничего некорректного в данной записи нет.
Зачем думать про 7й бит(есть он или нет) когда речь идет о 6м?
может тогда и до 16ти разрядного числа расширять?
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 20:22:06
ibiza11
ножка настроена на ввод, подтяжка включена...
приведенный код вроде должен работать, схема подключения правильная... померьте напряжение на ножке PD6 без нажатия кнопки. может коротит где-нибудь на землю?
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 21:10:34
Gudd-Head
NebelWefer писал(а):Зачем думать про 7й бит(есть он или нет) когда речь идет о 6м?
А затем, что вы ставите "1" сразу после "0b", т.е. в седьмой разряд.
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 21:14:34
Pooher
Не, ну это полный 1.14здец!
Ты записываешь в ВОСЬМИБИТНЫЙ РЕГИСТР ПОРТА число 0b10000000 => устанавливаешь СЕДЬМОЙ его бит. Компилятору и МК ГЛУБОКО ПОФИГУ есть он ФИЗИЧЕСКИ или его нет!
ЗЫ: Ну попробуй, запиши 0b01000000
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 22:55:05
NebelWefer
Pooher
Считать умеем?
NebelWefer писал(а):0b1000000
6й бит!
регистр порта D -7 битный - вот я и записываю в него 7битное число.
врать не буду-не знаю точно какое число бы записалось если бы регистр был 8битный: 0b01000000 или 0b10000000.
Но с 7битным ситуация предельно ясна.
Pooher писал(а):ЗЫ: Ну попробуй, запиши 0b01000000
Пожалуйста! только ради Вас сударь проверил
результат НЕ ИЗМЕНИЛСЯ!
Gudd-Head писал(а):А затем, что вы ставите "1" сразу после "0b", т.е. в седьмой разряд.
И кто же сказал, что после 0b идет обязательно 7й бит? все рависит от разрядности числа, в данном случае число 7битное.
ЗЫ:
по делу: отключил встроенную подтяжку и поставил резистор на 5к6 на плюс-все заработало как часы...только теперь с дребезгом разобраться надо....
Кстати, а если во время выполнения процедуры обработки прерывания таймера придет новое прерывание от него же оно выполниться?
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 23:16:46
Gudd-Head
NebelWefer писал(а):Кстати, а если во время выполнения процедуры обработки прерывания таймера придет новое прерывание от него же оно выполниться?
Сударь! Если во время одного прерывания возникло другое, то об этом будет выставлен соответствующий флаг. Если вы разрешили прерывания в обработке соответвтвующего прерывания, то прерывание произойдёт. А если нет — прерывание будет после выхода из предыдущего прерывания.
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 23:22:46
NebelWefer
Ясно, спасибо.
Я это к тому где лучше разместить задержку для устранения дребезга кнопки в таймере или в основном теле.
1/25 сек явно достаточно быстро чтобы сканирование кнопки успело пройти несколько раз, а скапливающиеся прерывания наверно не есть гут
Лучше наверно разместить проверку в основно цикле.
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Добавлено: Вс авг 22, 2010 23:51:55
Gudd-Head
NebelWefer писал(а):Я это к тому где лучше разместить задержку для устранения дребезга кнопки в таймере или в основном теле.
Всё дело в том, как у вас происходит обработка нажатия на кнопку. Если по прерыванию от нажатия на кнопку — то достаточно анулировать флаг повторного случайного нажатия на кнопку (прерывания) записью лог. "1" в соотв. флаг.