WinAvr в вопросах и ответах
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
savage писал(а):ARV
Спасибо!
что то я об этом тоже не подумал.
Да, интересно, почему CodeVision ухитряется обойтись малой кровью. Расчитан на нас - неучей?
очень может быть
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- savage
- Нашел транзистор. Понюхал.
- Сообщения: 187
- Зарегистрирован: Пн дек 17, 2007 14:06:09
- Откуда: Саранск
AVR-GCC под LINUX
Никто не озадачивался AVR-GCC под LINUX?
Ищу подходящую графическую оболочку для него. Чтото пока не продвинулся.
Связка Wine+WinAVR+AVRStudio4 не работает в виду подвисания студии.
Eclipse+AVR-GCC хороший выход, но не нравится каждый раз в свойствах проекта прописывать компилятор и пути. К тому же я не освоился пока с Eclipsом.
Может видел кто готовые примочки для Eclipsа чтобы заставить его напрямую работать с avr-gcc, или графическую оболочку наподобии AVRStudio?
Ищу подходящую графическую оболочку для него. Чтото пока не продвинулся.
Связка Wine+WinAVR+AVRStudio4 не работает в виду подвисания студии.
Eclipse+AVR-GCC хороший выход, но не нравится каждый раз в свойствах проекта прописывать компилятор и пути. К тому же я не освоился пока с Eclipsом.
Может видел кто готовые примочки для Eclipsа чтобы заставить его напрямую работать с avr-gcc, или графическую оболочку наподобии AVRStudio?
- Томатный
- Нашел транзистор. Понюхал.
- Сообщения: 174
- Зарегистрирован: Вт июл 31, 2007 20:32:30
- Откуда: Киев, Украина
- Контактная информация:
jax писал(а):ребят, подскажите как грамотно опросить кнопку?
я делаюКод: Выделить всё
if(!(PINC & (1<<PC3)))
в программе всего лишь две процедуры:main и та, которая вызывается по нажатию кнопки.
при нажатии кнопки вызванная процедура зацикливается..
как быть?
Код: Выделить всё
if(bit_is_clear(PINC,PC3)) {...} // Если бит сброшен, то...
// if(bit_is_set(PINC,PC3)) {...}
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
хрен его знает, че они там понаменяли... вроде, пишут, только улучшили и рсширили... однако из листинга пропали операторы Си, что меня больше всего огорчает
однако по логике вещей все должно компилиться без искажений... совместимость-то вроде бу сохранена.
однако по логике вещей все должно компилиться без искажений... совместимость-то вроде бу сохранена.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
это делается так:Томатный писал(а):подскажыте, как зделать так, чтобы компилятор не компилировал функции которые я не использую? Ато я все свои полезные функции кинул в один файлик, но когда его подключаю, то фсе эти функции записываются в МК, хотя я использую только некоторые.
1. открываем опции проекта, заходим в раздел Custom Options
2. в этом разделе в строке левее кнопки Add вводим следующее -ffunction-sections
3. Нажимаем кнопку Add
4. в окошке слева щелкаем на [Linker Options]
5. теперь в той же строке вводим -Wl,-gc-sections
6. жмем Add и Ok
7. выполняем компиляцию всего проекта Build all
Внимание! Эти опции вкупе с режимами оптимизации могут создавать удивительные ситуации при отладке! Код при этом остается работоспособным. Выделенные синим строки вводить 1 в 1, как написано, пробелы и регистр критичны!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
knyaz* писал(а):Написал программу - нет прерывания... - TAXOMETP.zip
http://www.radiokot.ru/forum/viewtopic.php?t=8473
Если у вас новый WinAVR то SIGNAL нужно заменить так как описано в примерах для разных компиляторов на стр. 3 "Прерывания в AVR"
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- Brutaller
- Встал на лапы
- Сообщения: 87
- Зарегистрирован: Пн ноя 05, 2007 12:44:43
- Откуда: C:\Russia\SPb
- Контактная информация:
Хоть я и склоняюсь к ассемблеру, но всё-таки решил поэкспериментировать на сях. Вобщем попробовал я переписать на сях то, что было написано на асме и успешно работало. Взял IAR, написал, скомпилил, зашил, - работает. Взял CodeVisionAVR, написал, скомпилил, зашил, - работает. Взял WinAVR, написал, скомпилил, зашил, - НЕ работает. :))
В исходниках подправлялись только места под конкретные особенности каждого компилятора. Например объявление функции прерывания, хэдеры и т.п. В остальном код не менялся. При чем в первых двух вышеупомянутых компиляторах все работало на любом уровне оптимизации. А в WinAVR не заработало ни на одном уровне. При чем компилил как при помощи идущего в комплекте "Programmers Notepad", так и через AVRStudio, результат один и тот же. Потом попробовал поиграться с ним, посоздавать какие-нибудь функции и т.д. Так это вообще - мрак. Он оказывается умеет создавать фукции без конечной инструкции RET, с бесконечным циклом. Попав в которую я думаю ясно - что будет. :)) Это всё касается версии WinAVR-20071221 Про другие ничего не могу сказать. Но именно эта создала впечатление полной непредсказуемости и глючности.
В исходниках подправлялись только места под конкретные особенности каждого компилятора. Например объявление функции прерывания, хэдеры и т.п. В остальном код не менялся. При чем в первых двух вышеупомянутых компиляторах все работало на любом уровне оптимизации. А в WinAVR не заработало ни на одном уровне. При чем компилил как при помощи идущего в комплекте "Programmers Notepad", так и через AVRStudio, результат один и тот же. Потом попробовал поиграться с ним, посоздавать какие-нибудь функции и т.д. Так это вообще - мрак. Он оказывается умеет создавать фукции без конечной инструкции RET, с бесконечным циклом. Попав в которую я думаю ясно - что будет. :)) Это всё касается версии WinAVR-20071221 Про другие ничего не могу сказать. Но именно эта создала впечатление полной непредсказуемости и глючности.
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Brutaller писал(а):Это всё касается версии WinAVR-20071221 Про другие ничего не могу сказать. Но именно эта создала впечатление полной непредсказуемости и глючности.
Советую использовать предыдущую версию WinAVR.
Последний раз редактировалось tych Сб мар 29, 2008 20:52:44, всего редактировалось 2 раза.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Brutaller писал(а):Какую именно, номер?tych писал(а):Советую использовать предыдущую версию WinAVR.
Скачайте стабильную версию WinAVR-20060421 (24 Мб) и сохраните в вашем архиве - авось еще пришодится.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
WinAVR я сам осваиваю недолго, однако, особых глюков не заметил... если не считать вынесенной в отделную тему проблемы с EEPROM, да и то еще неизвестно, что именно там за проблема...
WinAVR по моему скоромному мнению вполне нормально все компилит, просто сильно соответствует стандарту С99 и не прощает разных вольностей, которые часто прощают другие компиляторы. Но если привести исходник в строгое соответствие стандарту - по-моему, все отлично работает.
А оптимизация визуально может приводить к странному поведению при отладке... но это не глюк, так по идее во всех системах...
WinAVR по моему скоромному мнению вполне нормально все компилит, просто сильно соответствует стандарту С99 и не прощает разных вольностей, которые часто прощают другие компиляторы. Но если привести исходник в строгое соответствие стандарту - по-моему, все отлично работает.
А оптимизация визуально может приводить к странному поведению при отладке... но это не глюк, так по идее во всех системах...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Brutaller
- Встал на лапы
- Сообщения: 87
- Зарегистрирован: Пн ноя 05, 2007 12:44:43
- Откуда: C:\Russia\SPb
- Контактная информация:
Ага, разобрался в чем дело. Беру свои слова по поводу глюкавости назад. Дело в том, что если в CVAVR или IAR достаточно было написать:
PORTB=Table[Dig1];
чтобы загрузить байт из памяти программ,
то в WinAVR надо вот так:
PORTB=pgm_read_byte(&Table[0]+Dig1);
т.е. через указатели и специальные функции %)
И еще интересная строчка попалась в файле avr-libc-user-manual.pdf
Ну вобщем то ясно, всё-таки WinAVR это "порт" GCC под avr, поэтому то такие вот пляски :)
PORTB=Table[Dig1];
чтобы загрузить байт из памяти программ,
то в WinAVR надо вот так:
PORTB=pgm_read_byte(&Table[0]+Dig1);
т.е. через указатели и специальные функции %)
И еще интересная строчка попалась в файле avr-libc-user-manual.pdf
и потом куча всяких функций для доступа к памяти программ.GCC does not have full support for multiple address spaces yet
Ну вобщем то ясно, всё-таки WinAVR это "порт" GCC под avr, поэтому то такие вот пляски :)