Аппаратное распределение задач и программное взаимодействие "камней"

__Alexander
Offline
Зарегистрирован: 24.10.2012

SU-27-16 пишет:

Один камень 326, говорили, - справится..... Но это же программно ? Моя хотела распределить ресурсы..... :(

говорили 324 или 328. ))

Распределяйте! Даже аппаратно. )

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Надо тиньки или нет - ДРУГОЙ вопрос !!!!!!!!!!!! в начале всё прояснил....

Рад буду 326-ой спарвицца -  но, сам не смогу...

Ответы leshak - скоро, по пунктам !

 

 

 

 

 

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

:( лошАра ! камень правильно назвать не могу.... :(

...скоро буду :(

__Alexander
Offline
Зарегистрирован: 24.10.2012

кстати да, у тини25/45/85 есть USI. так что, ноги можно сэкономить.

так, пошла вторая страница. ставлю,  до завершения проекта, что их будет > 10! ))

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

leshak пишет:

1. Не ясно зачем вообще этот зоопарк тинек. А отсюда и не ясно какой протокол лучше подойдет. Чем комбинация "главный<->tiny<-->датчик" лучше "главный<->датчик"? Чем больше деталей, тем ненадежней, морокливей отладка, больше акум нужен и проч.
2. Почитайте про i2c/twi вообщем-то он и задумывался как "протокол внутриплатного общения".  Но и SPI, предложенный __Alexander тоже подойдет (дальше зависит именно от того какие датчики и зачем все это).
3. Возможно смотреть на леску - и не нужно? Если есть чип акселерометра, то просто выясняем "где у нас земля". Те же коптеры замечательно умеют "выдерживать горизонт", хотя никаких веревочок у них нет. Может так проще будет? 
4. А нужно ли держать горизонт? Если мы знаем как влияет угол платформы на датчик скорости, то может просто "пересчитать" его показания? Ввести "поправку на ветер"?  К примеру "при наклоне платформы на 45 градусов, показания датчика нужно умножать на два". Тогда мы сразу избавляемся от сервы (вес) и получаем более точное реагирование (умножение в любом случае более быстрая операция чем серва успеет повернутся). А еще, угол платформы может влиять на ее "летные характеристики". Возможно "просто довернуть платформу" - будет мало. Начнутся "колебания" и т.п. И прийдется мудрить ПИД-ы и какие-то аналоги "балансируем на шаре". Вообщем если можно отказаться от "механики" в пользу "математики" - лучше это сделать.

зоопарк тинек  - ЧЁБЫ изучить ! после беседы с Вами и вами - скорее всего - отпадёт :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

__Alexander пишет:

кстати да, у тини25/45/85 есть USI. так что, ноги можно сэкономить.

так, пошла вторая страница. ставлю,  до завершения проекта, что их будет > 10! ))

 

Скока ? Ставите... Моя - > 200 ! :) Каков курс ставок ? 

leshak
Offline
Зарегистрирован: 29.09.2011

SU-27-16 пишет:

