Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22 Сообщений: 2401 Откуда: Россия, Волгоград
Рейтинг сообщения:0 Медали: 1
Во-первых писать надо не в RAM а в EEPROM, иначе при сбросе/выключении вы потеряяте все данные, для расширения памяти рекомендую использовать I2C мелкосхемы памяти типа 24Lxxx
_________________ Чем дальше, тем больше становлюсь занудой...
При обнаружении устройства контроллер должен прописать ROM-код в RAM. А у Mega16 его как известно 1000 байт.
А что - мега16, в отличие от остальных мег, с внешней памятью работать не может? Странные ребята, эти атмеловцы, непоследовательные какие-то... Впрочем, внешняя память и не понадобится, я полагаю, так как с практической точки зрения, монтировать, обслуживать будет проще небольшие кусты от 16 до 64 датчиков, расположенные на небольшом расстоянии от контроллера.
Vov123 писал(а):
ROM-код у DS18B20 составляет 8 байт.
1 байт - это CRC, его хранить не нужно, еще 1 байт - код семейства, его тоже хранить незачем, так как, по условиям задачи, подключаться будут датчики одного семейства, а может даже одного типа. Это я говорю автору вопроса на заметку - чтобы учел, что тут можно сэкономить.
Кстати, длина кода одинакова у всех 1-wire устройств, если мне память ни с кем не изменяет, ссылаться на DS18B20 необязательно.
Заголовок сообщения: Сколько DS18B20 может обслужить Atmega16
Добавлено: Чт апр 02, 2009 11:04:32
Прорезались зубы
Зарегистрирован: Пн мар 30, 2009 15:58:32 Сообщений: 231 Откуда: Украина Запорожье
Рейтинг сообщения:0
Вы правы тигра я уже обдумывал оптимизацию. Читал их номера CRC и код семейства я откинул Это так Остальных заполненных байт у меня оказалось 4. Остальные ноль. Нафик их хранить Кстати что означает в вашей последней фразе "ссылаться на DS18B20 необязательно." И еще вы мне рекомендовали дополнять посты Убей не вижу возможности Я на форумах недавно
я уже обдумывал оптимизацию. ... заполненных байт у меня оказалось 4. Остальные ноль. Нафик их хранить
А есть гарантия, что в будущих экземплярах два старших байта тоже будут нулевыми? Если есть договоренность с Далласом, то тогда канешна...
lkote68 писал(а):
Кстати что означает в вашей последней фразе "ссылаться на DS18B20 необязательно."
Просто, Vov123 так высказался, что у кого-нибудь могло сложиться мнение, будто длина ROM-кода равна 8 байтам именно у DS18B20, я поправил его, на всякий случай.
lkote68 писал(а):
... рекомендовали дополнять посты Убей не вижу возможности Я на форумах недавно
Заголовок сообщения: Сколько DS18B20 может обслужить Atmega16
Добавлено: Пн апр 13, 2009 17:08:57
Прорезались зубы
Зарегистрирован: Пн мар 30, 2009 15:58:32 Сообщений: 231 Откуда: Украина Запорожье
Рейтинг сообщения:0
Уважаемые Коты. Благодаря Вашему тыканию меня носом в нужные источники моя прога заработала и теперь я в сети вижу 10датчиков. Все вроде тип топ. Но есть еще два вопроса меня беспокоящие. Вопрос 1. Если моя сеть будет ну довольно протяженная ну скажем метров 50. Не надо ли как нибудь саму сеть гальванически отвязывать от контроллера.
Вопрос 2. Хотелось бы все таки разнести датчики по ветвям. Генератор кода CodeVisionа устанавливает константу номер порта куда подвешена сеть .equ __w1_bit=6 Если бы писать на асме можно бы было расписать опрос на все 8 ног порта. Кто знает как можно пререопределить по ходу работы программы значение константы __w1_bit=6. Есть правда еще один выход ключи ветвления сети DS2405 и др но у меня их нет и с ними я еще не працювал и купить попробовать не могу так как в наличии их нет на самой нашей продвинутой фирме. И могут примезти под заказ только партию.
Вопрос 1. Если моя сеть будет ну довольно протяженная ну скажем метров 50. Не надо ли как нибудь саму сеть гальванически отвязывать от контроллера.
Если я правильно помню, в стандарте определена макс. емкость линии - вот от нее и плясать. И еще, если опять-таки мне память ни с кем не изменяет, была там речь о дополнительной подтяжке к питанию, если линия длинная.
lkote68 писал(а):
Вопрос 2. Хотелось бы все таки разнести датчики по ветвям. Кто знает как можно пререопределить по ходу работы программы значение константы __w1_bit=6.
Я бы посоветовал модифицировать библиотеку, добавив в нее дополнительным параметром номер пина, в который "дуть" (если совсем туго будет, можно и порт на ходу менять, но это уж немного сложнее, по-моему, хотя и не бином Ньютона).
Заголовок сообщения: Сколько DS18B20 может обслужить Atmega16
Добавлено: Пн апр 13, 2009 20:10:30
Прорезались зубы
Зарегистрирован: Пн мар 30, 2009 15:58:32 Сообщений: 231 Откуда: Украина Запорожье
Рейтинг сообщения:0
Линия Тигра у меня подтянута 4.7k Датчики планирую запитать и табличку с номиналами в зависимости от длины я у Далласа видел. Цель преследую слегка другую чтобы сеть можно было сегментировать скажем датчиков по 15. Если отвалится сегмент то небольшой. Я же по этому про DS2405 сказал. А насчет развязки спросил а кто знает что там будет вдруг разряд какой или всунет кто то в сеть А вот насчет библиотеки и смены порта не могли бы Вы неразумного на путь истинный направить. Библиотека она на то что бы ею пользоваться а вот как ее мона редактить это уже высший пилотаж.
Ну, вовсе необязательно редактировать саму библиотеку, да и не нужно это делать - я говорил о том, чтобы взять из неё текст всех 1-w функций, перенести его в свой программный модуль и уже там модифицировать. Ты каким компилятором пользуешься? Я что-то не нашел указания на это в теме.
Кстати, если разветвление сети нужно только для исключения обрыва большого сегмента, то я думаю, что вполне можно и без DS2405 обойтись - он ведь только затем и нужен, чтобы отключать неиспользуемые сегменты, а тебе это не нужно, так как у тебя на одном м/к будет немного датчиков. Я бы не дергался вовсе - повесил бы несколько шлейфов на одну ногу и использовал бы библиотечные функции - двух заяйцев, одним выстрелом!
Заголовок сообщения: Сколько DS18B20 может обслужить Atmega16
Добавлено: Вт апр 14, 2009 07:30:32
Прорезались зубы
Зарегистрирован: Пн мар 30, 2009 15:58:32 Сообщений: 231 Откуда: Украина Запорожье
Рейтинг сообщения:0
Yellow Tiger писал(а):
Ну, вовсе необязательно редактировать саму библиотеку, да и не нужно это делать - я говорил о том, чтобы взять из неё текст всех 1-w функций, перенести его в свой программный модуль и уже там модифицировать. Ты каким компилятором пользуешься? Я что-то не нашел указания на это в теме.
Пользуюсь CodeVision по моему для быстрого старта самэ той.
Асма я для Аtmel не знаю. А С перенес с программирования для ПК. И насколько понимаю библиотека это практически бинарник. Компилятор оттуда надергивает функций которые в хэдерах. Поэтому как оттуда можна надергать функций вопрос.
Ну а насчет на одну ногу я бы и вешал. Работодатель грит а ведь можно на разные чтоб у нас если замкнуло мы особо не кипишевали. Я грю мона только сложнее и дольше будет.(на асме на много его еще изучить)
насколько понимаю библиотека это практически бинарник. ... Поэтому как оттуда можна надергать функций вопрос.
Не, там все гораздо интересней. Во-первых, библиотеки лежат в виде сишных текстов в каталоге "...\CVAVR\lib", но это не все - перед компиляцией CvAvr генерит один сишный исходник ({имя_проекта}__.c), в котором объединяет все Си-исходники, входящие в проект, вот оттуда можно взять все библиотечные модули никуда далеко не отходя. Наконец, самое смешное, что некоторые функции хранятся в исполняемом модуле cvavr.exe (например, w1_init(), w1_read(), w1_write() и некоторые другие), я не знаю, нафига сделан такой странный ход, но и эти функции все же можно получить - из asm-листинга проекта (низовые написаны на asm'е).
lkote68 писал(а):
Ну а насчет на одну ногу я бы и вешал. Работодатель грит а ведь можно на разные чтоб у нас если замкнуло мы особо не кипишевали.
Я бы посчитал, что дешевле - на каждый кластер (сколько они согласны включать в один сегмент) датчиков вешать одну тиньку (один бакс всего), но не тратиться на написание лишнего кода и не закладывать будущие грабли, либо сэкономить на самом дешевом (на тиньках) ценой дополнительного кодирования и дополнительных граблей, которые еще больше увеличат и сроки и стоимость, а потом предложил бы заказчику выбирать из этих двух сумм. В конце концов, если им очень хочется оплатить твое обучение ассемблеру, то пуркуа бы и не па?
Кстати, поскольку тайминги обмена по 1-wire сети довольно жестко оговорены, может статься, что параллельная обработка нескольких сетей одним м/к окажется этому м/к не под силу... Не подсчитывал - просто догадка, которую необходимо проверить.
Заголовок сообщения: Сколько DS18B20 может обслужить Atmega16
Добавлено: Вт апр 14, 2009 10:08:28
Прорезались зубы
Зарегистрирован: Пн мар 30, 2009 15:58:32 Сообщений: 231 Откуда: Украина Запорожье
Рейтинг сообщения:0
О это интересно. Посмотрел. Мне и в голову не пришло либы глядеть. Нашел асмовский файл. А вот __.с у меня нет. Кстати Тигра не подскажешь на твой взляд толковый мануал по таким Сям (отличается)и Асму для атмела.
Преимущество малого формата - можно хранить либы в исходниках.
lkote68 писал(а):
Нашел асмовский файл. А вот __.с у меня нет.
Хм, первый такой случай. Наверное, я что-то о CvAvr упустил. Или ты не туда смотришь.
lkote68 писал(а):
не подскажешь на твой взляд толковый мануал по таким Сям (отличается)и Асму для атмела.
Хм... это ж надо знать, чего те в мануале нужно, а я твоих требований не представляю. Так, навскидку:
- хэлп от CvAvr'а - обязательно. Причем, я его поначалу в текст сконвертил и читал в редакторе с использованием поиска, отрабатывая все кросс-ссылки прямо по мере их прочтения - для первого раза, процедура очень полезная, хотя башню может снести за один вечер. Зато потом читается значительно эффективнее.
- апнота от Атмела "Эффективное программирование на С для м/к AVR" (AVR035: Efficient C Coding for AVR), - неплохое дополнение, хотя, в самом начале может оказаться невовремя, смотря, что за "начало".
- есть еще цельнотянутые книжки, типа Шпаковской "прогр-е для м/к Pic и AVR" и еще каких-то, но их ценность, на мой взгляд, такова, что я бы рекомендовал их читать только в том случае, если ничего другого нет.
По асму я читал только родную доку, но я на нем много и не пишу.
Заголовок сообщения: Сколько DS18B20 может обслужить Atmega16
Добавлено: Пт май 15, 2009 10:52:55
Прорезались зубы
Зарегистрирован: Пн мар 30, 2009 15:58:32 Сообщений: 231 Откуда: Украина Запорожье
Рейтинг сообщения:0
Уважаемые Коты. Кому интересно запитать свои датчики паразитно. Все заработало с параметрами как в даташите.
Это возможно решит проблему тех из котов которые жалуются на нагрев датчиков.
В библиотеке ds18b20.lib есть функция
После подключить как в схеме приложения. Ну естественно номер порта выбирайте сами.
Осталась последняя проблема переработать функи чтоб разнести датчики по ногам порта. Мы не сдаемся YellowTiger
Я тебе здесь набросок развязки 1-wire шины выкладывал, а ты не ответил; я решил, что тебе это больше не нужно, а теперь вижу - ты продолжаешь копать (но - без развязки ).
Заголовок сообщения: Сколько DS18B20 может обслужить Atmega16
Добавлено: Пт май 15, 2009 19:47:09
Прорезались зубы
Зарегистрирован: Пн мар 30, 2009 15:58:32 Сообщений: 231 Откуда: Украина Запорожье
Рейтинг сообщения:0
Привет тигра. Конечно продолжаю, самому интересно довести до ума и разобраться. Я же лет много '8' паяльник не брал в руки. Вот еще думаю упростить этот соствной транзистор. Ты конечно выкусил набросок. А я не сохранил думал тут он и полежит. Просто ем слона по кускам, до ушей надрезать не охота И развязку как нибудь реализую. Сегодня позакаментил функи посмотрел на init read write...
В принципе реализуемо распаралеливание.
Да я просто решил, что тебе уже не интересно, так как ты долго молчал. Нет ничего сложного в том, чтобы повторить тот пост, раз он-таки еще интересен. Вот только перерисовывать влом, так что на ляпы не смотри, торопился я. Итак: Пн Май 04, 2009 21:17:04 я написал:
Цитата:
Мысль относительно развязки 1-wire вертелась приблизительно такая: Обычных обозначений здесь нет, потому поясню - в начале и в конце - м/к, на концах двух подтянутых пуллапами (PU1, PU2) линий - оптопары, между оптопарами и м/к - буферы с третьим состоянием. В данном варианте состояние обоих концевых буферов управляется только ведущим контроллером (тем, что слева), но при необходимости можно второму м/к (там может быть и 1-w датчик) разрешить рулить своим звеном. По-моему, это ничего не даст, но как вариант держать в уме надо - вдруг в этом решении есть что-то полезное? За фазировкой нулей/единиц не следил (это уже дело техники) - время экономлю, извини. Хотя, похоже, что всего и делов-то - добавить пуллапы и ко вторым оптронам, как они добавлены к первым. Сомнение вызывает способность оптронов передавать частотки, необходимые для 1-wire, там счет на мегагерцы. Может быть, шинные формирователи спасут.
Вот такой вот эскиз.
P.S. В спешке ошибся в направлении передачи оптронов нижней линии - там стрелки справа-налево!
Последний раз редактировалось Yellow Tiger Ср июн 03, 2009 21:12:57, всего редактировалось 1 раз.
Заголовок сообщения: Сколько DS18B20 может обслужить Atmega16
Добавлено: Ср май 20, 2009 15:56:50
Прорезались зубы
Зарегистрирован: Пн мар 30, 2009 15:58:32 Сообщений: 231 Откуда: Украина Запорожье
Рейтинг сообщения:0
Всем привет. ТигроКотик Ау. Я тута распаралелил на 5,6 вывод тенденция понятна. Паралелил так. Создал глобальную переменную которая будет содержать номер пина. И изменил 3 функи в асемблере
__w1_write_bit1:
ldi r16,5 cpse r13,r16 jmp _write_bit1_6 __DELAY_USB 0x64
cbi __w1_port-1,__w1_bit_5 __DELAY_USB 0x7
set
ret
_write_bit1_6: __DELAY_USB 0x64
cbi __w1_port-1,__w1_bit_6 __DELAY_USB 0x7
set
ret
И не поверишь даже работает Ну правда пока только search но думаю
все остальные тоже будут. Тока сварил сразу ж кричу Вот мне не хватает твоих знаний
1. как это красиво упаковать
2. Были версии моих изменений тоже вроде нормальные но вот CodeVision по моим подозрениям писал в чип старую версию из буфера. А сейчас грит буфер пуст давайте зальем туда новую и все ж поехало. Вот только я не уследил как его заставить буфер очищать.[/b]
Последний раз редактировалось lkote68 Чт май 21, 2009 10:14:39, всего редактировалось 3 раз(а).
Заголовок сообщения: Сколько DS18B20 может обслужить Atmega16
Добавлено: Чт май 21, 2009 06:09:00
Прорезались зубы
Зарегистрирован: Пн мар 30, 2009 15:58:32 Сообщений: 231 Откуда: Украина Запорожье
Рейтинг сообщения:0
Насчет упаковать. Я сейчас делаю как. Задаю номер пина в глобальную преременную и вызываю стандартную функции
w1_search().....
Компилю и лезу а асм файл Потом заменяю те функи в асм файле на мои с теми же именами, асемблю прошиваю и готово. Но хотелось бы без таких заверченных телодвижений. Чтобы записать их а они подставлялись сами.
Кстати проверил работает и ds18b20_temperature(unsigned char *addr)
Сегодня купят мне разъемчики чтоб ДСок насовать и ключи Соберу сообщу.
Во вложении полный текст функции.
Внимание кто скачал функа была с ошибкой Эта проверена и работает. Работать будет если глобальная переменная хранится в R5. Иначе пока не придумал Если у кого есть мысли высказывайте. Функции конечно переделаны не оптимально просто не особо времени в алгоритмах разбираться Просто куски накопированы и кое что поменяно.
В результате сеть будет разбита на 8 кустов.
Вложения:
Комментарий к файлу: более поздняя версия тоже все на асме не смотрите на расширение. Проверено в полевых условиях :-)) zaplatka.c [9.54 KiB]
Скачиваний: 255
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения