Digispark Attiny85 прерывание

Тема в разделе "Arduino & Shields", создана пользователем Zander, 21 сен 2017.

  1. Zander

    Zander Нерд

    То ли я слепой, то ли лыжи не едут.
    Везде говорится что указанный в названии темы МК, поддерживает аппаратное прерывание. И нигде я не нашел инфы о том, на каких пинах он его поддерживает. Ведь наверное не на всех?
    для особо умных, даташит листал, но нужной инфы и там не нашел, то ли я слепой, то ли...
    короч ткните носом или расскажите кто знает.
     
  2. rkit

    rkit Гуру

    Разумеется на всех.
     
    Zander нравится это.
  3. Zander

    Zander Нерд

    Возник тут еще один вопрос, по тому же самому МК.
    Так что спрошу-ка я тут, не создавая новой темы.
    Собираю I2C-сеть из нескольких МК, по задумке должна быть одна Ардуино-Уно/Мега - мастер, и несколько Digispark Attiny85 - slave с разными адресами понятное дело.

    Посмотрел в сети примеры, пишу значит:
    Код (C++):
    # include <Wire.h>
    void setup()
    {
      // Инициализация устройства

      Wire.begin(Адрес_устройства);
      Wire.onRequest(requestEvent);
      Wire.onReceive(receiveEvent);
    ***
    }
    Функции receiveEvent и requestEvent написал. МК-слейв должен уметь принимать от мастера команды (разные, и их надо распознавать и разные действия делать в зависимости от пришедшей команды), и уметь по запросу мастера опять же, слать от себя запрашиваемые данные. тоже разные в зависимости от "командных" запросов мастера перед этим.

    И вот значит написал, компилирую, а мне выдает вот такое:
    И в общем, поковырявшись в сети, в библиотеках и по-переставляв контроллеры, выяснил для себя следующее.
    Если вот этот скетч с подключением библиотеки Wire лить в Ардуино УНО в качестве мастера и в качестве слейва (т.е. вся сеть из УНО) - то все нормально работает. А если в Digispark Attiny85, то там подключается другая Wire, и она работать умеет только в роли мастера насколько я понял. Метода begin с указанием адреса слейва у нее нет.
    Откопал библиотеку TinyWire, которая подразделяется на TinyWireM и TineWireS, для мастера и слейва соответственно. Но в slave-либе я не нахожу вообще функционала для того чтоб цеплять свои обработчики на получение команд и на запрос данных, нет ни onrequest ни onreceive ни чего-то похожего.
    Подскажите существует ли готовая библиотека с подобными функциями совместимая с Digispark.
     
  4. rkit

    rkit Гуру

    Его там и нету. Пример есть, как библиотекой пользоваться. Если нужны хуки, то напишите их сами.
     
  5. Zander

    Zander Нерд

    Уже пишу :) А так хотелось на всем готовом... эх.
    Они там к тому же крутятся из loop. Что тоже не совсем удобно.