Proteus, KiCAD и другие ECAD Разработчик так или иначе сталкивается с системами автоматизированного проектирования. Данный раздел - по САПР. |
25.03.2007, 11:46
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Цитата:
|
как ты думаешь куда программа должна засунуть значение i когда инкремент достигнет значения скажем 15000, если ты под неё выделил всего 1байт( "unsigned int i")
|
Не вводите человека в заблуждение. Int вообще-то всегда (ну или почти всегда) двухбайтовый. Ну и если и байтовая величина, то при чем тут число 15000? В байте умещается 0-255, если без знака.
|
|
|
|
25.03.2007, 11:58
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от stas633
|
IAR считается "стандартом"..., на мой взгляд, его основной плюс в том, что среди "продуктов" IAR есть компиляторы Си и для 51-х, и для AVR и DSP..
|
Насчет IAR для 51. Мне как-то понадобилось корректировать старую программу для клона 51, писана еще на асме была. Вспоминать все тонкости было лениво, решил что быстрее будет с нуля переписать на Си. Взял компилятор IAR. Поглядел на код. Коряв до ужаса. Глупостей навалом. Так что фирма еще не значит, что все компиляторы у них одинакового качества. Видать, для АВРок и для 51 делают ну оччень разные по уровню команды.
После по совету работающих с 51 взял Keil - ну никакого сравнения.
Да, и по поводу кнопок.
1) Если не подразумевается работа в цеху рядом с мощным двигателем, вполне достаточно внутренней подтяжки. А уж для опытов цеплято еще и резистор ни к чему...
2) Я с дребезгом борюсь примерно так. Делается прерывание таймера где-то раз 30 в секунду. И там смотрим на кнопку. Ведем флаг "предыдущее значение". И если сайчас нажато, а предыдущее - нет, выставляем флажок наружу "нажатие". Небольшое усложнение (ввести счетчик "сколько времени нажато") - даст возможность различать ситуации "нажато" и "нажато и удержано секунду". Для реалтаймовых программ такой подход - IMHO - лучше, хотя на первый взгляд и сложноват. И дребезг в этом случае по барабану.
|
|
|
|
25.03.2007, 13:38
|
|
Частый гость
Регистрация: 16.03.2007
Сообщений: 13
Сказал спасибо: 1
Сказали Спасибо 10 раз(а) в 2 сообщении(ях)
|
Сообщение от nml
|
Насчет IAR для 51... Взял компилятор IAR. Поглядел на код. Коряв до ужаса. Глупостей навалом... После по совету работающих с 51 взял Keil - ну никакого сравнения.
|
Заметьте, я не хвалил и не ругал компилятор, а лишь указал на наличие возможностей. Обсуждать же "правильность" кода считаю бессмысленным, так как определение "правильности" - вещь чисто субъективная. Тем более если код характеризовать одними эпитетами. )) Компиляторы пишут люди (команда) (3..5 редко больше человек), которые в силу своих природных данных (таланта) "предлагают" нам свой продукт. Пользователи, как правило, используют программный продукт "в лоб", не пытаясь изучить настройки компилятора и выбрать свой (оптимальный) вариант... между скоростью работы и объемом кода, например.
Полезно:
Ассемблерные вставки на IAR пишутся с выделением каждой строки (команды) кавычками и символом конца строки (
):
...
asm ("Label: nop
"
" jmp Label");
...
В CVAVR это делается по другому:
...
#asm
ldd r30,y+3 ;R30=LSB a
...
adc r31,r27
#endasm
, второй вариант мне кажеться более удобным.
Повторю вопрос: Как "подключить" симулятор к CVAVR? Да и какой симулятор выбрать?
Про кнопки... предлагаю тему не "засорять". Давайте созданим отдельную тему. Скажу только кратко, что на подключении внешнего резистора настаиваю. Источником помех может являться не только станок в цеху, но и пылесос, блок зажикания в автомобиле, лодочном моторе, мобильный телефон наконец. Ну а с обработкой нажатия по прерыванию таймера согласен полностью, только и здесь есть "тонкости" (давайте в отдельной теме).
|
|
|
|
25.03.2007, 14:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от stas633
|
Заметьте, я не хвалил и не ругал компилятор, а лишь указал на наличие возможностей. Обсуждать же "правильность" кода считаю бессмысленным, так как определение "правильности" - вещь чисто субъективная.
|
Ну почему, есть и объективные методы. Достаточно откомпилировать одинаковый исходник и посмотреть результат. Идеал правильности - любой исходник в 1 команду выполняемую за 1 такт ![Валяюсь от смеха](images/smilies/icon_biggrin.gif) Это правильный код!
Сообщение от stas633
|
Повторю вопрос: Как "подключить" симулятор к CVAVR? Да и какой симулятор выбрать?
|
Например AVR Studio. Достаточно ей открыть coff файл, и сохранить проект. Или Proteus - можно работать с железом, но пошаговая отладка работает не всегда корректно. Также не все железо эмулируется. Подключить - в свойствах кристалла выбрать тот-же coff.
Но самое лучшее - внутрисхемный эмулятор - JTAG ICE, AVR DRAGON, JTAG ICE II. Оболочка - опять Студия. Это решение самое лучшее, но не все кристаллы имеют jtag или debugwire
|
|
|
|
25.03.2007, 16:22
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от stas633
|
Заметьте, я не хвалил и не ругал компилятор, а лишь указал на наличие возможностей.
|
Да упаси боже, я тоже ничего не рекламирую. Просто указал на различия уровня
Цитата:
|
Обсуждать же "правильность" кода считаю бессмысленным, так как определение "правильности" - вещь чисто субъективная.
|
Отнюдь...
Смотрится листинг. Как правило, человеку, знающему
ассемблер, этого вполне достаточно для оценки качества компиляции.
Цитата:
|
Повторю вопрос: Как "подключить" симулятор к CVAVR? Да и какой симулятор выбрать?
|
Сколько не видел разных симуляторов - все они пригодны только для проверки арифметики, что в случае Си как правило смысла не имеет. При работае с портами и прочим - все врут. Один больше, другой меньше.
Я использую свой метод отладки - см. на сайте (на конечном устройстве)
|
|
|
|
25.03.2007, 19:26
|
|
Частый гость
Регистрация: 16.03.2007
Сообщений: 13
Сказал спасибо: 1
Сказали Спасибо 10 раз(а) в 2 сообщении(ях)
|
Спасибо,kison, к стыду своему скажу, что при попытках "связать" CV и Studio мне не хватало "смелости" сохранить проект. Все получилось, симулятор работает.
В обсуждениях качества компилируемого кода тем или иным компилятором сломано столько "копий", что продолжать обсуждение смысла не вижу. Достаточно воспользоваться поиском и прочитать все что сказано на различных форумах.
Мне кажется, что главным критерием в выборе компилятора должно быть удобство работы и простота (понятность) интерфейса. И на мой взгляд, бесспорным лидером по "дружественности" является CVAVR.
Применение симуляторов считаю оправданным, так как при использовании отладки в схеме, по любому из возможных интерфейсов, динамику процесса "отследить" очень сложно (если вообще возможно). Анализ же работы в симуляторе во вмогих случаях позволяет проверить правильность алгоритма работы программы.
|
|
|
|
25.03.2007, 19:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от stas633
|
вопрос: Как "подключить" симулятор к CVAVR? Да и какой симулятор выбрать?
|
Советую VMLAB.
Вот шаблон для быстрого запуска CVAVR + VMLAB
http://www.radiokot.ru/forum/viewtopic.php?t=2273
Более продвинут мощнейший симуляор множества микроконтроллеров в одном устройстве PROTEUS
Вот начальные сведения:
proteus123.narod.ru/01.htm
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
25.03.2007, 19:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от stas633
|
Применение симуляторов считаю оправданным, так как при использовании отладки в схеме, по любому из возможных интерфейсов, динамику процесса "отследить" очень сложно (если вообще возможно).
Анализ же работы в симуляторе во вмогих случаях позволяет проверить правильность алгоритма работы программы.
|
И я тогоже мнения.
Вот подробней о симуляторе VMLAB
avr123.nm.ru/z3.htm
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
27.03.2007, 10:52
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от slawalog
|
Сообщение от dimonbest
|
unsigned char waitkn1on (void)
{
unsigned int i=0;
if (PINA.2==1)return 0;else
while (i!=20000)
|
Здесь посмотри пожалуйста. как ты думаешь куда программа должна засунуть значение i когда инкремент достигнет значения скажем 15000, если ты под неё выделил всего 1байт
|
У меня же переменная i unsigned int i=0; не одно а двух байтовая...
|
|
|
|
27.03.2007, 15:11
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Спасибо всем за помощь. Думаю эту тему можно закрыть, но продолжить опрос по компиляторам.
P.S. Остался я все таки на CodeVisinAVR ![Валяюсь от смеха](images/smilies/icon_biggrin.gif) А дальше жизнь покажет
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
вопрос по отладчику IAR AVR to kison
|
picavr |
Микроконтроллеры, АЦП, память и т.д |
36 |
28.04.2009 18:01 |
Вопрос по ШИМ на нулевом таймере AVR.
|
chapa |
Микроконтроллеры, АЦП, память и т.д |
10 |
09.02.2009 18:31 |
Обработка нескольких прерываний AVR (вопрос)
|
festoon |
Микроконтроллеры, АЦП, память и т.д |
27 |
17.11.2008 18:02 |
GNU GCC AVR вопрос по переменным..
|
Mozart |
Микроконтроллеры, АЦП, память и т.д |
3 |
09.02.2007 20:00 |
Вопрос по асемблеру к AVR
|
Гость |
Микроконтроллеры, АЦП, память и т.д |
2 |
12.09.2005 00:47 |
Часовой пояс GMT +4, время: 02:25.
|
|