Один камень 326, говорили, - справится..... Но это же программно ? Моя хотела распределить ресурсы..... :(

Дык какие ресурсы? Ну распределите вы... но ведь на "оркестровку всего этого", на взаимодействие главного камня с ведомыми - тоже ресуры нужны. И еще не факт "на что больше нужно".

Не заходите абстрактно на задачу. Вот когда вы определитесь какие именно вам ресурсы нужны, вот тогда и будете думать "а где их взять?". То ли на одном камне, то ли на 5-ти камнях. Какого именно ресурса вам не хватает что потребовались тиньки?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

leshak пишет:

3. Возможно смотреть на леску - и не нужно? Если есть чип акселерометра, то просто выясняем "где у нас земля". Те же коптеры замечательно умеют "выдерживать горизонт", хотя никаких веревочок у них нет. Может так проще будет? 
4. А нужно ли держать горизонт? Если мы знаем как влияет угол платформы на датчик скорости, то может просто "пересчитать" его показания? Ввести "поправку на ветер"?  К примеру "при наклоне платформы на 45 градусов, показания датчика нужно умножать на два". Тогда мы сразу избавляемся от сервы (вес) и получаем более точное реагирование (умножение в любом случае более быстрая операция чем серва успеет повернутся). А еще, угол платформы может влиять на ее "летные характеристики". Возможно "просто довернуть платформу" - будет мало. Начнутся "колебания" и т.п. И прийдется мудрить ПИД-ы и какие-то аналоги "балансируем на шаре". Вообщем если можно отказаться от "механики" в пользу "математики" - лучше это сделать.

Датчик скорости ветра - компутерный вентилятор в режиме генератора... Или я тут не прав ?

Если ДА - то изучать его параметры вращения в зависимости от угла набегающего потока воздушных масс мне не под силу.... Проще ( и по заданию ) скорректировать измПлатформу фронтально набегающему потоку.... Акселерометра 1 канал и 1 серва... Схему нано ? Механическую ?

leshak
Offline
Зарегистрирован: 29.09.2011

SU-27-16 пишет:

зоопарк тинек  - ЧЁБЫ изучить ! после беседы с Вами и вами - скорее всего - отпадёт :)

Тогда откладывайте в сторону гравицапы, платформы и проч. мдень.

Начинайте учить на чем-нибудь попроще. Что-бы хотя бы объяснить "что вы хотите" можно было в двух словах.

И тиньки - тоже отложите.

Возмите две, три дуины. Кноки, светодиоды и т.п. И реализуйте на них стандартыне "зажигаем диод", "читаем кнопку" и т.п. только команды шлите из одной дуины в другую. 

Реализуйте в разных вариантах. Когда дуины обшаются по I2C, Serial, SPI, "просто выставляя пин в HIGH" и т.п.

Когда этого добъетесь - замените ведомые дуины на тиньки (тинька-то - это тоже "немного нестандарт", лучше не с нее начинать разбирательство).

И вот когда у вас уже будет понимание "во что обходится взаимодействие", какие варианты возможно и проч. - вернетесь к своему проекты. И подберете наиболее подходищй вариант.

Вообщем "вначале учим алфавит", а уже потом "пишем стихи".

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

__Alexander пишет:

кстати да, у тини25/45/85 есть USI. так что, ноги можно сэкономить.

так, пошла вторая страница. ставлю,  до завершения проекта, что их будет > 10! ))

 

Про USI - кода мона будет спрашивать ?

leshak
Offline
Зарегистрирован: 29.09.2011

SU-27-16 пишет:

Датчик скорости ветра - компутерный вентилятор в режиме генератора... Или я тут не прав ?

Откуда я могу знать какой у вас датчик? Может тогда вообще - начать с того что-бы научится датчики свои читать? А "построение кластера дуин" как-нибудь намного позже занятся?

SU-27-16 пишет:

Если ДА - то изучать его параметры вращения в зависимости от угла набегающего потока воздушных масс мне не под силу.... Проще ( и по заданию ) скорректировать измПлатформу фронтально набегающему потоку.... Акселерометра 1 канал и 1 серва... Схему нано ? Механическую ?

Проще? Ну-ну... Может повезет. А может, как я уже говорил начнутся "раскачки". 

А какие силы великие нужно что-бы "изучать параметры"?  Поставте вентилятор. Замерте что дает датчик. Наклоните его - опять замерте. Еще наклоните - опят замерте. Дальше листик в клеточку и строим график (или в эксельке). Смотрим есть ли какая-то четкая зависимость.

А как строить такую систему без "изучать параметры" (что с сервой, что без) - я вообще не представляю. Все прийдется изучать. И скорость сервы, и потребление тока, и есть ли шумы. И вес. И т.д. и т.п. И что происходит при просадке акума....

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

