Главная arrow Форум  
13.11.2019 г.
Главная
Проекты
Статьи
Начинающим
Архив новостей
Ссылки
Контакты
Поиск
Файлы
Форум
Карта сайта
Авторизация





Забыли пароль?
Ещё не зарегистрированы? Регистрация
Поддержи наш сайт!
Через WebMoney

 R785211844650
 Z210696637574
 E368177590409

Форум ARV Research
Добро пожаловать, Гость
Пожалуйста Вход или Регистрация.
Забыли пароль?
_GEN_GOTOBOTTOM Ответить

TOPIC: Eclipse

#7592
Apparatchik (Пользователь)
Специалист
Постов: 123
graphgraph
Eclipse 01.06.2012 01:18 Репутация: 0  
Здравствуйте.

Ув. ARV я прочитал Ваши статьи про Eclipse и захотел "слезть" с CVAVR. Так вот скачал я WinAVR и установил его, скачал Eclipse Helios обновил его и установил плагин AVR, а также русифицировал. ОС Windows 7.

Создаю прект С++, выбираю конфигурацию Release, контроллер mega88 и частоту 8000000Гц. Далее создаю исходник *.cpp в нем пишу
Code:

  /*  * term_in14.cpp  *  *  Created on: 01.06.2012  *      Author: Apparatchik  */ #include <avr/io.h> int main (void) {     return 1; }


и пытаюсь собрать прект. В консоле очень много пишет make: write error: No such file or directoryпотом Windows 7 пишет "Прекращена работа make.exe" ну и Eclipse говорит что ошибки в процесе компоновки. Набор файлов в папке пректа создается, в том числе и *.hex, но я непроверял правильные ли они.

Что я еще не сделал или сделал не так?
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7593
ARV (Администратор)
Администратор
Постов: 2384
graph
В ответ на: Eclipse 01.06.2012 08:20 Репутация: 175  
я с С++ пока не работаю, поэтому попробуйте создать проект Си и повторить все - эффект будет тот же? Из наиболее важных "проблем" с WinAVR я могу назвать только ее категорическую нелюбовь к именам папок с пробелами и русскими буквами. Если у вас где-то "по пути" к WinAVR или вашему проекту есть такие папки - избавьтесь от них. Еще может быть проблема, если у вас на компе установлен Borland CBuilder, тогда может оказаться так, что WinAVR пытается запустить свою make, а запускается утилита make от Борланда, а они категорически не совместимы. В этом случае надо отредактировать переменную окружения PATH так, чтобы первым бул путь к GCC-шному make

пока все...
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7594
Apparatchik (Пользователь)
Специалист
Постов: 123
graphgraph
В ответ на: Eclipse 02.06.2012 12:29 Репутация: 0  
Создал прект на Си - ничего не поменялось. WinAVR и Eclipse находятся в корне диска С, рабочее пространство F:ProjectsEclipse

В системе установлена Embarcadero RAD Studio 2009 в свойствах системы поменял переменную PATH было так:
C:Program FilesCodeGearRAD Studio6.0bin;C:UsersPublicDocumentsRAD Studio6.0Bpl;C:Program FilesPC Connectivity Solution;C:WinAVRbin;C:WinAVRutilsbin;C:Program FilesCollabNetSubversion Client;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT% System32WindowsPowerShellv1.0;C:Program FilesMKVtoolnix
сделал так:
C:WinAVRbin;C:WinAVRutilsbin;C:Program FilesCodeGearRAD Studio6.0bin;C:UsersPublicDocumentsRAD Studio6.0Bpl;C:Program FilesPC Connectivity Solution;C:Program FilesCollabNetSubversion Client;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT% System32WindowsPowerShellv1.0;C:Program FilesMKVtoolnix
ничего не поменялось.

Оно в консоле вроде проскакивает что компоновка прошла, но очень быстро и я неуверен с истории оно пропадает. И еще между сообщениями make: write error: No such file or directory имеется одно make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x752f75ca)

Содержимое поста отредактировано: Apparatchik, в: 02.06.2012 12:30
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7599
Apparatchik (Пользователь)
Специалист
Постов: 123
graphgraph
В ответ на: Eclipse 03.06.2012 11:53 Репутация: 0  
Проблема решилась скачиванием самой последней Eclipse indigo classic 3.7.2. Теперь начинают появлятся вопросы связаные с миграцией с CVAVR. Вы в своих пректах используете тип uint8_t, он чем то отличается от unsigned char кроме как коротким написанием? Где можно почитать про всякие тонкости WinAVR, ведь синтаксис одинаков?
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7600
Apparatchik (Пользователь)
Специалист
Постов: 123
graphgraph
В ответ на: Eclipse 03.06.2012 11:53 Репутация: 0  
Проблема решилась скачиванием самой последней Eclipse indigo classic 3.7.2. Теперь начинают появлятся вопросы связаные с миграцией с CVAVR. Вы в своих пректах используете тип uint8_t, он чем то отличается от unsigned char кроме как коротким написанием? Где можно почитать про всякие тонкости?

