Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 29.06.2013, 11:20  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Таймер на Atmega644

Сообщение от bvn123 Посмотреть сообщение
по datasheet "64 I/O Registers $0020 - $005F"
И какой вывод из этого?
См. сами:
Реклама:
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 29.06.2013 в 11:23.
tempora вне форума  
Непрочитано 29.06.2013, 12:23  
bvn123
Частый гость
 
Регистрация: 16.11.2005
Сообщений: 46
Сказал спасибо: 0
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
bvn123 на пути к лучшему
По умолчанию Re: Таймер на Atmega644

вы правы,
материал из Help дает однозначный диапазон с верхней границей 63 ($3F)
bvn123 вне форума  
Непрочитано 29.06.2013, 12:51  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,999
Сказал спасибо: 3,017
Сказали Спасибо 3,191 раз(а) в 2,164 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Таймер на Atmega644

Если чё, Atmel уже подсуетился с макросами, автоматически определяющими способ работы с периферией: https://kazus.ru/forums/showpost.php?p=641593&postcount=6
ForcePoint вне форума  
Непрочитано 29.06.2013, 13:24  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Таймер на Atmega644

Сообщение от ForcePoint Посмотреть сообщение
Если чё, Atmel уже подсуетился с макросами
Причем, на это уже указывалось дважды!
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 29.06.2013, 17:12  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Таймер на Atmega644

Сообщение от bvn123 Посмотреть сообщение
Сообщение от omercury Посмотреть сообщение
Сообщение от bvn123 Посмотреть сообщение
важно, что это не вызовет увеличения числа команд/времени исполнения
Так таки и не вызовет?
не вызовет
Вызовет.
За сколько тактов выполняется out и за сколько sts ?

Сообщение от bvn123 Посмотреть сообщение
в регистр TCCR0B запись не выполнится,
куда выполнится:
в "Register summary" (datasheet)
0x25 (0x45) TCCR0B
0x05 (0x25) PORTB
Заметил. Только подумать - почему - не судьба?
Сообщение от bvn123 Посмотреть сообщение
если нет подвоха, почему в *def.inc не используются адреса в скобках? тогда всюду можно было бы использовать sts вместо out,
это упростило бы перенос программ на другой микроконтроллер
Потому, что дефайны заданы для команды out, которая выполняет сохранение со смещением в 32 адреса (РОН). Кстати, что запрещает переназначить дефайны??
Сообщение от bvn123 Посмотреть сообщение
материал из Help дает однозначный диапазон с верхней границей 63 ($3F)
Какой документ важнее - спецификация (datasheet) на контроллер или Help непонятно от чего?
А теперь загляните наконец в спецификацию на МК в раздел Memory Map и посчитайте, сколько это всё места занимает. Заодно с адресацией разберитесь.
omercury вне форума  
Непрочитано 30.06.2013, 10:04  
bvn123
Частый гость
 
Регистрация: 16.11.2005
Сообщений: 46
Сказал спасибо: 0
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
bvn123 на пути к лучшему
По умолчанию Re: Таймер на Atmega644

›omercury: Вызовет.За сколько тактов выполняется out и за сколько sts ?

нет, в результате выполнения macro outr ассемблером будет использована либо команда out, либо sts в зависимости от регистра, к которому обращается команда, дополнительных команд, соответственно и циклов, не будет, несмотря на то, что macro выглядит объемно;
можно проверить, вызвав при отладке дизассемблер AVR Studio:

.include "m644def.inc"
.macro outr
.if ( @0 ‹ $40 )
out @0,@1
.else
sts @0,@1
.endif
.endm
ldi r16,$5a
outr TIMSK0,r16
outr TCCR0B,r16
---

help AVR studio / команды ассемблера out и in; help распространяется на все МК, поддерживаемые AVR studio;
код будет рабочим как при границе $3F (она используется в макро по ссылке ForcePoint), так и при $5F - следует из Register Summary (datasheet ATmega644);
нет гарантии, что не появится серия МК с регистрами в диапазоне адресов $40...$5F;
граница $3f безопаснее: macro и help универсальны, datasheet на конкретный МК

›"Заметил. Только подумать - почему - не судьба?" -
? манера общения?

Последний раз редактировалось bvn123; 30.06.2013 в 10:21.
bvn123 вне форума  
Непрочитано 30.06.2013, 19:54  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Таймер на Atmega644

Сообщение от bvn123 Посмотреть сообщение
? манера общения?
Вы неправы - он Вам трижды пытался помочь, а Вы трижды отвечали "всё непра! я не ве!", не дав себе труда хорошенько подумать, проверить свои предположения и выводы. Так что, Вы сами индуцировали такой финал.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 01.07.2013, 00:20  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Таймер на Atmega644

Сообщение от bvn123 Посмотреть сообщение
можно проверить
Ну так проверьте в конце-то концов, что команды in и out выполняются за один машинный цикл, а команды ld и st за два машинных цикла, о чём совершенно определённо написано в datasheet, так как первые имеют короткую адресацию, а вторые используют полную адресацию.

Сообщение от bvn123 Посмотреть сообщение
? манера общения?
Вы писатель?
Вам открытым текстом написали, почему так происходит, но Вы не видите.
Дефайны в стандартных .inc файлах предназначены для команд in/out, поэтому и обозначены они с адреса $00, хотя фактически находятся с адреса $20. В результате поле регистров (РОН и SFR) занимает 32+64 ($20+$40)=96($60)байт и заканчивается по адресу $5F.
Напишите себе единственный раз свой файл определений (define) на самый крутой AVR, который найдёте и используйте его для всех без исключения (кроме хмег) AVR, применяя команды LD для чтения и ST для сохранения значений. Хоть напрямую, хоть косвенно.
Да, инициализация МК будет проходить немного дольше, но от путаницы избавит навсегда.