leshak пишет:

SU-27-16 пишет:

зоопарк тинек  - ЧЁБЫ изучить ! после беседы с Вами и вами - скорее всего - отпадёт :)

Тогда откладывайте в сторону гравицапы, платформы и проч. мдень.

Начинайте учить на чем-нибудь попроще. Что-бы хотя бы объяснить "что вы хотите" можно было в двух словах.

И тиньки - тоже отложите.

Возмите две, три дуины. Кноки, светодиоды и т.п. И реализуйте на них стандартыне "зажигаем диод", "читаем кнопку" и т.п. только команды шлите из одной дуины в другую. 

Реализуйте в разных вариантах. Когда дуины обшаются по I2C, Serial, SPI, "просто выставляя пин в HIGH" и т.п.

Когда этого добъетесь - замените ведомые дуины на тиньки (тинька-то - это тоже "немного нестандарт", лучше не с нее начинать разбирательство).

И вот когда у вас уже будет понимание "во что обходится взаимодействие", какие варианты возможно и проч. - вернетесь к своему проекты. И подберете наиболее подходищй вариант.

Вообщем "вначале учим алфавит", а уже потом "пишем стихи".

Попроще - прошёл... На 2..3 платы - денег нету..

..читать кнопки, зажигать светики  -тоже...

...оценивать - далекова-то ещё....

Моя хотела узнать возможность общения 3-ёх ведомых камней с одним главным...

Вот....

__Alexander
Offline
Зарегистрирован: 24.10.2012

это, как говорят, разговор слепого с глухим. )

давайте лучше начнем с аэродинамики. вот как вижу я себе этот зонд. гелий сам по себе инерционный газ, т.е. конструкция не может мгновенно отрабатывать порывы ветра. и теперь представляю какой должен быть ветер, чтобы этот зонд встал в 90гр. там  замеры уже нафиг не надо. т.к. оно вашу леску оборвет. а изменять +-5гр сервой, как-то не логично. логичнее самим ветром. На аэродромах направление и скорость ветра контролируют специальными ветроуказатилями, такой себе тряпичный конус. так его никакя серва не компенсирует и он себя нормально чувствует.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Моя понимает, что проще отколибровать тахометрический датчик с помощюь ручного анемометра при фронтальном набеге воздуха,  чем ещё и вычислять эту зависимость от угла наклона датчика к набегающему потоку воздуха.... Проще, кажися, ( и по задумке - стабилизировать датчик фронтально набегающему потоку воздуха....

Конкретный вопрос тогда - ArdUno и аттиня45вМинимале - как, какими средсвами организовать обмен данными ?

ArdUno - отображение, аттиня45вМинимале - датчики ( пуст 2 ! )....

Спасибо !

...ушатали напрочь ! :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

__Alexander пишет:

это, как говорят, разговор слепого с глухим. )

давайте лучше начнем с аэродинамики. вот как вижу я себе этот зонд. гелий сам по себе инерционный газ, т.е. конструкция не может мгновенно отрабатывать порывы ветра. и теперь представляю какой должен быть ветер, чтобы этот зонд встал в 90гр. там  замеры уже нафиг не надо. т.к. оно вашу леску оборвет. а изменять +-5гр сервой, как-то не логично. логичнее самим ветром. На аэродромах направление и скорость ветра контролируют специальными ветроуказатилями, такой себе тряпичный конус. так его никакя серва не компенсирует и он себя нормально чувствует.

....называецца - "колдун" :)

предельные углы не рассматриваем, но просчитываем - так пойдёт ? :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

схему подвеса - нарисовать как курица ? или Мы всё об одном и том же ?

__Alexander
Offline
Зарегистрирован: 24.10.2012

и колдун, и колбаса. какая нафиг разница. я про ее стабилизацию отностительно набегающего потока. или там тоже тини45 стоит?

кстати, а вы компьютерным кулером сможете замерить скорость допустим 1м/с ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

