![]() |
|
|
#51 |
|
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
##p как раз нормально что "берется", а вот как вам удалось pinLed туда втыкнуть ..
![]() А можете показать скетч? |
|
|
|
|
|
#52 |
|
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
Дошло. Макросы из приватной секции нельзя использовать в скетчах. Пользуйтесь макросами из публичной секции файла. Там есть всё.
|
|
|
|
|
|
#53 |
|
Junior Member
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0 ![]() |
В Setup()
pinMode(pinLed, OUTPUT); только когда в boards.txt a168_16MHz.build.mcu=atmega168p pinLed определен в arhat_pins328p.h |
|
|
|
|
|
#54 |
|
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
Да, для ЦПУ 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__) Разрешить в главном файле сделал, а вот тут пропустил. Спасибо за дотошность. ![]() Выложу на гитхаб исправление. |
|
|
|
|
|
#55 |
|
Junior Member
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0 ![]() |
Спасибо, теперь все нормально.
|
|
|
|
|
|
#56 |
|
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
Вам спасибо.
|
|
|
|
|
|
#57 |
|
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
Пофиксен баг с хуком таймера, архив тут - ОБНОВЛЕН. Теперь можно делать и RTOS.
![]() Ещё раз, тем кто пользуется: если что-то работает "не так" - пишите! |
|
|
|
|
|
#58 |
|
Junior Member
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0 ![]() |
Попробовал откомпилировать кусок из последней версии автоматной библиотени:
Код:
#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 ? |
|
|
|
|
|
#59 |
|
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
Сожалею, но с этим местом не подскажу. Код откровенно откуда-то стырил и не проверял, поскольку ещё не работал с EEPROM ни разу. Скорее всего он не для 168 меги, надо смотреть datasheet, а у меня сейчас со временем несколько туговато. Освобожусь не ранее середины февраля.
|
|
|
|
|
|
#60 |
|
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
И ещё. В автоматной части либы, есть какая-то проблемка с файлом hcsr04.h. Дело в том, что в нем генерация функции запуска датчика startTrigNN() переведена на вызов без параметров для прямого использования в скетчах без автоматной части (понадобилось), но, внезапно, так она не работает. А соответственно не компиляется пример TSC_PulseIn.ino .. если воткнуть параметр "взад" - все компиляется и работает. Вот с этим пытаюсь разобраться детальнее, ибо у нас идет подготовка к отборочному туру соревнований .. а она "не пашет" как надо. Беглый анализ кода пока ничего не дал.
|
|
|
|
![]() |
| Метки |
| arduino mega 2560, скетч, ардуино |
| Здесь присутствуют: 2 (пользователей: 0 , гостей: 2) | |
|
|