P.S. при первой компиляции есть предупреждение warning: 'buf' may be used uninitialized in this function при повторной компиляции, ничего не меняя, оно пропадает.

Содержимое поста отредактировано: Apparatchik, в: 03.06.2012 15:55
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7601
ARV (Администратор)
Администратор
Постов: 2384
graph
В ответ на: Eclipse 03.06.2012 18:03 Репутация: 175  
1. uint8_t, int8_t, uint15_t и так далее - это СТАНДАРТНЫЕ типы данных по стандарту С99. их важное отличие в том, что НА ЛЮБОЙ платформе они будут содержать именно столько битов, сколько написано (8, 16 и т.д.), в то время как int в зависимости от платформы может быть 16, 32 и даже 64 бита. при этом имейте ввиду, что char тоже может быть совсем не 8 бит - все типы в Си - платформозависимые. чтобы от этой зависимости избавиться, в стандарте С99 были введены эти самые типы.

2. при первой компиляции вам сообщается, что buf может быть не инициализирован при первом использовании - видимо, вы описали переменную и используете ее в блоке if или аналогичном - компилятор подозревает, что если будет не if, а else - эта переменная там окажется с неопределенным значением. проверьте, так ли это и исправьте, если так. если все нормально - забудьте об этом. при повторной компиляции компилятор смотрит: изменился ли исходник? если не изменился, то используется ранее скомпилированный объектный файл, т.е. без необходимости перекомпиляция не происходит - поэтому и нет варнинга.
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7602
Apparatchik (Пользователь)
Специалист
Постов: 123
graphgraph
В ответ на: Eclipse 03.06.2012 18:47 Репутация: 0  
Может плохо ищу, но никак ненайду описание всех стандартных типов, чтоб их использовать.

По второму пункту Вы как всегда правы, переменная buf при определении не инициализировалась, а значение ей присваивалось в switch. Присвоил ей ноль при определении и варнинг пропал.
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7603
ARV (Администратор)
Администратор
Постов: 2384
graph
В ответ на: Eclipse 04.06.2012 00:33 Репутация: 175  
описание не описание, но перечисление большинства сделано в моем описании WinAVR. просто ознакомиться с ним можно и заглянув в stdint.h - там все понятно, по-моему. есть еще uint_fast8_t и другие, но в применении к AVR они роли не играют, т.к. это типы для "наиболее быстрой работы" целевой платформы, т.е. требует от компилятора использовать регистр соответствующей разрядности, работа с которым происходит наиболее быстро. у AVR хоть регистры, хоть не-регистры - все равно 8-бит, и как ни крутри, быстрее не будет...
можно наплевать пока что

Содержимое поста отредактировано: ARV, в: 04.06.2012 00:34
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7604
Apparatchik (Пользователь)
Специалист
Постов: 123
graphgraph
В ответ на: Eclipse 04.06.2012 19:48 Репутация: 0  
ARV писал(а):
описание не описание, но перечисление большинства сделано в моем описании WinAVRСпасибо огромное, почитал и даже разпечатал некоторые страницы.

Можно ли определить тип переменной, в которую можно заносить название порта например PORTD и уже эту переменную использовать в программе и макросах (чтоб быстро менять печатку)?
Как отключать/менять степень оптимизации?
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7605
ARV (Администратор)
Администратор
Постов: 2384
graph
В ответ на: Eclipse 04.06.2012 23:34 Репутация: 175  
степень оптимизации задается в свойствах проекта в Eclipse - если у вас установлен плагин для поддержки AVR, то это делается легко и просто путем выбора из выпадающего списка.

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

1. Определить указатель на порт, присвоить ему значение адреса нужного порта, а везде в программе использовать уже этот указатель.
Code:

 volatile uint8_t *port_ptr// определили указатель port_ptr = &PORTB// присвоили значение *port_ptr ^= _BV(1); // инверсия 1-го бита порта



2. вместо переменной просто объявить макрос, а в программе работать уже с макросом
Code:

 #define MY_DDR   DDRB #define MY_PIN   PINB #define MY_PORT   PORTB MY_DDR _BV(1); // первый пин порта - на вывод if(MY_PIN _BV(0)) MY_PORT ^= _BV(1); // если на нулевом бите 1, то инвертировать 1-й пбит порта



кстати, в моих последних проектах я использую самописный хидер avr_helper.h, в котором определил рад макросов для удобства работы с портами в том числе, при известном желании можно писать легкомодифицируемые в отношении распределения портов программы.
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
_GEN_GOTOTOP Ответить
© Copyright 2007 Best of Joomla, Работает на FireBoardполучить последние сообщения прямо на Ваш рабочий стол