колдуна никто не стабилизирует ! тока взгляд пилота ! АГА ? проехали ?

про кулер  - подловил .... Моя думала от него и мерить... Не суть !

Ничё чё на ТЫ ?

leshak
Offline
Зарегистрирован: 29.09.2011

SU-27-16 пишет:

Попроще - прошёл...

Если бы прошли - небыло бы вопросов. Вы прошли "на одном камне", теперь пройдети "на двух", в разных вариациях

SU-27-16 пишет:

На 2..3 платы - денег нету..

Ну значит сделайте. Не обязательно покупать. Вообщем то же самое что вы хотели с тиньками, только купите хотя-бы ATMEGA8/ATMEG168/ATMEGA328 - с ними на старте попроще будет и по цене терпимо.

SU-27-16 пишет:

..читать кнопки, зажигать светики  -тоже...

На разных камнях?

SU-27-16 пишет:

...оценивать - далекова-то ещё....

дорога в 1000 лье начинается с первого шага

SU-27-16 пишет:

Моя хотела узнать возможность общения 3-ёх ведомых камней с одним главным...

Вот....

Ну так узнавайте. Абревеатуры для гугления вам уже дали SPI, I2C, Serial/UART и т.п. И статей и примеров - масса.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Стабилизация.... Чёбы не пересчитывать скорость потока от отклонения потока от фронтального направления....

