attiny2313 + mcp23017

victorv
Offline
Зарегистрирован: 31.07.2015

Здравствуйте, понадобилось увеличить кол-во портов . Возникла проблема - компилирую в Arduino IDE 1.8.2  и как только выставляю плату attiny2313 выходит ошибка "virtual void write(const uint8_t *buffer, size_t size);". Если выставить плату любую ардуино- уна, нано , мега -проблем нет. Помогите , не могу понять в чем причина . Библиотеку для mcp23017 брал тут http://homes-smart.ru/index.php/oborudovanie/prochee/rasshiryaem-porty . Там и пример с миганием .

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ошибка в 32-ой строке. Там буква лишняя.

victorv
Offline
Зарегистрирован: 31.07.2015

ЕвгенийП пишет:

Ошибка в 32-ой строке. Там буква лишняя.

 

 я с таким не сталкивался. Если не трудно покажите конкретно где?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

victorv, плохо у вас с чувством юмора. По делу:  откуда I2C шина  в тайни2313 ? :)

victorv
Offline
Зарегистрирован: 31.07.2015

буду знать ) Опять же если не затруднит -где найти список поддерживающих эту шину ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

victorv пишет:

ЕвгенийП пишет:

Ошибка в 32-ой строке. Там буква лишняя.

 

 я с таким не сталкивался. Если не трудно покажите конкретно где?

Перевожу на русский язык: Вы не привели свой код. Посторонние статьи неинтересны - нужен Ваш код прямо копипастой из IDE.

victorv
Offline
Зарегистрирован: 31.07.2015

ЕвгенийП пишет:

victorv пишет:

ЕвгенийП пишет:

Ошибка в 32-ой строке. Там буква лишняя.

 

 я с таким не сталкивался. Если не трудно покажите конкретно где?

Перевожу на русский язык: Вы не привели свой код. Посторонние статьи неинтересны - нужен Ваш код прямо копипастой из IDE.

 

//This sample sets all pins of two MCP23017 chips to 1, then to 0 repeatedly

//#include directive order is important!
//It should be Wire.h, MCP23x17.h, MCP23017.h
#include <Wire.h>
#include <MCP23x17.h>
#include <MCP23017.h>

//Here we create two objects, but we cannot initialize them now, because I2C bus is not ready
CMCP23017 mcp23_1;
CMCP23017 mcp23_2;

void setup()
{
  //Here we configure I2C bus
  Wire.begin();
  //and initialize MCP23* objects with addresses of 0 and 1
  mcp23_1.init(0);
  mcp23_2.init(1);

  //We can configure all pins as outputs in a loop   
  for (int i=0; i<16; i++) {
    mcp23_1.pinMode(i, OUTPUT);
    mcp23_2.pinMode(i, OUTPUT);
  }
  //or, we can configure all 16 pins at once, calling pinMode16 method
  //mcp23_1.pinMode16(0x00000);
  //mcp23_2.pinMode16(0x00000);
}

void loop()
{
  //We can switch all pins to HIGH with a loop
  for (int i=0; i<16; i++) {
    mcp23_1.digitalWrite(i, HIGH);
    mcp23_2.digitalWrite(i, HIGH);
  }
  //or, we can swith all pins at once with digitalWrite16 method
  //mcp23_1.digitalWrite16(0x0ffff);
  //mcp23_2.digitalWrite16(0x0ffff);
  delay(500);
  //...same for LOW
  for (int i=0; i<16; i++) {
    mcp23_1.digitalWrite(i, LOW);
    mcp23_2.digitalWrite(i, LOW);
  }
  //mcp23_1.digitalWrite16(0x00000);
  //mcp23_2.digitalWrite16(0x00000);
  delay(500);
}

 

In file included from C:\Program Files (x86)\Arduino\libraries\MCP23017\examples\Blink\Blink.pde:5:0:

C:\Users\VICTOR\Documents\Arduino\libraries\Wire/Wire.h:61:20: error: conflicting return type specified for 'virtual size_t TwoWire::write(const uint8_t*, size_t)'

     virtual size_t write(const uint8_t *, size_t);

                    ^

In file included from C:\Users\VICTOR\Documents\Arduino\hardware\tiny\avr\cores\tiny/Stream.h:24:0,

                 from C:\Users\VICTOR\Documents\Arduino\hardware\tiny\avr\cores\tiny/TinyDebugSerial.h:31,

                 from C:\Users\VICTOR\Documents\Arduino\hardware\tiny\avr\cores\tiny/WProgram.h:18,

                 from C:\Users\VICTOR\Documents\Arduino\hardware\tiny\avr\cores\tiny/Arduino.h:4,

                 from C:\Users\VICTOR\AppData\Local\Temp\arduino_build_901624\sketch\Blink.pde.cpp:1:

C:\Users\VICTOR\Documents\Arduino\hardware\tiny\avr\cores\tiny/Print.h:75:18: error:   overriding 'virtual void Print::write(const uint8_t*, size_t)'

     virtual void write(const uint8_t *buffer, size_t size);

                  ^
 

 

 

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Сообщаю, что входной тест на наличие мозга состоит в том, что потенциальный участник проверяется на способность вставить код, согласно правилам Форума.

К величайшему сожалению, Вы его не прошли.

Вы може попробовать снова, у нас открытое сообщество.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

victorv пишет:

 Опять же если не затруднит -где найти список поддерживающих эту шину ?

Параметрический поиск.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, всё нормально - конфликт библиотек. Пройдите по всем файлам (они указаны в сообщении) и сделайте везде одинаково: уж либо size_t, либо void, но везде одинаково.

По дороге могут выплать проблемы, но если выплывут, тогда и поговорим.

victorv
Offline
Зарегистрирован: 31.07.2015

dimax  ,   ЕвгенийП  я не понял -проблема в том , что attiny2313 не поддерживает I2C или в ошибки в скетче (в библиотеках)?

nik182
Offline
Зарегистрирован: 04.05.2015

Библиотека для тинки называется tinywire. Её надо использовать вместо wire.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

nik182 пишет:
Библиотека для тинки называется tinywire. Её надо использовать вместо wire.

Угу.

...а потом переписть под нее библиотеку MCP23017

nik182
Offline
Зарегистрирован: 04.05.2015

Там где ссылка на библиотеку есть пример без библиотеки. Только имя поменять и слово write на send заменить. Ну а дальше тест на мозг. Согласен.

victorv
Offline
Зарегистрирован: 31.07.2015

nik182 пишет:
Библиотека для тинки называется tinywire. Её надо использовать вместо wire.

 

Спасибо. Я нашел TinyWireS , она подойдет или подскажите где скачать ?

nik182
Offline
Зарегистрирован: 04.05.2015
#if defined( __AVR_ATtiny2313__ )
  # define DDR_USI DDRB
  # define PORT_USI PORTB
  # define PIN_USI PINB
  # define PORT_USI_SDA PB5
  # define PORT_USI_SCL PB7
  # define PIN_USI_SDA PINB5
  # define PIN_USI_SCL PINB7
  # define USI_START_COND_INT USISIF
  # define USI_START_VECTOR USI_START_vect
  # define USI_OVERFLOW_VECTOR USI_OVERFLOW_vect
  #endif

 

victorv
Offline
Зарегистрирован: 31.07.2015

не могу понять wire.h  меняю на TinyWireM.h та же ошибка.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, я же Вам написал как бороться с этой ошибкой. Приведите типы в соответствие и эта ошибка уйдёт. Возможно, полезут другие.