Главная arrow Форум  
22.09.2019 г.
Главная
Проекты
Статьи
Начинающим
Архив новостей
Ссылки
Контакты
Поиск
Файлы
Форум
Карта сайта
Авторизация





Забыли пароль?
Ещё не зарегистрированы? Регистрация
Поддержи наш сайт!
Через WebMoney

 R785211844650
 Z210696637574
 E368177590409

Форум ARV Research
Добро пожаловать, Гость
Пожалуйста Вход или Регистрация.
Забыли пароль?
программная реализация OW slave (1 просматривает)
_GEN_GOTOBOTTOM Ответить

TOPIC: программная реализация OW slave

#7190
ARV (Администратор)
Администратор
Постов: 2384
graph
В ответ на: программная реализация OW slave 28.02.2012 18:16 Репутация: 175  
виноват, забыл вложить macroc.h
выкладываю обновленный архив (предыдущий архив и сообщение удалил)
в новом коде вместо macros.h применен avr_helper.h - рекомендую, с моей точки зрения там собрано кое-что полезное.
File Attachment:
File name: slave_1w.rar
File size:6195 bytes
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7211
dmimos (Пользователь)
Новичок
Постов: 7
graphgraph
В ответ на: программная реализация OW slave 29.02.2012 21:50 Репутация: 0  
нужно ли вешать прерывание на аппаратный int0?
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7213
ARV (Администратор)
Администратор
Постов: 2384
graph
В ответ на: программная реализация OW slave 29.02.2012 22:47 Репутация: 175  
что значит - нужно ли? все что нужно, в коде уже есть, добавлять или убирать без тщательнейшего анализа кода и твердой уверенности в необходимости этого НИЧЕГО НЕ НАДО.
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7235
dmimos (Пользователь)
Новичок
Постов: 7
graphgraph
В ответ на: программная реализация OW slave 04.03.2012 11:22 Репутация: 0  
Спасибо, я понял!
Что-то у меня не клеится.Создал тестовый проект.С 1820 датчиком все работает.
Пожалуйста, по возможности помогите.
P.S. Все файлы прикладываю в архиве.(В папке OW_test - протеус и CAVR проект, в папке Slave_part - слейв часть).
Спасибо!
File Attachment:
File name: Test.rar
File size:113564 bytes


Содержимое поста отредактировано: dmimos, в: 04.03.2012 11:22
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7239
ARV (Администратор)
Администратор
Постов: 2384
graph
В ответ на: программная реализация OW slave 04.03.2012 15:54 Репутация: 175  
я уже говорил, что заниматься доводкой проекта у меня пока нет времени, так что, к сожалению, ничем пока не помогу... извините
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7312
stiff (Пользователь)
Новичок
Постов: 7
graphgraph
В ответ на: программная реализация OW slave 18.03.2012 19:47 Репутация: 0  
Вопрос. А (как) можно ли переделать код, для обработки приходящих комманд в прерывании?
цель — освободить основной цикл программы для рутины.
пробую делать рутину в ISR (TIMER0_OVF_vect), но из-за этого сбиваются тайминги и мастер рапортует о неверной контрольной сумме пакета.
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#7313
ARV (Администратор)
Администратор
Постов: 2384
graph
В ответ на: программная реализация OW slave 18.03.2012 23:00 Репутация: 175  
stiff писал(а):
Вопрос. А (как) можно ли переделать код, для обработки приходящих комманд в прерывании?
цель — освободить основной цикл программы для рутины.
пробую делать рутину в ISR (TIMER0_OVF_vect), но из-за этого сбиваются тайминги и мастер рапортует о неверной контрольной сумме пакета.
не знаю, не думал об этом
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#8267
Apparatchik (Пользователь)
Специалист
Постов: 123
graphgraph
В ответ на: программная реализация OW slave 18.10.2013 20:46 Репутация: 0  
Попытался эмулировать ds18b20 в код добавил только команды конверсии и чтения памяти
Code:

  uint8_t SRAM[] = {0x500x050x000x000x7F0xFF0x0C0x10}; // 8 байт памяти slave-устройства (без CRC!!!) ... int __attribute__((OS_main)) main(void) {     sei();     while (1) {         switch (wait_command()) { // обрабатываем пользовательские команды         case 0x44:             DDR1W |= P1W;             _delay_ms(745);             DDR1W &= ~P1W;             break;         case 0xBE:             send_block(8SRAM);             break;         default:             break;         }     } }


