|
инициализация компаратора, Atmega48PA |
|
|
|
Jul 18 2010, 11:12
|

Пользователь забанен
    
Группа: Свой
Сообщений: 1 138
Регистрация: 9-08-05
Пользователь №: 7 492

|
«НиАсилил» в студии выключить компаратор у этого прибора. Не удается прочитать регистр ACSR или записать в него хоть что-либо. Команды для этого использовал прямые – STS и LDS, поскольку, IN и OUT здесь не подходят. Вручную, биты регистра поменять можно, при сбросе прибора они сбрасываются, ..но, и только. ..Речь, пока, о студии. Она ли кривая, у меня ли глюк..
--------------------
It's me
|
|
|
|
|
Jul 18 2010, 11:18
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Help AVRStudio Цитата Simulator Modules Analog Comparator (AC) Analog Comparator is not supported. Так-что только в железе... эээ..извините.. А с какого перепуга IN и OUT здесь не подходят?
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Jul 18 2010, 11:39
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135

|
А что, в ассемблере бывают трудности с инициализацией регистра ACSR управления компаратором в самом начале программы? Цитата(WHALE @ Jul 18 2010, 17:18)  эээ..извините.. А с какого перепуга IN и OUT здесь не подходят? У 48-х эти команды действительно не доступны, адрес далёкий.
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
Jul 18 2010, 12:51
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135

