roboforum.ru

Технический форум по робототехнике.


Магический кристалл

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

Re: Магический кристалл

Сообщение Michael_K » 02 мар 2010, 07:53

Ой, главное-то забыл: "с преферансом и куртизанками" и "можно грабить корованы" :lol:
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Магический кристалл

Сообщение GrayHunter » 02 мар 2010, 10:37

Вопрос по ассемблеру:
если результат команды cp равен нулю, то команды breq и brpl равны? Или в команду brpl не входит ноль?
GrayHunter
 
Сообщения: 231
Зарегистрирован: 06 июн 2009, 20:42
Откуда: Москва

Re: Магический кристалл

Сообщение Michael_K » 02 мар 2010, 10:40

ноль входит. ноль считается "положительным"
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Магический кристалл

Сообщение =DeaD= » 02 мар 2010, 10:53

Нафига ассемблер то? :shock:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Магический кристалл

Сообщение Michael_K » 02 мар 2010, 11:00

Нафига ассемблер то? :shock:

Потому что он проще!
В си слишком много ненужных (для такой задачи) условностей.
Ассемблер же однозначен.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Магический кристалл

Сообщение =DeaD= » 02 мар 2010, 11:04

Ну удач :) проще всего вообще-то васик, дальше си, а в конце асм.
А вообще машинные коды еще однозначней, никаких тебе непрозрачных дефайнов, круче их только яйца :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Магический кристалл

Сообщение Michael_K » 02 мар 2010, 11:32

Dead, люди разные и только этим они ценны.
Не надо мерить всех под одну гребенку.

Вам просто освоить новый компилятор только потому, что вы до этого освоили десяток.
А новичок самостоятельно будет только пару недель осознавать что за мейкфайл
и зачем линкер... это еще даже не написав ни строчки.
а уж вопросы типа "на что она тут ругается" часто возникают и у опытных сишников.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Магический кристалл

Сообщение =DeaD= » 02 мар 2010, 11:40

Не спорю, но предлагать начинающему чего-то делать на асме, когда он очевидно захочет всяких фенек прикрутить к девайсу - это ИМХО - повергнуть его в пучину отладки из которой выбраться будет ой как не легко :)

Добавлено спустя 2 минуты 7 секунд:
Michael_K писал(а):А новичок самостоятельно будет только пару недель осознавать что за мейкфайл
и зачем линкер...

Регулярное заблуждение. AVR Studio + WinAVR - создаёшь "main.c", пишешь код, указываешь под какой МК собирать, комплируешь, получаешь "myproject.hex".

Добавлено спустя 32 секунды:
Подозреваю, что с васиком может быть еще проще :)

Добавлено спустя 33 секунды:
Я не говорю что асм отстой, си рулит, я говорю, что как минимум странно так однозначно советовать асм начинающему.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Магический кристалл

Сообщение Michael_K » 02 мар 2010, 11:45

Я не советовал - он сам выбрал.
Значит ЕМУ так удобнее, с этой стороны понятнее, нашел понятную ЕМУ книжку,
понимает как работает логика и проц... или любые другие причины...

Согласитесь, от понимания логики битиков и байтиков и МК
до СИ - огромная пропасть исторически сложившихся условностей и абстракций.
А ассемблер в этом смысле МОЖЕТ быть ближе.

Люди разные. И это хорошо :wink: :)
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Магический кристалл

Сообщение =DeaD= » 02 мар 2010, 11:48

Ну если сам осознанно выбрал - тогда нет вопросов :) а то звучало как однозначный совет - си сложно, асм просто, а это совсем не так :) как минимум для большого числа людей. Я уж не говорю о том, что асм везде разный, а си везде одинаковый :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Магический кристалл

Сообщение GrayHunter » 02 мар 2010, 14:17

Michael_K писал(а):ноль входит. ноль считается "положительным"

Спасибо.

Ещё 4 вопроса в процессе написания кода появилось:
1) Чтобы получить данные с порта/ножки МК PD0 и записать эти данные в регистр Temp, нужно сделать так: in Temp,PD0 или как-то иначе?
2) Нужно ли регистр (например, Temp) очищать, чтобы туда можно было нормально записать новые данные командой clr Temp или всё, что в регистр записывается, автоматически затирает все предыдущие данные в регистре?
3) Команда rjmp позволяет перепрыгнуть к любому месту всего кода (по метке) или только в каких-то пределах? Если в пределах, то как мне тогда из подпрограммы переходить к определённой метке, находящейся не в данной подпрограмме?
4) Насчёт задержки: Скольки циклам задержки (см. ниже) равняется одна секунда реального времени?
Цикл задержки:
ldi Time,0
Loop: dec Time
brne Loop
GrayHunter
 
Сообщения: 231
Зарегистрирован: 06 июн 2009, 20:42
Откуда: Москва

Re: Магический кристалл

Сообщение executer » 02 мар 2010, 14:29

1) похоже на то. У АВР вроде нету побитового обращения к портам
2) нет.
3) впринципе подпрограмма от программы ничем не отличается и такой переход не запрещен (ограничего только расстояние, смотри в ДШ у jmp и rjmp они разные). Но корректно будет писать функции, подпрограммы и прерывания с одной точкой выхода по оператору ret и reti (для прерывания), тогда будет меньше проблем со стеком и флагами управления МК
4) время такта процессора высчитывается из тактовой частоты Т=1/f. Каждая операция занимает 1-4 такта (см. ДШ). Легче всего этот цикл прогнать пошагово в симуляторе и по таймеру засечь задержку.
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

Re: Магический кристалл

Сообщение GrayHunter » 02 мар 2010, 14:38

Спасибо за ответы.
2) нет.
Там было два оппозиционных вопроса :) Задам тогда один, что точно понять, что Вы имели ввиду: Нужно ли регистр (например, Temp) очищать командой clr Temp, чтобы туда можно было нормально записать новые данные?
прогнать пошагово в симуляторе
посоветуйте, пожалуйста, симулятор (если есть уже с лекарством/кряком - буду рад :roll: )
GrayHunter
 
Сообщения: 231
Зарегистрирован: 06 июн 2009, 20:42
Откуда: Москва

Re: Магический кристалл

Сообщение =DeaD= » 02 мар 2010, 14:43

2) Не нужно.

Для программирования AVR на асме можно взять AVR Studio, она бесплатна и имеет встроенный симулятор.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Магический кристалл

Сообщение GrayHunter » 02 мар 2010, 14:59

Спасибо.

Ещё 4 вопроса:
1) Команда cp Temp1,Temp2 сравнивает регистры между собой, а команда cpi Temp1,0 сравнивает регистр с константой?

2) Данные с порта (например, PD0) могут равняться 0 или 1?
Т.е. верен ли пример:
ldi Temp,0d00000001
out DDRD,Temp
ldi Temp,0d00000001
out PortD,Temp
in Temp,PD0

и Temp теперь равен 1, так?

3) Можно ли управлять портом отдельно от других портов?
Т.е. верен ли пример:
ldi Temp,0d00000001
out DDRD,Temp
ldi Temp,1
out PD0,Temp
in Temp,PD0

и Temp теперь равен 1, так?

4) определять (командой .def) регистры можно в промежутке от R0 до R32 без ограничений/особенностей?
GrayHunter
 
Сообщения: 231
Зарегистрирован: 06 июн 2009, 20:42
Откуда: Москва

Пред.След.

Вернуться в Идеи

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0