На частоте 8мгц термометр почти не видит эмулятор (оч редко при старте эмулятора), на частоте 16мгц видит гдето 50 на 50 то покажет 85градусов то нули, замер раз в секунду. Получается он не успевает или где-то косяк? С настоящим датчиком термометр работает нормально.

P.S. Запустил этот код на STM32 на 24мгц, там вроде работает без сбоев, выходит AVR не успевает.

Содержимое поста отредактировано: Apparatchik, в: 18.10.2013 21:31
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#8802
selevo@mail.ru (Пользователь)
Новичок
Постов: 1
graphgraph
В ответ на: программная реализация OW slave 02.01.2016 20:54 Репутация: 0  
какие вести ?
кто ещё какие эмуляторы использовал?
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#8852
OldChukchi (Пользователь)
Новичок
Постов: 1
graphgraph
В ответ на: программная реализация OW slave 20.10.2016 03:30 Репутация: 1  
ARV писал(а):
выкладываю обновленный архив

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

Целью было на базе ATtiny13 (а при случае и ATtiny10) создать некий универсальный аналог 1-wire управляемого коммутатора типа DS2413, да и вообще любых подобных 1-wire-устройств.
Правда, питать по 1-wire ATtiny13, пожалуй, не получится, но зато универсальность и потенциальные возможности всё перекрывают - шесть (точнее, пять - за вычетом порта на собственно 1-wire шину) цифровых портов ввода/вывода, таймер/счетчик, два ШИМ-канала, 10-битный АЦП и т.д.
И всё это богатство теперь доступно по 1-wire, причем все такого рода устройства можно вешать на одну шину, т.е. занимать всего-то один порт Master-контроллера.

т.к. у ATtiny13 всего 1024 байта флеш-памяти, и по 64 байта RAM и EEPROM, пришлось, разумеется, максимально упростить исходный код - отказаться от подсчета контрольной суммы, чтобы сэкономить память и такты процессора, ну и вообще ужаться.

В самом первом приближении реализация собственно 1-wire интерфеса с поддержкой нескольких устройств на шине и ответом на запрос по адресу устройства (т.е. упрощаем, конечно, но без потери функциональности) занимает 768 байт флеш-памяти, и 11 байт RAM (туда для увеличения скорости обработки выгружается при старте адрес устройства), EEPROM не используется.

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

ATtiny13 синхронизировалась от внутреннего генератора на частоте 9.6 МГц без делителя на 8.
С делителем, т.е. при тактовой 1.2 МГц оно вполне предсказуемо не поднялось, слишком медленно.

В общем, всё отлично. Оно работает!
Автору еще раз огромнейший респект.


selevo@mail.ru писал(а):
какие вести ?
кто ещё какие эмуляторы использовал?


Ну вот в варианте на ATtiny13 с легкостью эмулируются DS1990 - те самые iButton-ключи.
Причем ключей в "тиньку" можно заколотить... ну, штук семь железно, и еще восемь штук в EEPROM, ну и в константы - на сколько хватит флеш-памяти от основного кода.
И вышеупомянутая DS2413 без проблем эмулируется.
Но самое главное - можно самостоятельно создавать такие 1-wire устройства, аналогов которым у Далласких Семикондакторов никогда не было, нет, и не будет!

ЗЫ. Причем та же DS2413 стоит на Али 60 руб за шт, а ATtiny13 - меньше 20... Профит!
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
_GEN_GOTOTOP Ответить
© Copyright 2007 Best of Joomla, Работает на FireBoardполучить последние сообщения прямо на Ваш рабочий стол