НУ ПРИДУМАЛ Я ТАК !!!!!!! :(

Чем сильнее ветер ( а платформа-то построена по схеме ФЛЮГЕР ) - тем больше снос шарика, тем больше кобрирование платформы... Извините за уточнение....  Задирание носа платформы вверх... Для 45 гр - это уже штормовой ветер ! Какие аэростаты ! Уж и Боинги будут сидеть ! Так что - 90 гр - это теория !!!!!!

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Leshak

Мне казолсь - переход с ArdUno на другой камень заключаецца в правильной прошивке нового камня и правильной адресации пинов ( отталкиваясь от ArdUno ) ..... Нет ? Тока спаял макетку для прошивки тиньки45/85 или 328... не пробовал пока страшно... Я заблуждаюсь ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Leshak

Далеко ли Вы от Спб ? Как в личку написать - не знаю ......

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

leshak
Offline
Зарегистрирован: 29.09.2011

SU-27-16 пишет:

Leshak

Мне казолсь - переход с ArdUno на другой камень заключаецца в правильной прошивке нового камня и правильной адресации пинов ( отталкиваясь от ArdUno ) ..... Нет ? Тока спаял макетку для прошивки тиньки45/85 или 328... не пробовал пока страшно... Я заблуждаюсь ?

Всегда все заключается в "правильной прошивке и адресации". Вот только сможете сразу сделать правильно?

Вопрос не в том что "там слишком заумно", а в том что вы нагребли себе сразу кучу неизвестных.

1. Сделать самодельную ардуину
2. Запуститься на "неофициальном камне" (возможно еще и без кварца )
3. Научится читать датчик скорости
4. Научится взаимодействию камней

Вот слепите вы все это. И будет "ой... не работает..." А где искать и что - неведомо. Потому что ни в одной составляющей части у вас нет уверенности. И мест где могли ошибится - десятки. А комбинаций ошибок - ну вообще не посчитать.

И чем больше у вас проект - тем меньше шанс что кто-то поможет. Просто потому что в маленьком скетче на 10-20-ть строк, который "отыслаю три байта с одной дуины на другую" можно что-то подсказать "на бегу", а вот вникать в "мега-пупер-проект" - уже желающих намного меньше.

Нет, хотите сразу "прыгнуть на глубину" - прыгайте. Ваше дело. Но я бы, все-таки, начал с официального камня. Где уже и фьюзы,  бутлоадеры и пин-маппинги - все есть "из коробки". Пусть оно заработает, а там уже можно и на "условно совместимые камни" смотреть.

Да и вообще, зачем туда смотреть если датчик скорости у вас не работает? Добейтесь вывод показания воздушного потока в обыкновенный Serial. Начните с малого. На обычной дуине. Сделайте "минимальный прототип" и потом малыми шагами двигайте его в сторону наполеоновских планов.

А то сейчас у вас:

Цитата:

Драмкружок, кружок по фото,
Хоркружок - мне петь охота,
За кружок по рисованью
Тоже все голосовали.

P.S. Кстати вникать в ветку на +200 постов, тоже не очень интерестно. И когда одна мысль "размазанна" на 10-ть постов в три строки. И когда они валятся в режиме online чата  - хочется просто отписатся от этой ветки да и все.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Механика:

- вертикальный красный - компенсатор вращения

- верх - через подшипник ( зелёный ) к шарику с гелеем

 низ - через подшипник ( зелёный ) к леске на землю

- чёрным ( ФЛЮГЕР )  - платформа с датчиками гироскопа, азимута, скорости ветра

- синим - система СЕРВА-РЫЧАГ - стабилизация ТАНГАЖ - т.е. - горизонт

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

leshak пишет:

SU-27-16 пишет:

Leshak

Мне казолсь - переход с ArdUno на другой камень заключаецца в правильной прошивке нового камня и правильной адресации пинов ( отталкиваясь от ArdUno ) ..... Нет ? Тока спаял макетку для прошивки тиньки45/85 или 328... не пробовал пока страшно... Я заблуждаюсь ?

Всегда все заключается в "правильной прошивке и адресации". Вот только сможете сразу сделать правильно?

Вопрос не в том что "там слишком заумно", а в том что вы нагребли себе сразу кучу неизвестных.

1. Сделать самодельную ардуину
2. Запуститься на "неофициальном камне" (возможно еще и без кварца )
3. Научится читать датчик скорости
4. Научится взаимодействию камней

Вот слепите вы все это. И будет "ой... не работает..." А где искать и что - неведомо. Потому что ни в одной составляющей части у вас нет уверенности. И мест где могли ошибится - десятки. А комбинаций ошибок - ну вообще не посчитать.

И чем больше у вас проект - тем меньше шанс что кто-то поможет. Просто потому что в маленьком скетче на 10-20-ть строк, который "отыслаю три байта с одной дуины на другую" можно что-то подсказать "на бегу", а вот вникать в "мега-пупер-проект" - уже желающих намного меньше.

Нет, хотите сразу "прыгнуть на глубину" - прыгайте. Ваше дело. Но я бы, все-таки, начал с официального камня. Где уже и фьюзы,  бутлоадеры и пин-маппинги - все есть "из коробки". Пусть оно заработает, а там уже можно и на "условно совместимые камни" смотреть.

Да и вообще, зачем туда смотреть если датчик скорости у вас не работает? Добейтесь вывод показания воздушного потока в обыкновенный Serial. Начните с малого. На обычной дуине. Сделайте "минимальный прототип" и потом малыми шагами двигайте его в сторону наполеоновских планов.

А то сейчас у вас:

Цитата:

Драмкружок, кружок по фото,
Хоркружок - мне петь охота,
За кружок по рисованью
Тоже все голосовали.

P.S. Кстати вникать в ветку на +200 постов, тоже не очень интерестно. И когда одна мысль "размазанна" на 10-ть постов в три строки. И когда они валятся в режиме online чата  - хочется просто отписатся от этой ветки да и все.

Моя её сделала ! Вы помогли...

Запустился... С кварцем... И - без....

Датчик скорости воздуха.... подрезали крылья мине.... думал от кулера вентилятор юзать.... Вот и буду юзать !

Взаимодействие камней - мля ! я же с этого и начал !!!!!!! водолей, однако......

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Драмкружок - умею уже по фото,

Хоркружок - моя не умеет петь ( умею пить и говорить ),

За кружок по рисованью

Никто голосовал. ( в стиле англ.)

За ArduinoUno - 7 челов за спиной,

её уже от миня полюбивших..

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

__Alexander

по этой схеме - вектор ветра ( в горплоскости ) всегда будет соответствовать вектору "измеряемому датчиком".... Это КОЛДУН по азимуту ветра.... Измеряем компасом-датчиком

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

чёта со шрифтом - прошу извинения....

axill
Offline
Зарегистрирован: 05.09.2011

блин... ну вы тут и развлекаетесь)))