|
Цитата(Wise @ Jul 18 2010, 17:42)  ..Ну, при старте, по умолчанию, все биты этого регистра равны нулю. Для 7-го бита, это означает, что, по умолчанию, компаратор включен. Я его захотел выключить - выставить 7-ой бит. А - ни в какую.. Ну и понеслось.. Оказалось, что, вообще, ни прочитать, ни записать ничего в этот регистр, нельзя.. Я имел ввиду инициализацию этого регистра из вашей программы в самом начале. Доступ к нему есть, просто вам нужно разобраться. Сам я программирую на С, там это делается очень просто.
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
Jul 18 2010, 13:31
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Wise @ Jul 18 2010, 16:09)  Дурдом.. 48PA это не младшие PIC и не младшие Tinу. Пишите на 'C', ибо без опыта программрования на ASM будет только хуже. В прочем, если что-то сложнее нескольких сотен команд, то у большинства ASM-писателей тоже уже хуже получается. Проверено  . CODE 81 // Comparator disabled 82 ACSR = (1<<ACD); \ 0000002E E800 LDI R16, 128 \ 00000030 BF00 OUT 0x30, R16
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 18 2010, 14:00
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(zltigo @ Jul 18 2010, 17:31)  48PA это не младшие PIC и не младшие Tinу. Пишите на 'C', ибо без опыта программрования на ASM будет только хуже. В прочем, если что-то сложнее нескольких сотен команд, то у большинства ASM-писателей тоже уже хуже получается. Проверено  . Код 81 // Comparator disabled 82 ACSR = (1<<ACD); \ 0000002E E800 LDI R16, 128 \ 00000030 BF00 OUT 0x30, R16 Абсолютно ага. Адрес ACSR=0x30 (48), OUT должен доставать-максимально разрешенный для OUT- 0x3F (63). А вообще-то да,пишите на С-нехай компилятор думает...
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Jul 18 2010, 14:42
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
[quote name='Wise' date='Jul 18 2010, 18:23' post='786548 ..Что мне, скрин экрана привести, что ли..? ..Адрес регистра ACSR в Atmega48PA - $30 ($50). В скобках – это в общем адресном пространстве. Команда OUT (IN) – бракуется по некорректному операнду. Попробуйте сами. [/quote] Попрбовал. Создал в студии проект для М48 на асме. Код .include "m48def.inc" .def a=r16 .cseg .org 0 rjmp RESET RESET: LDI a, 128; OUT ACSR,a; rjmp RESET; Студия съела и не поперхнулась.Че-то у вас не то в консерватории... А вообще-то еще раз вслед за zltigo повторю-пишите сразу на С.Нафик помнить какая команда куда достает.. После компиляции если интересно или размер жмет можно асм-файл глянуть...
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Jul 18 2010, 14:48
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Wise @ Jul 18 2010, 17:23)  Команда OUT (IN) – бракуется по некорректному операнду. Попробуйте сами. Дык, вот и попробовал. Строчка именно из полуторамесячной давности проекта на 48. QUOTE ..Не понял логику этой фразы.. Опыт программирования PIC-ов есть. Как опыт (любой) может помешать.. Вам мешает  1. Вы пытаетесь тоже писать на ASM, причине того, что с Компиляторами на архитектуре и считанными байтами памяти младших PIC с коими у Вас, полагаю, был опыт делать было просто нечего  . 2. Вы тратите время на жалобы, что AVR не такой, как PIC  . QUOTE ..Я всегда иду от основ. Основа, здесь – ассемблер. Основы, смею Вас заверить, это знание того, что, как и чем делать. А Ассемблер просто один из инструментов. И очень часто, как минимум, малопригодный для решения поставленной задачи.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 18 2010, 15:06
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Я, кажется,понял,где собака порылась...Вы,наверное,и макроассемблер с мнемоникой регистров не используете, а сразу фигачите(ошибочно!) OUT 0X50,XXX .... Вы меня извините за излишнюю,возможно,резкость,но имхо, это не основы.Это маразм...
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Jul 18 2010, 16:20
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(Wise @ Jul 18 2010, 19:57)  ..Докладываю. ..Ну, думаю, сейчас, выложу картинку с двумя эррорами.. ..Набиваю: ldi R16,128 out ACSR,R16 ldi R16,0 in R16,ACSR Запускаю build – ошибок нет! Запускаю симулятор – пишет в ACSR и читает из него! ..Ну, и что это было? Ведь, я начал, в пятницу, именно с этого. Точно, с этого. Фиг его знает,что это было.Как вариант,не тот камень указали.Наверняка есть такие,где у ACSR адрес больше 63... Но это и наглядный пример преимущества ЯВУ - на С этой проблемы не возникло-бы в принципе- ziltigo это показал. Цитата ..Что маразм? Что я не стал сразу писать на Си, а стал разбираться, как организована память, какая здесь система команд, какие особенности у периферии? Это не считаю маразмом и с вами не соглашусь.. Еще раз извините, я ни в коем случае не хотел вас обидеть и с предположением ошибся. А разбирательств с периферией и памятью вы не избежите и на С.Так-что этот довод мимо кассы..
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Jul 18 2010, 17:00
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(Wise @ Jul 18 2010, 20:49)  Спросил бы еще, да вот эта всеобщая манера, отвечать не столько на вопрос, сколько «читая между строк», наставлять вопрошающего.. ..который, разумеется, полный идиот, раз, вообще, задал вопрос..  Честно говоря есть такое...  Но в данном случае есть и ваша вина-вам надо было с самого начала показать урезанный по максиму ваш проект...
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Jul 23 2010, 06:19
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(Wise @ Jul 18 2010, 18:23)  ..Не понял логику этой фразы.. Опыт программирования PIC-ов есть. Как опыт (любой) может помешать.. Опыт вполне может помешать и это происходит очень часто. Особенно когда переходите с плохого инструмента на хороший. В этом случае, повинуюсь своему опыту вы рассуждаете в терминах известного вам инструмента и пытаетесь использовать этот опыт в новом инструменте. А там можно делать все по-другому, более удобно. Цитата(Wise @ Jul 18 2010, 20:49)  Спросил бы еще, да вот эта всеобщая манера, отвечать не столько на вопрос, сколько «читая между строк», наставлять вопрошающего.. Вы напрасно обижаетесь. Предложение (наставление  ) писать на С является самым выжным в этом обсуждении. Я гарантирую, что если бы вы писали на С, то этого вопроса бы не возникло. При написании программы на С думаешь об алгоритме, о программе которую ты пишешь, а когда пишешь на ассемблере, приходится думать об адресации, командах, ограничениях в их операндах и т.п., а до алгоритма дело так и не доходит. В результате получается не программа, а... набор команд.
|
|
|
|
|
Jul 23 2010, 15:39
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
А вы вот так для себя напишите и никогда не ошибётесь Код .macro outi ldi CopySRAM,@1 .if ( @0 < 0x60 ) out @0,CopySRAM .else sts @0,CopySRAM .endif .endm outi LCD_CtrlDDR,$FF ;+ макро; - установить порт B на выход outi LCD_PORT,$00 ;+ макро; - записать 0 на выходы порта
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|