реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> atmega32 запутался в адресации
bi_max
сообщение May 16 2012, 13:20
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 16-05-12
Из: Якутск
Пользователь №: 71 873



Попробовал сваять прибор для замера параметров Акб
нашел мегу 32 почитал интернет
прилепил с помощью интернета (в основном чужие наработки) дисплей от нокии 3310
писать решил на ассемблере но за неимением опыта наделал кода больше 5к
проект встал не могу понять где то команды icall, ijmp работают где то нет
проект прилагаю
подскажите где я напортачил
меню почти работает скачет по экранчикам начинаешь код дописывать и начинаются проблемы с адресацией
Прикрепленные файлы
Прикрепленный файл  Nokia3310_atmega32.zip ( 575.44 килобайт ) Кол-во скачиваний: 18
 
Go to the top of the page
 
+Quote Post
kolobok0
сообщение May 16 2012, 13:58
Сообщение #2


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(bi_max @ May 16 2012, 17:20) *
...не могу понять где то команды icall, ijmp работают где то нет...


1. не увлекайтесь макросами. их дебажить студия не даёт.
2. локализуйте функционал по файлам. отдельным. относитесь к написанию так, чтоб можно было потом воткнуть этот файл в другой проект, изменить в шапочке дефайны и всё чтоб заработало.
3. в шапочке каждой подпрограммы пишите вход, выход, какие регистры юзаются.
4. в обработчках прерываний вместо пуш-поп можно заюзать movw для регистровых пар. для этого надо выделить из общего массива рон = пары для сохранения регистров. можно даже без пересылки - сразу их юзать. исходя из правила, что в один момент времени может обрабатываться только одно прерывание. И ещё. в обработчиках прерываний необходимо так же сохранять флаги(регистр SREG)

Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 16 2012, 14:09
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(kolobok0 @ May 16 2012, 16:58) *
1. не увлекайтесь макросами. их дебажить студия не даёт.

Ну в Disassemler-е можно отлаживать.

Цитата(kolobok0 @ May 16 2012, 16:58) *
4. в обработчках прерываний вместо пуш-поп можно заюзать movw для регистровых пар.

Как это через movw?
st/ld заменяет push/pop, но выигрыша никакого.


P.S. Главное - бросайте писать на ассемблере без надобности. Переходите на Си.
Go to the top of the page
 
+Quote Post
zombi
сообщение May 16 2012, 14:49
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



У Вас регистры R26..R29 два раза обьявлены. Это так надо?
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение May 16 2012, 20:03
Сообщение #5


Профессионал
*****

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



А уж
Код
push temp
в зарядке больше чем достаточно, правда
Код
pop temp
нет ни одного. Интересно на каком шаге оперативка заканчивается.
В .include можно даже запутаться. Всё выбросить и переписать заново .


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
bi_max
сообщение May 16 2012, 21:01
Сообщение #6





Группа: Новичок
Сообщений: 4
Регистрация: 16-05-12
Из: Якутск
Пользователь №: 71 873



Цитата(ILYAUL @ May 17 2012, 06:03) *
А уж
Код
push temp
в зарядке больше чем достаточно, правда
Код
pop temp
нет ни одного. Интересно на каком шаге оперативка заканчивается.
В .include можно даже запутаться. Всё выбросить и переписать заново .

до зарядки дело даже не дошло она не подключена еще начинает рушиться при подключении проверки из файла menu.asm

Цитата
У Вас регистры R26..R29 два раза обьявлены. Это так надо?

не нашел где еще раз объявил но я думаю это не криминал
я пользуюсь в проекте чужими наработками если интересно могу источники вспомнить

выбрал ассемблер чтоб поближе познакомиться с внутренним устройством avr

Сообщение отредактировал bi_max - May 16 2012, 21:02
Go to the top of the page
 
+Quote Post
zombi
сообщение May 16 2012, 21:22
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(bi_max @ May 17 2012, 00:01) *
не нашел где еще раз объявил но я думаю это не криминал
Они обьявлены и в m32def.inc и у вас в BC.INC
Цитата
.def XL = r26
...
.def Tl =r26 ; Temperature Low Byte
о чём вам компилятор с радостью сообщает:
Цитата
BC.INC(57): warning: Register r26 already defined by the .DEF directive
Nokia3310.asm(2): 'BC.INC' included form here
BC.INC(58): warning: Register r27 already defined by the .DEF directive
Nokia3310.asm(2): 'BC.INC' included form here
BC.INC(59): warning: Register r28 already defined by the .DEF directive
Nokia3310.asm(2): 'BC.INC' included form here
BC.INC(60): warning: Register r29 already defined by the .DEF directive

Может и не криминал, но я себе такой роскоши не позволяю, запутаться можно.
Go to the top of the page
 
+Quote Post
bi_max
сообщение May 16 2012, 22:20
Сообщение #8





Группа: Новичок
Сообщений: 4
Регистрация: 16-05-12
Из: Якутск
Пользователь №: 71 873



Спасибо натолкнули а то в дебри улез
нашел косяк в проверке перепутал команды местами (push pop)
как говорится подвластно только дилетанту и забил всю оперативку в цикле

тему не закрывайте будут вопросы да и советы интересны

Цитата(zombi @ May 17 2012, 07:22) *
Они обьявлены и в m32def.inc и у вас в BC.INC
о чём вам компилятор с радостью сообщает:

Может и не криминал, но я себе такой роскоши не позволяю, запутаться можно.

bc.inc как и часть кода зарядника с апнота avr450 точно там на tiny надо будет поразмыслить
Go to the top of the page
 
+Quote Post
bi_max
сообщение May 18 2012, 00:45
Сообщение #9





Группа: Новичок
Сообщений: 4
Регистрация: 16-05-12
Из: Якутск
Пользователь №: 71 873



Спасибо за совет с SREG и макросами точно после какого то предела макросы гнать начинают запихаешь их в код и работает и объем меньше

Сообщение отредактировал bi_max - May 18 2012, 00:49
Go to the top of the page
 
+Quote Post
kolobok0
сообщение May 18 2012, 09:59
Сообщение #10


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(_Артём_ @ May 16 2012, 18:09) *
Ну в Disassemler-е можно отлаживать.

можно. но речь идёт о дебаженье по исходным текстам, а не по самому коду. сам код (иногда) плохо читаем. посему падает скорость отладки.

Цитата(_Артём_ @ May 16 2012, 18:09) *
Как это через movw?st/ld заменяет push/pop, но выигрыша никакого.

вы только первые предложения читаете? как то поверхностный подход. цитата:

"для этого надо выделить из общего массива рон = пары для сохранения регистров. можно даже без пересылки - сразу их юзать."

надеюсь понятно.
а по скорости - посмотрите указанные команды. выигрыш очевиден.

Цитата(_Артём_ @ May 16 2012, 18:09) *
P.S. Главное - бросайте писать на ассемблере без надобности. Переходите на Си.

на одном плакате написано:
не говорите что мне делать и я не скажу куда вам идти.

предлагаю не разводить халевар. для вас Си - верх совершенства. ради бога. я лично отдыхаю, создавая программы на азме. Если для вас это проблемы - изучайте мат часть.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение May 18 2012, 15:37
Сообщение #11


Профессионал
*****

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



Цитата(kolobok0 @ May 18 2012, 13:59) *
"для этого надо выделить из общего массива рон = пары для сохранения регистров. можно даже без пересылки - сразу их юзать."

А можно и в GPIORх - если они есть


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 18:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01463 секунд с 7
ELECTRONIX ©2004-2016