07.12.2015, 19:09 | #51 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
##p как раз нормально что "берется", а вот как вам удалось pinLed туда втыкнуть ..
А можете показать скетч? |
07.12.2015, 21:29 | #52 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
Дошло. Макросы из приватной секции нельзя использовать в скетчах. Пользуйтесь макросами из публичной секции файла. Там есть всё.
|
08.12.2015, 13:31 | #53 |
Junior Member
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
В Setup()
pinMode(pinLed, OUTPUT); только когда в boards.txt a168_16MHz.build.mcu=atmega168p pinLed определен в arhat_pins328p.h |
08.12.2015, 14:19 | #54 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
Да, для ЦПУ Atmega48P, ATmega88P, ATmega168P и ATmega328P используется один и тот же файл "распальцовки" - arhat_pins328p.h
В нем есть ошибка: он компилируется только для Atmega328p. Чтобы исправить - надо скопировать строчку проверки процессора из arhat.h в этот файл, в тоже место где проверяется тип процессора, заменив правильно директивы препроцессора. Файл arhat_pin328p.h, Сейчас: #ifdef __AVR_ATmega328P__ Должно стать так: #if defined(__AVR_ATmega88P__) || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__) Разрешить в главном файле сделал, а вот тут пропустил. Спасибо за дотошность. Выложу на гитхаб исправление. |
08.12.2015, 15:41 | #55 |
Junior Member
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
Спасибо, теперь все нормально.
|
08.12.2015, 15:51 | #56 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
Вам спасибо.
|
24.12.2015, 20:49 | #57 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
Пофиксен баг с хуком таймера, архив тут - ОБНОВЛЕН. Теперь можно делать и RTOS.
Ещё раз, тем кто пользуется: если что-то работает "не так" - пишите! |
28.12.2015, 16:45 | #58 |
Junior Member
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
Попробовал откомпилировать кусок из последней версии автоматной библиотени:
Код:
#include <avr/pgmspace.h> #include <avr/eeprom.h> void setup() { EEPROM_write(0x40, EEPROM_read(0x10)); } void loop() {} void EEPROM_write(unsigned int uiAddress, unsigned char ucData) { while(EECR & (1<<EEWE)); // Ждать завершения предыдущей записи EEAR = uiAddress; // Проинициализировать регистры EEDR = ucData; EECR |= (1<<EEMWE); // Установить флаг EEMWE EECR |= (1<<EEWE); // Начать запись в EEPROM } unsigned char EEPROM_read(unsigned int uiAddress) { while(EECR & (1<<EEWE)); // Ждать завершения предыдущей записи EEAR = uiAddress; // Проинициализировать регистр адреса EECR |= (1<<EERE); // Выполнить чтение return EEDR; } Вылезают ошибки: Arduino: 1.6.5 (Windows XP), Плата"atmega168 (16 MHz)" TEST.ino: In function 'void EEPROM_write(unsigned int, unsigned char)': TEST:13: error: 'EEWE' was not declared in this scope TEST:16: error: 'EEMWE' was not declared in this scope TEST:17: error: 'EEWE' was not declared in this scope TEST.ino: In function 'unsigned char EEPROM_read(unsigned int)': TEST:22: error: 'EEWE' was not declared in this scope 'EEWE' was not declared in this scope Кстати бита EEWE в Атмегах нет, может надо использовать EEPE ? |
28.12.2015, 18:40 | #59 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
Сожалею, но с этим местом не подскажу. Код откровенно откуда-то стырил и не проверял, поскольку ещё не работал с EEPROM ни разу. Скорее всего он не для 168 меги, надо смотреть datasheet, а у меня сейчас со временем несколько туговато. Освобожусь не ранее середины февраля.
|
29.12.2015, 09:33 | #60 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 |
Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.
И ещё. В автоматной части либы, есть какая-то проблемка с файлом hcsr04.h. Дело в том, что в нем генерация функции запуска датчика startTrigNN() переведена на вызов без параметров для прямого использования в скетчах без автоматной части (понадобилось), но, внезапно, так она не работает. А соответственно не компиляется пример TSC_PulseIn.ino .. если воткнуть параметр "взад" - все компиляется и работает. Вот с этим пытаюсь разобраться детальнее, ибо у нас идет подготовка к отборочному туру соревнований .. а она "не пашет" как надо. Беглый анализ кода пока ничего не дал.
|
Метки |
arduino mega 2560, скетч, ардуино |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|