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

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

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

##p как раз нормально что "берется", а вот как вам удалось pinLed туда втыкнуть ..
А можете показать скетч?
Arhat109 вне форума   Ответить с цитированием
Старый 07.12.2015, 21:29   #52
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

Дошло. Макросы из приватной секции нельзя использовать в скетчах. Пользуйтесь макросами из публичной секции файла. Там есть всё.
Arhat109 вне форума   Ответить с цитированием
Старый 08.12.2015, 13:31   #53
DeGlucker
Junior Member
 
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0
DeGlucker is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

В Setup()
pinMode(pinLed, OUTPUT);

только когда в boards.txt a168_16MHz.build.mcu=atmega168p

pinLed определен в arhat_pins328p.h
DeGlucker вне форума   Ответить с цитированием
Старый 08.12.2015, 14:19   #54
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию 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__)

Разрешить в главном файле сделал, а вот тут пропустил. Спасибо за дотошность.
Выложу на гитхаб исправление.
Arhat109 вне форума   Ответить с цитированием
Старый 08.12.2015, 15:41   #55
DeGlucker
Junior Member
 
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0
DeGlucker is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

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

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

Пофиксен баг с хуком таймера, архив тут - ОБНОВЛЕН. Теперь можно делать и RTOS.

Ещё раз, тем кто пользуется: если что-то работает "не так" - пишите!
Arhat109 вне форума   Ответить с цитированием
Старый 28.12.2015, 16:45   #58
DeGlucker
Junior Member
 
Регистрация: 04.12.2015
Сообщений: 14
Вес репутации: 0
DeGlucker is an unknown quantity at this point
По умолчанию 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 ?
DeGlucker вне форума   Ответить с цитированием
Старый 28.12.2015, 18:40   #59
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

Сожалею, но с этим местом не подскажу. Код откровенно откуда-то стырил и не проверял, поскольку ещё не работал с EEPROM ни разу. Скорее всего он не для 168 меги, надо смотреть datasheet, а у меня сейчас со временем несколько туговато. Освобожусь не ранее середины февраля.
Arhat109 вне форума   Ответить с цитированием
Старый 29.12.2015, 09:33   #60
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

И ещё. В автоматной части либы, есть какая-то проблемка с файлом hcsr04.h. Дело в том, что в нем генерация функции запуска датчика startTrigNN() переведена на вызов без параметров для прямого использования в скетчах без автоматной части (понадобилось), но, внезапно, так она не работает. А соответственно не компиляется пример TSC_PulseIn.ino .. если воткнуть параметр "взад" - все компиляется и работает. Вот с этим пытаюсь разобраться детальнее, ибо у нас идет подготовка к отборочному туру соревнований .. а она "не пашет" как надо. Беглый анализ кода пока ничего не дал.
Arhat109 вне форума   Ответить с цитированием
Ответ

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


Здесь присутствуют: 5 (пользователей: 0 , гостей: 5)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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


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


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