Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 29.10.2007, 21:18   #1
woroba
Гражданин KAZUS.RU
 
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
woroba на пути к лучшему
По умолчанию DS18B20 в CVAVR при занятом UART.

Вопрос в следующем. Как я понял(из хелпа) функции DS18B20 в CVAVR используют аппаратную часть UARTa. Но в моей 8меге UART занят. Как избежать конфликта?
Или я что не так понял???
Реклама:
__________________
Не ошибается лишь тот, кто ни чего не делает!
woroba вне форума  
Непрочитано 29.10.2007, 21:46   #2
AndreiVV
Гражданин KAZUS.RU
 
Регистрация: 29.06.2006
Сообщений: 638
Сказал спасибо: 37
Сказали Спасибо 56 раз(а) в 41 сообщении(ях)
AndreiVV на пути к лучшему
По умолчанию

Цитата:
Или я что не так понял???
вот именно, если вы посмотрите на даташит любого мк то увидите что выводы USART-а на строго определенных выводах, как он может влиять на датчик? который может быть подключен практически к любому выводу мк, можете посмотреть в примерах там кстати тоже используется и датчик и USART
AndreiVV вне форума  
Непрочитано 29.10.2007, 23:21   #3
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию Re: DS18B20 в CVAVR при занятом UART.

Сообщение от woroba
Как я понял(из хелпа) функции DS18B20 в CVAVR используют аппаратную часть UARTa.
не правильно поняли... в cvavr протокол 1-wire реализован програмно, а не аппаратно.. а датчик можно прицепить к любому пину...
dimonbest вне форума  
Непрочитано 30.10.2007, 05:24   #4
woroba
Гражданин KAZUS.RU
 
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
woroba на пути к лучшему
По умолчанию Re: DS18B20 в CVAVR при занятом UART.

Сообщение от dimonbest
Сообщение от woroba
Как я понял(из хелпа) функции DS18B20 в CVAVR используют аппаратную часть UARTa.
не правильно поняли... в cvavr протокол 1-wire реализован програмно, а не аппаратно.. а датчик можно прицепить к любому пину...
Example:
Зачем тогда в примерах инициализируется UART???

#include ‹90s8515.h›

/* specify the port and bit used for the 1 Wire bus */

#asm

.equ __w1_port=0x18 ;PORTB

.equ __w1_bit=2

#endasm

/* include the DS18B20 functions prototypes */

#include ‹ds18b20.h›

/* include the printf function prototype */

#include ‹stdio.h›

/* quartz crystal frequency [Hz] */
#define xtal 4000000L

/* Baud rate */
#define baud 9600

/* maximum number of DS18B20 connected to the bus */

#define MAX_DEVICES 8

/* DS18B20 devices ROM code storage area,

9 bytes are used for each device

(see the w1_search function description),

but only the first 8 bytes contain the ROM code

and CRC */

unsigned char rom_codes[MAX_DEVICES][9];

/* allocate space for ROM codes of the devices

which generate an alarm */

unsigned char alarm_rom_codes[MAX_DEVICES][9];

main()

{

unsigned char i,devices;

/* initialize the UART's baud rate */
UBRR=xtal/16/baud-1;

/* initialize the UART control register
TX enabled, no interrupts, 8 data bits */
UCR=8;

/* detect how many DS18B20 devices

are connected to the bus and

store their ROM codes in the rom_codes array */

devices=w1_search(0xf0,rom_codes);

/* display the number */

printf("%-u DEVICE(S) DETECTED\n\r",devices);

/* if no devices were detected then halt */

if (devices==0) while (1); /* loop forever */

/* set the temperature alarms & temperature

measurement resolutions for all the devices

temp_low=25°C temp_high=35°C resolution 12bits */

for (i=0;i‹devices;i++)

{

printf("INITIALIZING DEVICE #%-u ",i+1);

if (ds18b20_init(&rom_codes[i][0],25,35,DS18B20_12BIT_RES))

putsf("OK"); else putsf("ERROR");

};

while (1)

{

/* measure and display the temperature(s) */

for (i=0;i‹devices

printf("t%u=%+.3f\xf8C\n\r",i+1,

ds18b20_temperature(&rom_codes[i++][0]));

/* display the number of devices which

generated an alarm */
printf("ALARM GENERATED BY %-u DEVICE(S)\n\r",
w1_search(0xec,alarm_rom_codes));
};
}


Refer to the DS18B20 data sheet for more information.
__________________
Не ошибается лишь тот, кто ни чего не делает!
woroba вне форума  
Непрочитано 30.10.2007, 10:32   #5
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
AndryG на пути к лучшему
По умолчанию

Код:
 for (i=0;i‹devices;)

printf("t%u=%+.3fxf8C

",i+1,

ds18b20_temperature(&rom_codes[i++][0]));

/* display the number of devices which

generated an alarm */
printf("ALARM GENERATED BY %-u DEVICE(S)

",
w1_search(0xec,alarm_rom_codes));
};
UART инициализируется ... ибо его использует printf -- вывод строки на стандартное устройство ввода/вывода, коим в микроконтроллере является UART.
____
P.S.
Уважайте собеседников - используйте теги для разметки поста.
AndryG вне форума  
Непрочитано 30.10.2007, 17:38   #6
mikeras
Частый гость
 
Регистрация: 12.12.2005
Сообщений: 13
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
mikeras на пути к лучшему
По умолчанию Посмотри в примерах для Proteus ( скажем 6.9 )

Примеры Dallas 1-Wire Bus Samples. Там DS18S20, но протокол 1-wire тот же. Работает на одном выводе (любом). Проверено. С подбором задержек правда пришлось пару часов потратить.
mikeras вне форума  
Непрочитано 30.10.2007, 21:39   #7
marera
Гражданин KAZUS.RU
 
Регистрация: 26.09.2005
Сообщений: 569
Сказал спасибо: 58
Сказали Спасибо 509 раз(а) в 135 сообщении(ях)
marera на пути к лучшему
По умолчанию Re: DS18B20 в CVAVR при занятом UART.

Сообщение от woroba
Вопрос в следующем. Как я понял(из хелпа) функции DS18B20 в CVAVR используют аппаратную часть UARTa. Но в моей 8меге UART занят. Как избежать конфликта?
Или я что не так понял???
В примере UART используется только для вывода результатов измерений, полученных от DSки.
Сообщение от woroba
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=2
Вот в этой части введите адрес свободного порта и свободного пина и все.
Кстати, у Вас вероятно старая версия CAVR. Потому что используя один датчик на линии, нет необходимости в #include ‹ds18b20.h›
Используйте
#include ‹1wire.h› и все работает без адресации конкретного датчика.
marera вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какие могут быть проблемы при вкл/откл UART в ATmega128? Don_Ambrosio Микроконтроллеры, АЦП, память и т.д 26 12.06.2014 13:53
DS18B20 Vrungel Микроконтроллеры, АЦП, память и т.д 77 30.06.2011 09:52
Термометр на ds18b20 Peshevbis Микроконтроллеры, АЦП, память и т.д 83 31.12.2010 20:22
Модель DS18B20 Cap63 Микроконтроллеры, АЦП, память и т.д 3 22.01.2007 21:51
Как убрать выдачу $00 по UART при включении? graham Микроконтроллеры, АЦП, память и т.д 10 27.06.2006 11:42


Часовой пояс GMT +4, время: 03:17.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot