ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Обсуждаем контроллеры компании Atmel.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Arlleex »

.db 254
Что это будет означать?
данные - 254 или 11111110 - это символ 8 на индикаторе.
А как ссылаться на эту область памяти? LPM?
Не умеешь - не берись, но не взявшись не научишься...
Реклама
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Arlleex »

И еще, как определить, где в ПЗУ памяти программ расположились указанные байты?
после всего кода?
т.е. допустим, последним был обработчик прерывания, команда reti была последней командой, и ее адрес был 0x190, значит, что в 0x191 будет расположен 1й параметр директивы .db?
Не умеешь - не берись, но не взявшись не научишься...
Реклама
Аватара пользователя
Rimsky
Грызет канифоль
Сообщения: 299
Зарегистрирован: Вт июн 15, 2010 07:16:42
Откуда: Иркутск
Контактная информация:

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Rimsky »

И еще, как определить, где в ПЗУ памяти программ расположились указанные байты?
после всего кода?
т.е. допустим, последним был обработчик прерывания, команда reti была последней командой, и ее адрес был 0x190, значит, что в 0x191 будет расположен 1й параметр директивы .db?
Вы спрашиваете или просто попиз..ть и поморочить народу голову? Судя по Вашему статусу, и количеству сообщений, такие вопросы это не Ваш уровень :))
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Arlleex »

расположен 1й параметр директивы .db?
Это что?
Вам какая разница, какой у меня уровень?
Я спрашиваю, и читаю другие источники, чтобы научиться! Есть вопросы? :evil: :wink:
Не умеешь - не берись, но не взявшись не научишься...
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение 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
И еще, как определить, где в ПЗУ памяти программ расположились указанные байты?
Где в программе записаны, там и есть.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Реклама
NebelWefer
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение NebelWefer »

вопрос такой: в устройстве по кнопке идет циклическое переключение светодиодов. проверка происходит по таймеру 25 Гц.
когда включаю схему диоды начинают мигать словно я держу кнопку постоянно.
пин для кнопки(PD6) сконфигурирован как вход и включен подтягвающий резистор

Код: Выделить всё

PORTD=0b1000000;
DDRD=0x3F;
кнопка замыкает соответственно 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;  
             }
          } ;
Почему такое может быть? Нужен внешний подтяг. резистор?
Реклама
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Gudd-Head »

NebelWefer писал(а):Почему такое может быть? Нужен внешний подтяг. резистор?
А как у вас кнопка подключена?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
NebelWefer
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение NebelWefer »

вот подключение кнопки, стандартное вроде....

получается, что не трогая кнопку, диоды все равно моргают, будто подтягивающий резистор не работает и вход висит в воздухе
Вложения
but.PNG
(1.89 КБ) 402 скачивания
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Pooher »

Кнопка на PD6, подтяжка на PD7?
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение ibiza11 »

добавлю к сообщению Pooher`а в программе PORTD, на картинке PORTB.
Ставим плюсы: )
NebelWefer
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение NebelWefer »

ibiza11 писал(а):добавлю к сообщению Pooher`а в программе PORTD, на картинке PORTB.
да, на картинке ошибся, там должен быть PD6,
Pooher писал(а):Кнопка на PD6, подтяжка на PD7?
почему? 0b1000000 - утановка 6го бита, и кнопка на PD6. PD7 отсутствует у 2313
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Gudd-Head »

NebelWefer писал(а):почему? 0b1000000 - утановка 6го бита, и кнопка на PD6. PD7 отсутствует у 2313
Бред. Пишите корректно: 0b01000000, даже если 7-ой бит отсутствует. За вас никто не будет думать, есть 7-ой бит или нет.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
NebelWefer
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение NebelWefer »

В чем же бред? :evil: ничего некорректного в данной записи нет.
Зачем думать про 7й бит(есть он или нет) когда речь идет о 6м?
может тогда и до 16ти разрядного числа расширять?
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение ibiza11 »

ножка настроена на ввод, подтяжка включена...
приведенный код вроде должен работать, схема подключения правильная... померьте напряжение на ножке PD6 без нажатия кнопки. может коротит где-нибудь на землю?
Ставим плюсы: )
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Gudd-Head »

NebelWefer писал(а):Зачем думать про 7й бит(есть он или нет) когда речь идет о 6м?
А затем, что вы ставите "1" сразу после "0b", т.е. в седьмой разряд.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Pooher »

Не, ну это полный 1.14здец!
Ты записываешь в ВОСЬМИБИТНЫЙ РЕГИСТР ПОРТА число 0b10000000 => устанавливаешь СЕДЬМОЙ его бит. Компилятору и МК ГЛУБОКО ПОФИГУ есть он ФИЗИЧЕСКИ или его нет!

ЗЫ: Ну попробуй, запиши 0b01000000
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
NebelWefer
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение NebelWefer »

Pooher
Считать умеем?
NebelWefer писал(а):0b1000000
6й бит!
регистр порта D -7 битный - вот я и записываю в него 7битное число.

врать не буду-не знаю точно какое число бы записалось если бы регистр был 8битный: 0b01000000 или 0b10000000.
Но с 7битным ситуация предельно ясна.
Pooher писал(а):ЗЫ: Ну попробуй, запиши 0b01000000
Пожалуйста! только ради Вас сударь проверил

Код: Выделить всё

PORTD=0b01000000;
DDRD=0x3F;
результат НЕ ИЗМЕНИЛСЯ!
Gudd-Head писал(а):А затем, что вы ставите "1" сразу после "0b", т.е. в седьмой разряд.
И кто же сказал, что после 0b идет обязательно 7й бит? все рависит от разрядности числа, в данном случае число 7битное.

ЗЫ: по делу: отключил встроенную подтяжку и поставил резистор на 5к6 на плюс-все заработало как часы...только теперь с дребезгом разобраться надо....

Кстати, а если во время выполнения процедуры обработки прерывания таймера придет новое прерывание от него же оно выполниться?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Gudd-Head »

NebelWefer писал(а):Кстати, а если во время выполнения процедуры обработки прерывания таймера придет новое прерывание от него же оно выполниться?
Сударь! Если во время одного прерывания возникло другое, то об этом будет выставлен соответствующий флаг. Если вы разрешили прерывания в обработке соответвтвующего прерывания, то прерывание произойдёт. А если нет — прерывание будет после выхода из предыдущего прерывания.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
NebelWefer
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение NebelWefer »

Ясно, спасибо.
Я это к тому где лучше разместить задержку для устранения дребезга кнопки в таймере или в основном теле.
1/25 сек явно достаточно быстро чтобы сканирование кнопки успело пройти несколько раз, а скапливающиеся прерывания наверно не есть гут :dont_know:
Лучше наверно разместить проверку в основно цикле.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Gudd-Head »

NebelWefer писал(а):Я это к тому где лучше разместить задержку для устранения дребезга кнопки в таймере или в основном теле.
Всё дело в том, как у вас происходит обработка нажатия на кнопку. Если по прерыванию от нажатия на кнопку — то достаточно анулировать флаг повторного случайного нажатия на кнопку (прерывания) записью лог. "1" в соотв. флаг.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ответить

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