07.01.2016, 10:32 | #71 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
В ИДЕ - никак. Я просто сделал себе несколько разных *.sh пускалок (Линукс, по-вашему bat-файлы), которыми смотрю результат препроцессора, ассемблера, перекрестные ссылки и т.п.
Готовил такие батники, подсматривая КАК иде компилит скетчи. Там есть опция "болтливый режим" - включаете её и получаете детальные тексты запуска компилятора, библиотекаря и линкера с avr-dude. Для посмотреть результат препроцессинга - добавьте опцию компилятору -E и переименуйте выходной файл, тот что после опции -o в удобный для вас путь/имя.расширение Для посмотреть ассемблер - добавьте опцию компилятору -Wa,-achls=путь/имя.расширение Для заливки без иде - смотрите строчку запуска avr-dude. Я сейчас ИДЕ запускаю только для "посмотреть" как оно будет компиляться в нем. А вообще, сильно рекомендую AVR-Studio от производителя. Масса готовых библиотек и лучшего качества, шикарное ИДЕ и море проф. поддержки. Бесплатно и очень жаль, что его нет под Линукс. |
07.01.2016, 14:10 | #72 |
Junior Member
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0 |
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; } |
07.01.2016, 18:11 | #73 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
Пасибки, дополню. Проверить пока не могу, занят отладкой бота, катающегося по линии.. завтра, если время выбрать удастся. Заодно и EEPROM добавлю. У меня ещё почти готов кусок с аппаратным I2C - режимы master rx/tx .. пока только для меги. Только руки не доходят допилить slave режимы и проверить для 328P.
|
07.01.2016, 23:34 | #74 |
Junior Member
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
После долгих экспериментов выяснил, что линкер валит WString.cpp
После его переименования пример компилится и нормально работает. Помогает также удаление WString.cpp.o из core.a перед линковкой. Интересно, что будет под линуксом ? |
11.01.2016, 15:31 | #75 |
Junior Member
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
Глючила левая PWM библиотека, сейчас вроде все работает.
|
21.03.2016, 15:56 | #76 |
Junior Member
Регистрация: 13.05.2014
Сообщений: 4
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
Насколько реально это использовать без участия ардуино иде, например в чистом Atmel Studio? Если что, то я CyberLib
|
21.03.2016, 16:29 | #77 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
Пробуйте. По крайней мере без режима совместимости, должно работать. Это я про arhat
Atmel Studio не имею, ибо Линукс. Пробовал ставить через wine - не понравилась работа глючного wine .. Сам Ардуино ИДЕ пользую только для прошивки, чаще пишу в "блокноте" Линукса - Kate. |
21.03.2016, 17:14 | #78 |
Junior Member
Регистрация: 13.05.2014
Сообщений: 4
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
Ну ардуино использует гцц, и в студии гцц. Так что должно бы ехать, если повыковыривать не ардуино - specific код. Буду копать
|
22.03.2016, 07:33 | #79 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
У меня wiring специфик код практически весь заменен на макрокоманды по принципу 1 вызов = 1 конманда МК. Оно просто "с виду" похоже исключительно "удобства для". Если не включать специально режим совместимости с wiring то ничего из него вызываться и не должно.
.. акромя недописанного. |
03.04.2016, 11:16 | #80 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 |
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 возвращается по старту передатчика, а не по завершению передачи. Контроль занятости аппаратной части перед очередным сеансом связи. |
Метки |
arduino mega 2560, скетч, ардуино |
Здесь присутствуют: 4 (пользователей: 0 , гостей: 4) | |
|
|