почиатл начало задачи где есть конструктив

согласен с __Alexander - одна какая-нибудь atmega328/32 или ардуино uno с этой задачей справится

а данные (раз у нас зонд возвращается на землю) надо тупо записать на SD карту в формате CVS - потом на компе затянуть в эксель и вуаля

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

axill пишет:

согласен с __Alexander - одна какая-нибудь atmega328/32 или ардуино uno с этой задачей справится

а данные (раз у нас зонд возвращается на землю) надо тупо записать на SD карту в формате CVS - потом на компе затянуть в эксель и вуаля

Да, наверное, справится с общей задачей для устройства... Только моя задача - обучение-исследование пока. Вот она - один модуль считает скорость ветра, второй - направление ветра, третий - высота/давление/температура, основной - сбор и сохранение данных от трёх модулей, при возврате - вывод дынных на подключаемый дисплей. Запись пока - в массив ( 0..10..20..30..40..50.......280..290..300 м - 30 наборов H, A, V, T ). Запись на mkSD - потом. 

Три модуля - это Аттини45, основной - Атмега328.

Обмен по SPI 45 и 328 - пока вопросов нет. 45-скорость и UNO-основной ( пока она ) - уже изучил, опробовал.

С I2C - возникли вопросы :)

- как программно узнать адрес ведомого, если нет никаких данных или ведомый - самопальное устройство ?

- при соединении 328-ведущий-45-ведомый - как 45 назначить адрес, где прописать ?

Спасибо :)

axill
Offline
Зарегистрирован: 05.09.2011

так и соедините их все по SPI, назначьте основной мастером, пусть 3 линии будут соеденены для SPI (MOSI, MISO, SCK) и еще от мастера по одной линии CS (chip select) должно идти к каждому ведомому

у ведомых назначьте прерывание на линию которая определена как CS. - как только на ней 1 конфигурируете портый в slave SPI и ждете данных от главного. По окончании обмена, когда CS гасится на ноль надо все порты переконфигурировать на чтение и записать в эти порты нули (отключить подтяжку)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

leshak пишет:

Вот слепите вы все это. И будет "ой... не работает..." А где искать и что - неведомо. Потому что ни в одной составляющей части у вас нет уверенности. И мест где могли ошибится - десятки. А комбинаций ошибок - ну вообще не посчитать.

И чем больше у вас проект - тем меньше шанс что кто-то поможет. Просто потому что в маленьком скетче на 10-20-ть строк, который "отыслаю три байта с одной дуины на другую" можно что-то подсказать "на бегу", а вот вникать в "мега-пупер-проект" - уже желающих намного меньше.

Да и вообще, зачем туда смотреть если датчик скорости у вас не работает? Добейтесь вывод показания воздушного потока в обыкновенный Serial. Начните с малого. На обычной дуине. Сделайте "минимальный прототип" и потом малыми шагами двигайте его в сторону наполеоновских планов.

