Перейти к содержанию
    

shev377

Участник
  • Постов

    15
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о shev377

  • Звание
    Участник
    Участник
  1. Есть конечное устройство, если нужно могу выложить разработки, но думаю врятли кому интересно, ибо всё есть в сети По сути это термостат поддерживающий температуру в переносной сумке-холодильнике, питаемой от акб в кармане, от x до x, в моём примере это 5 градусов Кстати, в магазине платан заказав DS18s20 Нарвался на DS1820 несущие всякий бред, например вместо 25градусов они выдавали 4, а вместо 36, 54
  2. ну если OSCCAL это частота выставленная в компиляторе, то там 8 мгц, Просимулировал в протеусе, НЕ ЗАРАБОТАЛО! схема начала находить датчик при резисторе 10 кОм вместо 4.7 кОм, пошёл искать резистор ДАДАДАДАДАД!!! YAHOO!!!! Заработало! Моей радости нет предела, датчик не только определился микроконтроллером но и мк определил что t<100C Теперь осталось лишь написать программу для семисигментников, а исходников в сети и так дофига, не говоря уж о том что я уже многому научился, пока заставил этот датчик работать =) Но всёже вопросики ещё пока есть... как округлить число temp до целых, округление имеется в виду с соблюдением простейшей математики, а не просто с отрезанием всего что после запятой И ещё один вопрос, по той же теме, вопрос про индикацию, как разбить на разряды? те из temp получить temp1 temp2 temp3 temp4, например temp=23 temp2=2 temp3=3 ps в процессе экспериментов сгорел преобразователь 12-5v и на мк пошло 12в от автомобильного акб! мк работал как ни в чём не бывало, а вот семисегментник задымился =)
  3. прошил фузы код таже фигня, а я уж было обрадовался
  4. Изучив вышеизложенную информацию из дш я понял что мне нужно выставить CKSEL 0100 и SUT 00 (вот тут я не уверен) Как это выставить в понипроге? CKSEL3=0 галочка CKSEL2=1 пусто CKSEL1=0 галочка CKSEL0=0 галочка а с SUT подскажите, я немного не понял что это за временные задержки и что мне нужно ставить
  5. А ну наконец-то я понял почему! пойду искать нужные фузы в даташите
  6. 8мгц частота, фьюзы те, что с завода (данные из понипрога): Тактируется от своего кварца на ножке ничего кроме IO порта нет, те нет всяких мисо моси итд Уже ни знаю просто что придумать в кач-ве причины
  7. Слушайте! МЕНЯ ОСИНИЛО!!!!!! А может это индивидуальная непереносимость Mega32 16PU xxxсерии датчиков даллас??? У меня ещё мега 48 есть, только её паять страшно, какая она маленькая, может стоит попробовать?
  8. Я и с одним пробовал, по принципу devices=w1_init() и devices был всегда=0
  9. Давно не посещал эту тему, уже порядком сошёл с ума от этих датчиков, добыл 4 датчика два Ds18b20 и два Ds18s20 И НИОДИН, НИОДИН по примерам из интернета не заработал, ставил другие микроконтроллеры, пробовал с резистором 4.7 между питаниеми данными и без него. Вот например код /***************************************************** Chip type : ATmega32 Program type : Application Clock frequency : 8,000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 512 *****************************************************/ #include <mega32.h> #asm //сообщаем куда подключен датчик .equ __w1_port=0x12;PORTD .equ __w1_bit=6 #endasm #include <1wire.h> //библиотека работы с 1Wire #include <ds18b20.h> //библиотека для работы с датчиком ds18b20 #include <delay.h> //библиотека задержки #include <stdio.h> //ненаю что за библиотека, но без неё неполучается unsigned char rom_code[8][9]; //масив с адресами найденых датчиков void main(void) { unsigned char devices, i; //переменная в которой количество присоеденённых датчиков, и номер выбранного датчика int temp; //переменная для хранения температуры // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTA=0x00; DDRA=0xFF; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0xFF; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0xBF; PORTC.0=1; w1_init(); devices=w1_search(0xf0,rom_code); //ищим датчики, и записуем их адреса в масив while(devices>0) //бесконечный цикл, если датчик подключон { if(!PINC.0){ //Если нажата кнопка i++; //Увиличиваем переменную "i" на 1 delay_ms(300); //Ждём 300мс для "анти-дребезга" } if(i>=devices){ //Если "i" больше или равно найденым датчикам i=0; //тогда "i" равно нулю } temp=ds18b20_temperature(&rom_code[i][0]); //читаем температуру с выбранного датчика if (temp>1000){ //если датчик выдаёт больше 1000 temp=4096-temp; //отнимаем от данных 4096 temp=-temp; //и ставим знак "минус" } PORTD=0; PORTD.3=1; PORTB=255; PORTB.6=0; PORTB.5=0; PORTB.4=0; PORTB.2=0; PORTB.1=0; delay_ms(1); PORTD=0; PORTD.2=1; PORTB=255; PORTB.7=0; PORTB.6=0; PORTB.3=0; PORTB.2=0; PORTB.1=0; delay_ms(1); PORTD=0; PORTD.1=1; PORTB=255; PORTB.7=0; PORTB.6=0; PORTB.5=0; PORTB.3=0; PORTB.2=0; PORTB.1=0; delay_ms(1); }; while(devices==0) //бесконечный цикл, если датчик не подключон { PORTD=0; PORTD.3=1; PORTB=255; PORTB.6=0; PORTB.5=0; PORTB.3=0; PORTB.2=0; PORTB.1=0; delay_ms(1); PORTD=0; PORTD.2=1; PORTB=255; PORTB.7=0; PORTB.3=0; PORTB.4=0; PORTB.2=0; PORTB.1=0; delay_ms(1); PORTD=0; PORTD.1=1; PORTB=255; PORTB.7=0; PORTB.6=0; PORTB.5=0; PORTB.3=0; PORTB.2=0; PORTB.1=0; delay_ms(1); }; } Прокручивая его я получаю результат выполнения devices=0 тобиш НЕА нет девайсов от даласа ПОЧЕМУ!!!!!!! ставил другой мк, в плате ошибки НЕТ полярность соблюдаю, левая нога GND правая +5v.
  10. Смотря чего 250 е или р PS готовый девайс от мастеркита стоит 900 р DS1821 Поставляется в режиме цифрового термометра по типу 1820, но без личного адреса, а в режим термостата датчик переводится при первом программировании, затем вывести датчик из режима термостата практически не реально С трудом переварил эту фразу :unsure: Ваши ссылки на пдфки я посмотрел, в одной пдфке мне попалась ссылка на один сайт, там я полазил и нашёл что-то похожие на пример DS1821+пример программирования термостата, всё на си на пике. 1wire002.c в корне, очень похож на исходник функций http://www.microchipc.com/sourcecode/PIC_H..._thermostat.zip
  11. что это за AAh куда их слать, как слать Кто-нибудь возьмётся написать кусок кода за небольшое вознаграждение?
  12. Итак, как я понял, 1) Цепляю Вашу библиотеку OneWire 2) дальше копирую функцию void OW_ReceiveByte(char volatile *ow_data); и выполнив её я получу в переменной ow_data например 00000000 (при 0 градусов)?
  13. Нашёл интересный пример со своей библиотечкой, но я не понял Где определяется порт 1wire DS1821 устройства Если я не ошибаюсь там происходит сканирование Всего порта D, если это так, то как упростить до вышеупомянутых элементарных условий? 1w1821___________.rar
  14. Доброго Вам времени суток, Есть Мега32 и датчик DS1821 Где только не постил темы, где только не читал уже имеющиеся сабжи, но НИГДЕ не находил примера КАК ОСУЩЕСТВИТЬ получение температуры с датчика DS1821 на порте D6 микроконтроллера в переменную Temperature Хоть на си хоть на асме, на чём нибуть Сам пишу на си в асме 0, но если кто знает как сделать на асме, пожалуйста, ПИШИТЕ! (вставлю в #asm....#endasm) Очень надеюсь на Вашу помощь в написании прошивки для Mega32 на си для получения температуры с датчика DS1821 на порту D6 Я неоднократно в поиске на этом форуме находил сообщения вроде "УРА получилось законектить DS1821", но авторы отмалчиваются о полученном коде Сам я нашёл сайт http://pinokio3000.narod.ru/sourches/Dallas_1Wire.htm Но ничего не понял Для непосвящённых DS1821 Это не есть DS1820. У DS1821 шина 1wire поддерживается не полностью, у 21 нет адресса, ->DS1820.h не годится PS Это последний форум где я надеюсь получить ответ!
×
×
  • Создать...