RTFM в общем.
В datasheet всё есть! (с)

Вот об этом Вам собственно и талдычу на протяжении всего топика.
omercury вне форума  
Непрочитано 01.07.2013, 06:36  
bvn123
Частый гость
 
Регистрация: 16.11.2005
Сообщений: 46
Сказал спасибо: 0
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
bvn123 на пути к лучшему
По умолчанию Re: Таймер на Atmega644

;прямое использование команд:
sts TIMSK0,r16 ;2 цикла
out TCCR0B,r16 ;1 цикл

;то же при использовании macro:
outr TIMSK0,r16 ;2 цикла
outr TCCR0B,r16 ;1 цикл

;в обоих случаях число циклов одинаково

неизменность числа циклов при прямом вызове команд и при использовании макрозаписи проверял до сообщения https://kazus.ru/forums/showpost.php...1&postcount=17 - там же комментарий по этому поводу, который вызвал Ваше несогласие, omercury.

стоило ли расписывать тему о макрозаписи?
первый вопрос темы - "почему команда
out TIMSK0,temp
вызывает ошибку?"
Думаю, при таком вопросе сведения о макрозаписях полезны,
к тому же при анонимном входе на сайт ссылка на pdf и avr001.zip с макрозаписями не видна
=====

о границе - какая запись условия в макрозаписи корректнее:
.if ( @0 ‹ $40 ) ; (эта граница в avr001.zip и https://kazus.ru/forums/showpost.php...4&postcount=21)
или
.if ( @0 ‹ $60 ) ; (эта граница здесь: https://kazus.ru/forums/showpost.php...8&postcount=12)

при ассемблировании команды
"out $40,r16" (здесь превышение границы @0‹$40)
возникает ошибка: \t.asm(19): error: Operand 1 out of range: 0x40,

то есть, корректнее граница @‹$40 (@‹64), что соответствует сведениям help AVR Studio "0 ≤ A ≤ 63":
OUT A,Rr 0 ≤ r ≤ 31, 0 ≤ A ≤ 63

====
Сообщение от omercury Посмотреть сообщение
›bvn123 но в симуляторе запись в регистр TCCR0B при использовании sts не выполнится

Выполнится. Вопрос - куда?
куда и почему - ответил здесь https://kazus.ru/forums/showpost.php...0&postcount=20,

и вопросов по этому поводу не задавал
===

комментарии желательны с полным фрагментом того, что комментируете, возможно, тогда комментарии будут соответствовать цитатам,
по вопросу "писатель?" - сдерживайте себя

Последний раз редактировалось bvn123; 01.07.2013 в 06:59.
bvn123 вне форума  
Непрочитано 01.07.2013, 20:12  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Таймер на Atmega644

Сообщение от bvn123 Посмотреть сообщение
то есть, корректнее граница @‹$40 (@‹64), что соответствует сведениям help AVR Studio "0 ≤ A ≤ 63":
OUT A,Rr 0 ≤ r ≤ 31, 0 ≤ A ≤ 63
При использовании дефайнов из стандартных .inc файлов, безусловно, правильным будет адрес $40, который специально предназначен для команд in и out и только для них (о чём пишу уже в третий раз). В противном случае надо добавлять смещение в 32 байта ($20) так как Регистры Общего Назначения занимают первые 32 байта в общей области памяти данных. О чём, кстати, тоже уже писал.

Сообщение от bvn123 Посмотреть сообщение
почему команда
out TIMSK0,temp
вызывает ошибку?"
Думаю, при таком вопросе сведения о макрозаписях полезны
Не просто полезны, а необходимы знания об устройстве и принципах работы используемого ядра. Макроси всего лишь частный случай.
Сообщение от bvn123 Посмотреть сообщение
;прямое использование команд:
sts TIMSK0,r16 ;2 цикла
out TCCR0B,r16 ;1 цикл
;то же при использовании macro:
outr TIMSK0,r16 ;2 цикла
outr TCCR0B,r16 ;1 цикл
;в обоих случаях число циклов одинаково
На меня, видимо, ещё не снизошло озарение, что команды in и out, подставляемые макрозаписью при условной компиляции и прямое написание тех же команд может выполняться за одинаковое количество тактов и занимать одинаковое количество места в памяти.
Они не просто обязаны выполняться за одинаковое число тактов. Скажу даже более - иначе быть просто не может.
Сообщение от bvn123 Посмотреть сообщение
и вопросов по этому поводу не задавал
Так это был ответ?
Осознание сего чудесного факта произошло всего лишь на третий день...
Простите.
Молю Вас - не прячьте столь глубокие мысли за высоконаучными изъяснениями и витиеватыми выражениями. Кладите их на поверхность, дабы мы, недостойные даже беглого взгляда на наши пустопорожние словоблудия, по слепошарости своей таёжной не дай Бог, не пропустили их при первом же прочтении...
omercury вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сторожевой таймер в ATtiny25/45/85 mike124 Proteus 11 30.10.2012 11:19
Реализовать самый точный таймер на S7-200 rihkov Производственное оборудование 6 07.08.2012 18:23
Как "врезать" таймер в ЗУ? VeroMax Источники питания и свет 8 17.09.2011 13:15
Сторожевой таймер. Проведите ЛИКБЕЗ. radarr Микроконтроллеры, АЦП, память и т.д 9 22.01.2008 21:50
таймер и симуляция в MPLAB Sim lisergin Микроконтроллеры, АЦП, память и т.д 0 16.01.2006 15:35


Часовой пояс GMT +4, время: 21:50.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot