ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
.db 254
Что это будет означать?
данные - 254 или 11111110 - это символ 8 на индикаторе.
А как ссылаться на эту область памяти? LPM?
Что это будет означать?
данные - 254 или 11111110 - это символ 8 на индикаторе.
А как ссылаться на эту область памяти? LPM?
Не умеешь - не берись, но не взявшись не научишься...
- Реклама
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
И еще, как определить, где в ПЗУ памяти программ расположились указанные байты?
после всего кода?
т.е. допустим, последним был обработчик прерывания, команда reti была последней командой, и ее адрес был 0x190, значит, что в 0x191 будет расположен 1й параметр директивы .db?
после всего кода?
т.е. допустим, последним был обработчик прерывания, команда reti была последней командой, и ее адрес был 0x190, значит, что в 0x191 будет расположен 1й параметр директивы .db?
Не умеешь - не берись, но не взявшись не научишься...
- Rimsky
- Грызет канифоль
- Сообщения: 299
- Зарегистрирован: Вт июн 15, 2010 07:16:42
- Откуда: Иркутск
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Вы спрашиваете или просто попиз..ть и поморочить народу голову? Судя по Вашему статусу, и количеству сообщений, такие вопросы это не Ваш уровеньИ еще, как определить, где в ПЗУ памяти программ расположились указанные байты?
после всего кода?
т.е. допустим, последним был обработчик прерывания, команда reti была последней командой, и ее адрес был 0x190, значит, что в 0x191 будет расположен 1й параметр директивы .db?
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Это что?расположен 1й параметр директивы .db?
Вам какая разница, какой у меня уровень?
Я спрашиваю, и читаю другие источники, чтобы научиться! Есть вопросы?
Не умеешь - не берись, но не взявшись не научишься...
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Применительно к АСМу.
Конкретно в НЕХе будет записано "FE".
А в чём разница между "254" и "11111110"?.db 254
Что это будет означать?
данные - 254 или 11111110 - это символ 8 на индикаторе.
Конкретно в НЕХе будет записано "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Где в программе записаны, там и есть.И еще, как определить, где в ПЗУ памяти программ расположились указанные байты?
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
- Реклама
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
вопрос такой: в устройстве по кнопке идет циклическое переключение светодиодов. проверка происходит по таймеру 25 Гц.
когда включаю схему диоды начинают мигать словно я держу кнопку постоянно.
пин для кнопки(PD6) сконфигурирован как вход и включен подтягвающий резистор
кнопка замыкает соответственно PD6 на землю.
код проверки:
Почему такое может быть? Нужен внешний подтяг. резистор?
когда включаю схему диоды начинают мигать словно я держу кнопку постоянно.
пин для кнопки(PD6) сконфигурирован как вход и включен подтягвающий резистор
Код: Выделить всё
PORTD=0b1000000;
DDRD=0x3F;
код проверки:
Код: Выделить всё
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;
}
} ;
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
А как у вас кнопка подключена?NebelWefer писал(а):Почему такое может быть? Нужен внешний подтяг. резистор?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
вот подключение кнопки, стандартное вроде....
получается, что не трогая кнопку, диоды все равно моргают, будто подтягивающий резистор не работает и вход висит в воздухе
получается, что не трогая кнопку, диоды все равно моргают, будто подтягивающий резистор не работает и вход висит в воздухе
- Вложения
-
- but.PNG
- (1.89 КБ) 402 скачивания
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Кнопка на PD6, подтяжка на PD7?
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
добавлю к сообщению Pooher`а в программе PORTD, на картинке PORTB.
Ставим плюсы: )
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
да, на картинке ошибся, там должен быть PD6,ibiza11 писал(а):добавлю к сообщению Pooher`а в программе PORTD, на картинке PORTB.
почему? 0b1000000 - утановка 6го бита, и кнопка на PD6. PD7 отсутствует у 2313Pooher писал(а):Кнопка на PD6, подтяжка на PD7?
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Бред. Пишите корректно: 0b01000000, даже если 7-ой бит отсутствует. За вас никто не будет думать, есть 7-ой бит или нет.NebelWefer писал(а):почему? 0b1000000 - утановка 6го бита, и кнопка на PD6. PD7 отсутствует у 2313
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
В чем же бред?
ничего некорректного в данной записи нет.
Зачем думать про 7й бит(есть он или нет) когда речь идет о 6м?
может тогда и до 16ти разрядного числа расширять?
Зачем думать про 7й бит(есть он или нет) когда речь идет о 6м?
может тогда и до 16ти разрядного числа расширять?
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
ножка настроена на ввод, подтяжка включена...
приведенный код вроде должен работать, схема подключения правильная... померьте напряжение на ножке PD6 без нажатия кнопки. может коротит где-нибудь на землю?
приведенный код вроде должен работать, схема подключения правильная... померьте напряжение на ножке PD6 без нажатия кнопки. может коротит где-нибудь на землю?
Ставим плюсы: )
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
А затем, что вы ставите "1" сразу после "0b", т.е. в седьмой разряд.NebelWefer писал(а):Зачем думать про 7й бит(есть он или нет) когда речь идет о 6м?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Не, ну это полный 1.14здец!
Ты записываешь в ВОСЬМИБИТНЫЙ РЕГИСТР ПОРТА число 0b10000000 => устанавливаешь СЕДЬМОЙ его бит. Компилятору и МК ГЛУБОКО ПОФИГУ есть он ФИЗИЧЕСКИ или его нет!
ЗЫ: Ну попробуй, запиши 0b01000000
Ты записываешь в ВОСЬМИБИТНЫЙ РЕГИСТР ПОРТА число 0b10000000 => устанавливаешь СЕДЬМОЙ его бит. Компилятору и МК ГЛУБОКО ПОФИГУ есть он ФИЗИЧЕСКИ или его нет!
ЗЫ: Ну попробуй, запиши 0b01000000
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Pooher
Считать умеем?
регистр порта D -7 битный - вот я и записываю в него 7битное число.
врать не буду-не знаю точно какое число бы записалось если бы регистр был 8битный: 0b01000000 или 0b10000000.
Но с 7битным ситуация предельно ясна.
результат НЕ ИЗМЕНИЛСЯ!
ЗЫ: по делу: отключил встроенную подтяжку и поставил резистор на 5к6 на плюс-все заработало как часы...только теперь с дребезгом разобраться надо....
Кстати, а если во время выполнения процедуры обработки прерывания таймера придет новое прерывание от него же оно выполниться?
Считать умеем?
6й бит!NebelWefer писал(а):0b1000000
регистр порта D -7 битный - вот я и записываю в него 7битное число.
врать не буду-не знаю точно какое число бы записалось если бы регистр был 8битный: 0b01000000 или 0b10000000.
Но с 7битным ситуация предельно ясна.
Пожалуйста! только ради Вас сударь проверилPooher писал(а):ЗЫ: Ну попробуй, запиши 0b01000000
Код: Выделить всё
PORTD=0b01000000;
DDRD=0x3F;И кто же сказал, что после 0b идет обязательно 7й бит? все рависит от разрядности числа, в данном случае число 7битное.Gudd-Head писал(а):А затем, что вы ставите "1" сразу после "0b", т.е. в седьмой разряд.
ЗЫ: по делу: отключил встроенную подтяжку и поставил резистор на 5к6 на плюс-все заработало как часы...только теперь с дребезгом разобраться надо....
Кстати, а если во время выполнения процедуры обработки прерывания таймера придет новое прерывание от него же оно выполниться?
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Сударь! Если во время одного прерывания возникло другое, то об этом будет выставлен соответствующий флаг. Если вы разрешили прерывания в обработке соответвтвующего прерывания, то прерывание произойдёт. А если нет — прерывание будет после выхода из предыдущего прерывания.NebelWefer писал(а):Кстати, а если во время выполнения процедуры обработки прерывания таймера придет новое прерывание от него же оно выполниться?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Ясно, спасибо.
Я это к тому где лучше разместить задержку для устранения дребезга кнопки в таймере или в основном теле.
1/25 сек явно достаточно быстро чтобы сканирование кнопки успело пройти несколько раз, а скапливающиеся прерывания наверно не есть гут
Лучше наверно разместить проверку в основно цикле.
Я это к тому где лучше разместить задержку для устранения дребезга кнопки в таймере или в основном теле.
1/25 сек явно достаточно быстро чтобы сканирование кнопки успело пройти несколько раз, а скапливающиеся прерывания наверно не есть гут
Лучше наверно разместить проверку в основно цикле.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Всё дело в том, как у вас происходит обработка нажатия на кнопку. Если по прерыванию от нажатия на кнопку — то достаточно анулировать флаг повторного случайного нажатия на кнопку (прерывания) записью лог. "1" в соотв. флаг.NebelWefer писал(а):Я это к тому где лучше разместить задержку для устранения дребезга кнопки в таймере или в основном теле.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]