Вот и хочется каждый модуль отдельно дожать.. Чтобы - "отсылаю три байта с одной дуины на другую" можно что-то подсказать "на бегу" - ! Так и задумывал, но.... зачем-то обрисовал весь "проект" :( Сбил всех только с толку...

Конешшшно - по шажочкам ! 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

#82 я уже почти прошёл :) , спасибо !

45 и UNO - мне нужен обмен - байт туда, байт сюда. В UNO - скорость, в 45 - включить/выключить излучающий диод в оптопаре ( для энергосбережения ).

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
//===   MASTER   ===

//#define MOSI 11
//#define MISO 12
//#define SCK  13

#define ssWindV 10
#define Select45WindV PORTB &= ~( 1 << ssWindV )
#define NoSelect45WindV PORTB |= ( 1 << ssWindV )

#define ssWindA 9
#define Select45WindA PORTB &= ~( 1 << ssWindA )
#define NoSelect45WindA PORTB |= ( 1 << ssWindA )

#define ssWindH 8
#define Select45WindH PORTB &= ~( 1 << ssWindH )
#define NoSelect45WindH PORTB |= ( 1 << ssWindH )

byte SendByte328 = 1;
byte RecByte328 = 0;

void setup()
{
  Serial.begin( 9600 );
  DDRB = ( 1 << MOSI) | ( 1 << SCK) | ( 1 << ssWindV ) | ( 0 << MISO ) ;   // режим выводов - MOSI, SCL, SS - выход, MISO - вход
  PORTB |= ( 1 << ssWindV );   // ssWindV устанавливаем в HIGH
  SPCR = ( 1 << SPE ) | ( 1 << MSTR );   // SPI-on, Master, режим-0, LSB
}

byte SendRecFunction( byte Value )
{
  SPDR = SendByte328;
  Select45WindV;
  while( !( SPSR & ( 1 << SPIF ) ) )      //  while( !( SPSR & ( 1 << SPIF ) ) ) {  };
  RecByte328 = SPDR;
  NoSelect45WindV; 
  return SPDR;
}

void loop()
{
  RecByte328 = SendRecFunction( SendByte328 );
      Serial.print( "  Peredano - BLINK = " );   Serial.println( SendByte328 );
      Serial.print( "  Polucheno  -   N = " );   Serial.println( RecByte328 );
      Serial.print( "  Waiting 11 Sec... and watching ATtiny45WindV !!!   >>>>>   " );
      for ( byte M = 0; M < 11; M++ )
        {
          Serial.print( M );   Serial.print( "  " );
          delay( 1000 );
        }
      Serial.println();   Serial.println();   Serial.println();
  SendByte328++;
  if ( SendByte328 == 6 )
    {
      SendByte328 = 1;
    }
}

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Пока вот так - Тинька45 мигает указанное ей кол-во раз... 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Возникли вопросы по Си....

строка 34 - в разных источниках встретил такие варианты :

while( !( SPSR & ( 1 << SPIF ) ) )

while( !( SPSR & ( 1 << SPIF ) ) ) {  }

while( !( SPSR & ( 1 << SPIF ) ) ) {  };

..... а как правильно по правилам языка ?

И ещё - в строках 7, 8, 9 - наопределял #define-ов. Возможно ли при таком определении сделать функцию из строки 30 ( её вызов  - в строке 42 ) универсальной, адресной ? Чтобы её вызов с фактическими параметрами выглядел бы как

RecByte328 = SendRecFunction( Select45WindV , NoSelect45WindV , SendByte328 );  ?  и тогда возможно будет

RecByte328 = SendRecFunction( Select45WindA , NoSelect45WindA , SendByte328 );

RecByte328 = SendRecFunction( Select45WindH , NoSelect45WindH , SendByte328 );

Или для каждой ведомой Тиньки придётся объявить по функции, как в строках 30..38?

RecByte328 = SendRecFunctionV( SendByte328 );

RecByte328 = SendRecFunctionA( SendByte328 );

RecByte328 = SendRecFunctionH( SendByte328 );

Спасибо :)

alexnik100
Offline
Зарегистрирован: 21.12.2015

Добрый день!

Заинтересовала реализация этой системы.

Что это за датчик аттини45 ?

Что это за входы 1st, 2st и 3st ?