Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.01.2016, 10:32   #71
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

В ИДЕ - никак. Я просто сделал себе несколько разных *.sh пускалок (Линукс, по-вашему bat-файлы), которыми смотрю результат препроцессора, ассемблера, перекрестные ссылки и т.п.

Готовил такие батники, подсматривая КАК иде компилит скетчи. Там есть опция "болтливый режим" - включаете её и получаете детальные тексты запуска компилятора, библиотекаря и линкера с avr-dude.

Для посмотреть результат препроцессинга - добавьте опцию компилятору -E и переименуйте выходной файл, тот что после опции -o в удобный для вас путь/имя.расширение

Для посмотреть ассемблер - добавьте опцию компилятору -Wa,-achls=путь/имя.расширение

Для заливки без иде - смотрите строчку запуска avr-dude. Я сейчас ИДЕ запускаю только для "посмотреть" как оно будет компиляться в нем.

А вообще, сильно рекомендую AVR-Studio от производителя. Масса готовых библиотек и лучшего качества, шикарное ИДЕ и море проф. поддержки. Бесплатно и очень жаль, что его нет под Линукс.
Arhat109 вне форума   Ответить с цитированием
Старый 07.01.2016, 14:10   #72
DeGlucker
Junior Member
 
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0
DeGlucker is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

Закомментил.

Для атмеги 168 падает LD.exe
collect2.exe: error: ld returned 5 exit status
Ошибка компиляции.

Для атмеги 2560 компилится нормально, проверить не могу, под рукой нет платы.
Глюк ваще непонятный

Заодно допилил EEPROM (содрал с библиотеки EEPROM).
Можно добавить в arhat.c

Код:
unsigned char EEPROM_read(unsigned int uiAddress)
{
  while(EECR & (1<<EEPE));
  EEARL = uiAddress & 0xFF;
  EEARH = (uiAddress>>8) & 0xFF;
  EECR |= (1<<EERE);
  return EEDR;
}

void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
  while(EECR & (1<<EEPE));
  EEARL = uiAddress & 0xFF;
  EEARH = (uiAddress>>8) & 0xFF;
  EEDR = (ucData);
  uint8_t oreg = SREG;
  cli();
  EECR |= (1<<EEMPE);
  EECR |= (1<<EEPE); 
  SREG = oreg;
}
DeGlucker вне форума   Ответить с цитированием
Старый 07.01.2016, 18:11   #73
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

Пасибки, дополню. Проверить пока не могу, занят отладкой бота, катающегося по линии.. завтра, если время выбрать удастся. Заодно и EEPROM добавлю. У меня ещё почти готов кусок с аппаратным I2C - режимы master rx/tx .. пока только для меги. Только руки не доходят допилить slave режимы и проверить для 328P.
Arhat109 вне форума   Ответить с цитированием
Старый 07.01.2016, 23:34   #74
DeGlucker
Junior Member
 
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0
DeGlucker is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

После долгих экспериментов выяснил, что линкер валит WString.cpp
После его переименования пример компилится и нормально работает.
Помогает также удаление WString.cpp.o из core.a перед линковкой.
Интересно, что будет под линуксом ?
DeGlucker вне форума   Ответить с цитированием
Старый 11.01.2016, 15:31   #75
DeGlucker
Junior Member
 
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0
DeGlucker is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

Глючила левая PWM библиотека, сейчас вроде все работает.
DeGlucker вне форума   Ответить с цитированием
Старый 21.03.2016, 15:56   #76
MaxSoft
Junior Member
 
Регистрация: 13.05.2014
Сообщений: 4
Вес репутации: 0
MaxSoft is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

Насколько реально это использовать без участия ардуино иде, например в чистом Atmel Studio? Если что, то я CyberLib
MaxSoft вне форума   Ответить с цитированием
Старый 21.03.2016, 16:29   #77
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

Пробуйте. По крайней мере без режима совместимости, должно работать. Это я про arhat

Atmel Studio не имею, ибо Линукс. Пробовал ставить через wine - не понравилась работа глючного wine .. Сам Ардуино ИДЕ пользую только для прошивки, чаще пишу в "блокноте" Линукса - Kate.
Arhat109 вне форума   Ответить с цитированием
Старый 21.03.2016, 17:14   #78
MaxSoft
Junior Member
 
Регистрация: 13.05.2014
Сообщений: 4
Вес репутации: 0
MaxSoft is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

Ну ардуино использует гцц, и в студии гцц. Так что должно бы ехать, если повыковыривать не ардуино - specific код. Буду копать
MaxSoft вне форума   Ответить с цитированием
Старый 22.03.2016, 07:33   #79
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

У меня wiring специфик код практически весь заменен на макрокоманды по принципу 1 вызов = 1 конманда МК. Оно просто "с виду" похоже исключительно "удобства для". Если не включать специально режим совместимости с wiring то ничего из него вызываться и не должно.
.. акромя недописанного.
Arhat109 вне форума   Ответить с цитированием
Старый 03.04.2016, 11:16   #80
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

DeGlucker, обновил гитхаб, изменения прописал в первый пост. Можете потестировать. Только внимательнее: в коммит попали установки ножек для датчика цвета от моего скетча для Ардуино Мега 2560 - валит компиляцию для 328 и его сородичей.

На подходе работа с I2C(TWI) с аппаратным драйвером по прерываниям и работа с LCD дисплеями на базе HD44780 (у меня LCD1602A, на нем сейчас и тестирую). Особенности:
1. Произвольная частота шины I2C от 490гц .. до 1Мгц включительно;
2. Отсутствие внутренней буферизации - возможна работа вообще без явной буферизации (параметр на стеке) или внешняя буферизация в конечных применениях. Что снижает требования к памяти как FLASH так и SRAM, а также существенно ускоряет работу скетча с драйвером;
3. Возможность одновременной работы в режимах Master и Slave, кроме совмещения Master-RX + Slave-RX (не бывает двух приемников у аппаратного контроллера одновременно);
4. автоматный принцип работы: отправка/чтение I2C не держит основное исполнение программы "до завершения" (как у wiring twi.h в типовом применении функций twi_read(), twi_write()). Передача по I2C возвращается по старту передатчика, а не по завершению передачи. Контроль занятости аппаратной части перед очередным сеансом связи.
Arhat109 вне форума   Ответить с цитированием
Ответ

Метки
arduino mega 2560, скетч, ардуино


Здесь присутствуют: 4 (пользователей: 0 , гостей: 4)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 01:53. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика