Модераторы: PILOT, ManiaK, Mazzi

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программное инкримирование таймера AVR 
:(
    Опции темы
Чучмек
Дата 8.11.2011, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: нет
Всего: 41



Подскажите как программно увеличить TCNTx на единицу ?
Код аналогичный следующему - не вариант.
Код

 in r16,TCNT1L
 in r17,TCNT1H
 inc r16
 brne noH
 inc r17
 noH:
 out TCNT1H,r17
 out TCNT1L,r16
 

В связи с нехваткой памяти/регистров для решаемой задачи 
возникла идея использовать регистры 16 разрядного  таймера под счетчик.

Это сообщение отредактировал(а) Чучмек - 8.11.2011, 21:01


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
UniBomb
Дата 9.11.2011, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Цитата(Чучмек @  8.11.2011,  20:02 Найти цитируемый пост)
не вариант

Почему?

Цитата(Чучмек @  8.11.2011,  20:02 Найти цитируемый пост)
нехваткой памяти/регистров для решаемой задачи 

Возможно стоит пересмотреть методы решения задачи?


--------------------
PM MAIL ICQ Skype   Вверх
Чучмек
  Дата 9.11.2011, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: нет
Всего: 41



Цитата(UniBomb @  9.11.2011,  07:55 Найти цитируемый пост)
Возможно стоит пересмотреть методы решения задачи? 

6байт - стек
   2байта под вызов прерывания
   2байта под вызов функций из прерывания
   1байт - передача параметров в функции
   1байт - сохранение регистров в стек 

4байта - 4 отображаемых символа на 7 сегментном индикаторе
2байта - состояние 4х кнопок + антидребезг
2байта - последние, полученные  по i2c данные
2байта - счетчики для двух выходных каналов

Итого 16*8=128бит - ресурс ATtiny2313

r16-r19 - регистры для вычислений
r20-r23- для i2c  (адрес микрухи, адресация памяти в микрухе, два байта данных)
r24 - счетчик ожидания i2c 

r25 - указатель меню

X,Y - используются

Не так уж много остается  smile 
А нужно еще много чего  - как минимум 5 байт.

Цитата

Почему?

Да боюсь, что это, как лезть в окно, когда открыта дверь.
Встречал  упоминание, что возможно объединение двух 16 разрядных таймеров в 32 разрядный
Вот мне и нужно, чтобы переполнение 8 разрядного таймера было тактированием  16 разрядного

Это сообщение отредактировал(а) Чучмек - 9.11.2011, 13:27


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
UniBomb
Дата 9.11.2011, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Цитата(Чучмек @  9.11.2011,  14:16 Найти цитируемый пост)
Итого 16*8=128бит - ресурс ATtiny2313

SRAM у этой тини 128 байт.

Цитата(Чучмек @  9.11.2011,  14:16 Найти цитируемый пост)
r16-r19 ... r20-r23 ... r24 ... r25 

А регистры с r0 по r15?


Теперь хватает?  smile 


--------------------
PM MAIL ICQ Skype   Вверх
Чучмек
Дата 9.11.2011, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: нет
Всего: 41



Цитата(UniBomb @  9.11.2011,  15:18 Найти цитируемый пост)
128 байт.
Действительно срам.
Цитата(UniBomb @  9.11.2011,  15:18 Найти цитируемый пост)
А регистры с r0 по r15?
 а насколько свободно их можно использовать?
Цитата(UniBomb @  9.11.2011,  15:18 Найти цитируемый пост)
Теперь хватает?
 С головой.
Но вопрос открытый.



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
UniBomb
Дата 9.11.2011, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Цитата(Чучмек @  9.11.2011,  16:42 Найти цитируемый пост)
 а насколько свободно их можно использовать?

Есть несколько оговорок. Во-первых регистры r0:r1 используются в качестве "неявных" операндов у некоторых команд. Так например команды умножения (которых нет в семействе тини) используют эти регистры для сохранения результата. Команды работы с памятью программ также используют эти регистры для сохранения/загрузки значений. А во-вторых некоторые команды работают только со старшими регистрами (r16:r32). Подробнее смотри документ "avr Instruction Set", там к каждой команде даётся описание допустимых операндов.

А в остальном их можно использовать совершенно свободно  smile 


Цитата(Чучмек @  9.11.2011,  16:42 Найти цитируемый пост)
Но вопрос открытый.

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

Как по мне - недокументированное использование чего-либо ведёт к недокументированным (или по крайней мере не очевидным) ошибкам smile 


--------------------
PM MAIL ICQ Skype   Вверх
Mazzi
Дата 9.11.2011, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Как вариант можно настроить таймер на подсчёт импульсов от внешнего источника и одновременно этот же вывод назначить выходом. Тогда "дёрнув" этой ножкой (Т1 - выв.9 у аттини2313) получим инкремент таймера Т1.


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
Чучмек
Дата 9.11.2011, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: нет
Всего: 41



К сожалению ног мне тоже не хватает. (на одни и те же ноги вешаю индикатор,кнопки и i2c)
А сейчас узнал, что и RESET под свои цели смогу использовать только после окончательной отладки.
И пока не разобрался, как  использовать XTAL под выход.


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
UniBomb
Дата 10.11.2011, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Чучмек, я не знаю что ты там делаешь, но мне кажется что эот происходит как-то неправильно  smile Обычно под опытную разработку берут мк с запасом, что бы был простор не только для программирования, но и что бы различные отладочные функциональности понавставлять. После этого уже смотрят какой мк подойдёт для серийного изделия, но всё равно с запасом по ресурсам процентов 20. 


Цитата(Чучмек @  9.11.2011,  22:45 Найти цитируемый пост)
ног мне тоже не хватает

Тут тоже можно аппаратно изголяться. Во-первых можно использовать две тини (одну в качестве драйвера периферии), можно кнопки и индикатор повесить через сдвиговые регистры. Есть ещё расширители портов, работающие через SPI или I2C. Но опять же - это если возможность дорабатывать железо. 


--------------------
PM MAIL ICQ Skype   Вверх
UniBomb
Дата 10.11.2011, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Цитата(Чучмек @  9.11.2011,  22:45 Найти цитируемый пост)
И пока не разобрался, как  использовать XTAL под выход.

Конфигурируешь мк, что бы тактировался от внутренней RC цепи (смотри fuse биты CKSEL3..0) и всё. Конфигурируешь PA1 и PA0 как тебе надо и используешь как тебе хочется.


--------------------
PM MAIL ICQ Skype   Вверх
Чучмек
Дата 10.11.2011, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: нет
Всего: 41



Цитата(UniBomb @  10.11.2011,  07:55 Найти цитируемый пост)
Чучмек, я не знаю что ты там делаешь

Шести канальный суточный таймер.

Цитата(UniBomb @  10.11.2011,  07:55 Найти цитируемый пост)
 Обычно под опытную разработку берут мк с запасом

Беру что есть.

Цитата(UniBomb @  10.11.2011,  07:55 Найти цитируемый пост)
для серийного изделия

Да не, на раз. Не охота с паяльником сильно  замарачиваться. Проще прогу нарыгать. Да и пора хоть краем с МК ознакомиться.
Да тут еще знакомый утверждает, что в 2313 такое не влезит. А у меня, пока что, влазит. Осталось только  меню и 50% места.

Цитата(UniBomb @  10.11.2011,  08:23 Найти цитируемый пост)
Конфигурируешь мк, что бы тактировался от внутренней RC цепи (смотри fuse биты CKSEL3..0) и всё.

А по умолчанию как?

Это сообщение отредактировал(а) Чучмек - 10.11.2011, 11:18


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
UniBomb
Дата 11.11.2011, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Цитата(Чучмек @  10.11.2011,  12:13 Найти цитируемый пост)
Шести канальный суточный таймер.

Ну я имел в виду опытный макет для ниокр, дипломная работа, личная поделка это или что ещё  smile 

Цитата(Чучмек @  10.11.2011,  12:13 Найти цитируемый пост)
Не охота с паяльником сильно  замарачиваться

Ну так для этого есть макетные платы с гнёздами, отладочные платы и другие полуфабрикаты. Не думаю я, что то, что есть под рукой всегда будет хватать  smile 


Цитата(Чучмек @  10.11.2011,  12:13 Найти цитируемый пост)
А по умолчанию как?

Открываем  даташит и читаем:

Цитата

The device is shipped with CKSEL = “0100”, SUT = “10”, and CKDIV8 programmed. The default clock source setting is the Internal RC Oscillator with longest start-up time and an initial system clock prescaling of 8, resulting in 1.0 MHz system clock. This default setting ensures that all users can make their desired clock source setting using an In-System or Parallel programmer.


Т.е. так как нужно. И если тебе хватит дефолтного мегагерца, то fuse биты можно вообще не трогать  smile 


--------------------
PM MAIL ICQ Skype   Вверх
Чучмек
Дата 12.11.2011, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: нет
Всего: 41



Да я потому и спросил, что читал об этом.
Но в протеусе выводы  XTAL упорно  не хотели реагировать на программное изменение. Хоть с  fuse по умолчанию, хоть с измененными (пробовал наугад).
Однако сейчас попробовал выставить 
Цитата(UniBomb @  11.11.2011,  08:29 Найти цитируемый пост)
CKSEL = “0100”, SUT = “10”, and CKDIV8 programmed
 - XTAL подсветились синим. 
UniBomb, СПАСИБО!
Ну а что касается основного вопроса - то пока использую в том варианте, про который писал не предлагать. 


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
UniBomb
Дата 13.11.2011, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Чучмек, а ты даташит то хоть смотрел?  smile 


--------------------
PM MAIL ICQ Skype   Вверх
Чучмек
Дата 13.11.2011, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: нет
Всего: 41



Да, только я в англицком ни буб бум 


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0996 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.