Помогите совместить АЦП и 1-wire в ATMEGA
Помогите совместить АЦП и 1-wire в ATMEGA
Хочу сделать что-то типа метеостанции, что бы измерять давление, влажность и две температуры.
Написал програмку, но по ней у меня нормально измеряется или давление и влажность, или температуры,
а вместе показания не устойчивые. Подозреваю, что это как-то связано с прерываниями, но сообразить не могу.
Не хватает знаний. Может, кто-то посмотрит код и подскажет, как нужно правильно сделать?
Программа в CodeVisionAVR для ATMEGA8.
Исходный код в файле.
Написал програмку, но по ней у меня нормально измеряется или давление и влажность, или температуры,
а вместе показания не устойчивые. Подозреваю, что это как-то связано с прерываниями, но сообразить не могу.
Не хватает знаний. Может, кто-то посмотрит код и подскажет, как нужно правильно сделать?
Программа в CodeVisionAVR для ATMEGA8.
Исходный код в файле.
- Вложения
-
- meteo.rar
- (2.18 КБ) 247 скачиваний
- Реклама
-
borys
- Держит паяльник хвостом
- Сообщения: 927
- Зарегистрирован: Вт сен 07, 2010 19:27:48
- Откуда: Ташкент
Re: Помогите совместить АЦП и 1-wire в ATMEGA
В РАДИО примерно в 2007-2008 году было описание метеостанции (на Меге16). Там есть ис-
ходники на CodeVision.
ходники на CodeVision.
Re: Помогите совместить АЦП и 1-wire в ATMEGA
Там сильно "круто", мне в них не разобраться, надо что-нибудь попроще с указанными мною функциями. В интернете такого я не нашел.borys писал(а):В РАДИО примерно в 2007-2008 году было описание метеостанции (на Меге16). Там есть ис-
ходники на CodeVision.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Помогите совместить АЦП и 1-wire в ATMEGA
1-wire протокол четко ограничен по времянке. Если в момент обмена втиснется прерывание, то хана и каюк. Вы на время работы с 1-wire отключите прерывания:
Код: Выделить всё
#asm("cli");
снимаем температуру;
#asm("sei");Docendo discimus
Re: Помогите совместить АЦП и 1-wire в ATMEGA
То же самое. Мне кажется, что ошибка при выводе на индикаторы, но где?pyzhman писал(а):1-wire протокол четко ограничен по времянке. Если в момент обмена втиснется прерывание, то хана и каюк. Вы на время работы с 1-wire отключите прерывания:Код: Выделить всё
#asm("cli"); снимаем температуру; #asm("sei");
- Реклама
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Помогите совместить АЦП и 1-wire в ATMEGA
объясните мне, для чего вы впихнули измерение чего-то там и вывод на дисплей в обработчик прерывания таймера?! какой в этом смысл?! для чего вообще прерывания в вашем проекте?
хоть вы и не описали подробно, в чем именно проявляется ваша "неустойчивость показаний", но предположу, что на экране иной раз вывод температуры, например, или там давления вдруг оказывается не в том месте, где положено, или в середине одного текста оказывается другой и т.п. странные эффекты. так?
хоть вы и не описали подробно, в чем именно проявляется ваша "неустойчивость показаний", но предположу, что на экране иной раз вывод температуры, например, или там давления вдруг оказывается не в том месте, где положено, или в середине одного текста оказывается другой и т.п. странные эффекты. так?
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: Помогите совместить АЦП и 1-wire в ATMEGA
akulov в к твоей теме поключилось уже два сильнейших экстрасенса. и то не могут сразу определить че ты там хочеш...
Да приложи ты проект полностью , мне например тоже влом создать твою схему в протеусе чтобы понять что не так, а табе там всего навсего нужно собрать весь вывод информации на ЖКИ в одно место в непрерывный цикл....
Да приложи ты проект полностью , мне например тоже влом создать твою схему в протеусе чтобы понять что не так, а табе там всего навсего нужно собрать весь вывод информации на ЖКИ в одно место в непрерывный цикл....
Re: Помогите совместить АЦП и 1-wire в ATMEGA
Попробую переписать проект без прерываний. Неустойчивость показаний в том, что показания или температуры, или влажности (давления) пропадают или выводятся не полностью, пропадают, но не перемещаются.Мастер Ломастер писал(а):объясните мне, для чего вы впихнули измерение чего-то там и вывод на дисплей в обработчик прерывания таймера?! какой в этом смысл?! для чего вообще прерывания в вашем проекте?
хоть вы и не описали подробно, в чем именно проявляется ваша "неустойчивость показаний", но предположу, что на экране иной раз вывод температуры, например, или там давления вдруг оказывается не в том месте, где положено, или в середине одного текста оказывается другой и т.п. странные эффекты. так?
Выложил полный проект.
- Вложения
-
- meteo.rar
- (26.43 КБ) 186 скачиваний
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Помогите совместить АЦП и 1-wire в ATMEGA
как у большинства начинающих, у вас нет четкого представления алгоритма работы вашего устройства, потому что программу вы пишите "на лету" или "сходу" - как пришла на ум мысля, так и написали. частенько в ответ на просьбу рассказать, что же делает его программа, начинающий говорит что-то типа "ну, я запускаю АЦП в таком-то режиме, ставя такие-то биты в таких-то регистрах, а потом результат его вывожу на дисплей". налицо смешение в кучу низкоуровневых действий (режим АЦП и работа с ним) и высокоуровневых (вывод на дисплей). как известно, если все перемешано - это каша, соответственно и программа будет в виде каши, ни понять, ни найти ошибки - ничего хорошего.
так не пойдет: МК это не мозг человека, сопоставить логическую последовательность с реальностью он не может, он может тупейшим образом исполнять ваши команды. чтобы результат его деятельности совпал с желаемым вами, вам придется думать за него - много и тщательно.
я советую делать это по принципу "от общего к деталям". итак, вы хотите, чтобы ваш девайс измерял температуру, давление и скорость ветра (предположим). будем сразу считать, что он это уже делает при помощи функций
measure_temp();
measure_pressure();
measure_wind();
измеренные значения он должен выводить на LCD. снова считаем, что он уже умеет это делать, естественно, при помощи функции
lcd_output(temp, press, wind);
как видите, названия функций и параметров для них я сразу делаю "говорящими сами за себя" - так проще все понимать.
итак, измеряет и выводит - это все? скорее всего, нет: наверняка нужно реагировать на кнопки управления, делать это естественно при помощи двух функций:
get_key_pressed();
change_parameter(command);
если вдруг не понятно, то первая функция возвращает код нажатой кнопки, а вторая изменяет какие-то параметры девайса по команде.
на данном этапе мы не ломаем бошку над тем, какие там параметры, команды и прочие мелочи - просто принимаем, как данность, что они ЕСТЬ - пусть функция с ними и разбирается.
итак, все ли у нас имеется для работы девайса? практически да, не хватает только одной функции, которая настроит всю периферию девайса после включения питания. пусть это будет функция
init();
теперь все, можно написать программу:похоже, что данный код на 100% выполняет поставленную задачу (и заметьте: алгоритм полностью понятен без единого комментария!): после инициализации в бесконечном цикле измеряет три параметра и выводит их на дисплей, затем изменяет параметры в зависимости от того, какая кнопка нажата.
раз "в общем и целом" программа готова, надо переходить к деталям, т.е. начинать делать РЕАЛИЗАЦИЮ тех функций, которые ранее мы считали УЖЕ ИМЕЮЩИМИСЯ. попутно надо описывать переменные, необходимые для работы этих функций, константы и т.п. штуки. делать это надо точно так же: ставим задачу, считая, что все необходимое уже есть, и рисуем код функции. разумеется, если на самом деле что-то уже есть (например, стандартная функция Си) - мы должны использовать ее, а если стандартного нет - позже сделаем самостоятельно.
так, шаг за шагом, мы будем погружаться в детали проекта все глубже и глубже, пока, наконец, не дойдем до элементарных вещей типа простых операторов языка Си, работы с портами и/или регистрами, элементарными вычислениями и т.п., детализировать которые уже нет смысла. на этом можно будет считать программу полностью завершенной.
методика создания программ по этому принципу имеет название "нисходящего проектирования", и достаточно проста и удобна для начинающих. по мере роста вашего опыта у вас многие вещи будут получаться слету, без многоступенчатого разбиения на многочисленные функции, а пока что очень рекомендую учиться на этом подходе. он хорош еще и тем, что сделав вместо нужных функций "пустышки", ничего не делающие, а просто возвращающие (если надо) какой-то результат, можно быстро получить "усеченную" версию програмы, которую можно прошить в девайс или симулятор и увидеть, как она работает. то есть осуществлять поэтапную отладку, функция за функцией, шаг за шагом.
желаю вам удачи!
так не пойдет: МК это не мозг человека, сопоставить логическую последовательность с реальностью он не может, он может тупейшим образом исполнять ваши команды. чтобы результат его деятельности совпал с желаемым вами, вам придется думать за него - много и тщательно.
я советую делать это по принципу "от общего к деталям". итак, вы хотите, чтобы ваш девайс измерял температуру, давление и скорость ветра (предположим). будем сразу считать, что он это уже делает при помощи функций
measure_temp();
measure_pressure();
measure_wind();
измеренные значения он должен выводить на LCD. снова считаем, что он уже умеет это делать, естественно, при помощи функции
lcd_output(temp, press, wind);
как видите, названия функций и параметров для них я сразу делаю "говорящими сами за себя" - так проще все понимать.
итак, измеряет и выводит - это все? скорее всего, нет: наверняка нужно реагировать на кнопки управления, делать это естественно при помощи двух функций:
get_key_pressed();
change_parameter(command);
если вдруг не понятно, то первая функция возвращает код нажатой кнопки, а вторая изменяет какие-то параметры девайса по команде.
на данном этапе мы не ломаем бошку над тем, какие там параметры, команды и прочие мелочи - просто принимаем, как данность, что они ЕСТЬ - пусть функция с ними и разбирается.
итак, все ли у нас имеется для работы девайса? практически да, не хватает только одной функции, которая настроит всю периферию девайса после включения питания. пусть это будет функция
init();
теперь все, можно написать программу:
Код: Выделить всё
int main(void){
init();
while(1){
temperature = measure_temp();
pressure = measure_pressure();
wind_speed = measure_wind();
lcd_output(temperature, pressure, wind_speed);
change_parameters(get_key_pressed());
}
}раз "в общем и целом" программа готова, надо переходить к деталям, т.е. начинать делать РЕАЛИЗАЦИЮ тех функций, которые ранее мы считали УЖЕ ИМЕЮЩИМИСЯ. попутно надо описывать переменные, необходимые для работы этих функций, константы и т.п. штуки. делать это надо точно так же: ставим задачу, считая, что все необходимое уже есть, и рисуем код функции. разумеется, если на самом деле что-то уже есть (например, стандартная функция Си) - мы должны использовать ее, а если стандартного нет - позже сделаем самостоятельно.
так, шаг за шагом, мы будем погружаться в детали проекта все глубже и глубже, пока, наконец, не дойдем до элементарных вещей типа простых операторов языка Си, работы с портами и/или регистрами, элементарными вычислениями и т.п., детализировать которые уже нет смысла. на этом можно будет считать программу полностью завершенной.
методика создания программ по этому принципу имеет название "нисходящего проектирования", и достаточно проста и удобна для начинающих. по мере роста вашего опыта у вас многие вещи будут получаться слету, без многоступенчатого разбиения на многочисленные функции, а пока что очень рекомендую учиться на этом подходе. он хорош еще и тем, что сделав вместо нужных функций "пустышки", ничего не делающие, а просто возвращающие (если надо) какой-то результат, можно быстро получить "усеченную" версию програмы, которую можно прошить в девайс или симулятор и увидеть, как она работает. то есть осуществлять поэтапную отладку, функция за функцией, шаг за шагом.
желаю вам удачи!
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: Помогите совместить АЦП и 1-wire в ATMEGA
Вопросов больше, чем ответов. Спасибо за начало, буду пробовать поэтапно. Может, что и получится.Мастер Ломастер писал(а): ...желаю вам удачи!
Re: Помогите совместить АЦП и 1-wire в ATMEGA
akulov не слушай, никого. Все в кучу накидал и наслаждаешся программой
Это конечно шутка. если серьезно к твоему проекту подходить то неделю ухайдокаеш точно, поэтому серьезные люди тебе подсказывают ... только правильное направление, потому что на эти дела смотрят серьезно и относятся со всей ответственостью.....
Ну в общем, так как я не в курсе как правильно делается ,позволил себе потренировался, как бы я его место для цензуры...
Проект работает и в протеусе и на отладочной платке...
Это конечно шутка. если серьезно к твоему проекту подходить то неделю ухайдокаеш точно, поэтому серьезные люди тебе подсказывают ... только правильное направление, потому что на эти дела смотрят серьезно и относятся со всей ответственостью.....
Ну в общем, так как я не в курсе как правильно делается ,позволил себе потренировался, как бы я его место для цензуры...
Код: Выделить всё
/*****************************************************
http://c2.at.ua
Chip type : ATmega8
Clock frequency : 4,000000 MHz
*****************************************************/
#include <mega8.h>
// 1 Wire Bus functions
#asm
.equ __w1_port=0x12; PORTD
.equ __w1_bit=0
#endasm
#include <1wire.h>
#include <ds18b20.h> //библиотека для работы с датчиком ds18b20
unsigned char rom_code[4][9]; //масив с адресами найденых датчиков
#define MAX_DS18B20 8
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#include <stdio.h>
#include <delay.h>
unsigned char devices, k; //переменная
unsigned char signs='\x25'; // ………..
unsigned int vlazhnost,davlenie; // ……………..
int temp1,temp2; //………………
char lcd_text[16];
#define ADC_VREF_TYPE 0xE0
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0x7f);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
void temperature(void) // функция по работе с термо-датчиком
{
temp1 = ds18b20_temperature(&rom_code[0][0]); // читаем температуру с выбранного датчика
if ((temp1 < 130) & (temp1 > -60)) // установим границу диапазон
temp1= temp1;
else { temp1 =0; }; // если выходит за границу тогда 0
temp2 = ds18b20_temperature( &rom_code[1][0] );//читаем температуру с выбранного датчика
if ((temp2 < 130) & (temp2 > -60)) // установим границу диапазон
temp2= temp2;
else { temp2 =0; }; // если выходит за границу тогда 0
}
void main(void)
{
PORTB=0b00000000; // «WzAVR «Port B initialization
DDRB=0b00000000; //
PORTC=0b10000000; // «WzAVR «Port C initialization
DDRC=0b00000000;
PORTD=0b00000000; // «WzAVR «Port D initialization
DDRD=0b00000000;
TCCR0=0x03;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x01;
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x86;
devices=w1_search(DS18B20_SEARCH_ROM_CMD,rom_code); //определим сколько устройств подключено к шине 1-Wire
ds18b20_init(0,-35,35,DS18B20_12BIT_RES); // переключения термометра в 12 битный режим
w1_init(); // Wire Bus initialization
lcd_init(16);
while (1)
{
temperature(); // вызываем функцию температуры
vlazhnost=0;
davlenie=0;
for (k=0;k<79;k++)
{
vlazhnost+=read_adc(0); //Влажность
davlenie+=read_adc(1)/2; //давление
};
vlazhnost/=200; //
davlenie/=11; //вычисляем среднее арифметическое измерения
sprintf(lcd_text, "%3u%c",vlazhnost,signs);
lcd_gotoxy(10,0);
lcd_puts(lcd_text); // выводим масив на LCD
sprintf(lcd_text, "%3umm",davlenie);
lcd_gotoxy(10,1);
lcd_puts(lcd_text); // выводим масив на LCD
sprintf(lcd_text,"%i.%u\xdfC ",temp1,temp1%1);
lcd_gotoxy(0,0); // указали место на дисплее
lcd_puts(lcd_text); // выводим масив на LCD
sprintf(lcd_text,"%i.%u\xdfC ",temp2,temp2%1);
lcd_gotoxy(0,1);
lcd_puts(lcd_text); // выводим масив на LCD
};
}
Последний раз редактировалось C@at Пт янв 27, 2012 00:56:28, всего редактировалось 1 раз.
Re: Помогите совместить АЦП и 1-wire в ATMEGA
C@at , большое спасибо! Подправить коэффициенты преобразования давления и влажности и можно реализовывать.
Мастер Ломастер, по Вашему совету составил программу, пока только с измерением давления и влажности.
Все работает, только почему-то мигает знак % во влажности. Може подскажете, что не так?
Мастер Ломастер, по Вашему совету составил программу, пока только с измерением давления и влажности.
Все работает, только почему-то мигает знак % во влажности. Може подскажете, что не так?
Код: Выделить всё
#include <mega8.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
float tmp;
float vlagnost;
float pressure;
unsigned char LCD_vla[16]; //влажность
unsigned char LCD_dav[16]; //давление
#define ADCMUX_V 0
#define ADCMUX_D 1
#define ADC_VREF_TYPE 0x40
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
void init(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0b10000000;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x86;
}
float measure_vlagnost()
{
tmp= read_adc(ADCMUX_V); // чтение с датчика влажности
tmp = (tmp * 5000) / 1023; // Вычисляем напряжение милливольт.
tmp = (tmp - 958)/30.7; // Значение влажности в %
if (tmp > 100) {tmp = 100;} ;
return tmp;
}
float measure_pressure()
{
tmp=read_adc(ADCMUX_D);
tmp = (tmp * 5000) / 1023; // Вычисляем напряжение милливольт.
tmp = (tmp/5+95)/900000*750064; // Значение в мм.рт.ст. //(мрс) K=7.50064
return tmp;
}
void lcd_output ()
{
//влажность
ftoa(vlagnost, 1, LCD_vla); // преобразование и вывод на LCD влажности
lcd_gotoxy(10,0);
lcd_puts(LCD_vla);
lcd_putsf(" ");
lcd_gotoxy(15,0);
lcd_putsf("%");
//давление
ftoa(pressure, 0, LCD_dav); // преобразование и вывод на LCD давления
lcd_gotoxy(10,1);
lcd_puts(LCD_dav);
lcd_gotoxy(14,1);
lcd_putsf("mm");
}
void main(void)
{
init();
lcd_init(16);
while(1)
{
vlagnost = measure_vlagnost();
pressure = measure_pressure();
lcd_output();
}
}Re: Помогите совместить АЦП и 1-wire в ATMEGA
Причина здесь lcd_putsf(" ");
Осталось мелочь? термометр.
Код: Выделить всё
//влажность
ftoa(vlagnost, 1, LCD_vla); // преобразование и вывод на LCD влажности
lcd_gotoxy(10,0);
lcd_puts(LCD_vla);
// lcd_putsf(" ");
lcd_gotoxy(15,0);
lcd_putsf("%");Re: Помогите совместить АЦП и 1-wire в ATMEGA
А без него не убирается последняя цифра. Например, если перед этим было 100%, а потом 98.5, то отобразится 98.50. Т.е. 0 не убирается.C@at писал(а):Причина здесь lcd_putsf(" ");
Зато не мигает знак %. Попробую функцию sprintf.
Re: Помогите совместить АЦП и 1-wire в ATMEGA
C@at , а не подскажете, как в sprintf вывести знак %? У меня не получается. Вывожу только через lcd_putsf, но тогда он не привязан к значению.
Re: Помогите совместить АЦП и 1-wire в ATMEGA
В контроллерных программах решается все 1000 и 1 способ ( ой мало загнул... 1000⁸ и 1 способ
где то так....)
Смотрите в предыдущем коде который я выложил, (в протеусе то смотрели как оно смотрится?)akulov писал(а):C@at , а не подскажете, как в sprintf вывести знак %?
Код: Выделить всё
unsigned char signs='\x25';
//////////////......
//////////////......
sprintf(lcd_text, "%3u%c",vlazhnost,signs);
//////////////......
-
codenamehawk
- Вымогатель припоя
- Сообщения: 528
- Зарегистрирован: Вт фев 09, 2010 17:52:26
Re: Помогите совместить АЦП и 1-wire в ATMEGA
Для того, чтобы не было видно заключительного нуля выводите lcd_putsf(" "); где важно колличевство пробелов их должно быть не меньше чем символов которые выводились до этого.akulov писал(а):А без него не убирается последняя цифра. Например, если перед этим было 100%, а потом 98.5, то отобразится 98.50. Т.е. 0 не убирается.C@at писал(а):Причина здесь lcd_putsf(" ");
Зато не мигает знак %. Попробую функцию sprintf.
нп. вы вывели
lcd_gotoxy(10,0);
lcd_putsf("123.45");
чтобы затереть необходимо переместить курсор на место знака "1"
lcd_gotoxy(10,0);
и напечатать шесть пробелов
lcd_putsf(" "); //шесть пробелов
перед выводом нового текста не забудьте
lcd_gotoxy(10,0);
Re: Помогите совместить АЦП и 1-wire в ATMEGA
Спасибо! Я не в том месте ставил lcd_putsf(" "); и после не ставил опять lcd_gotoxy(10,0);codenamehawk писал(а): нп. вы вывели
lcd_gotoxy(10,0);
lcd_putsf("123.45");
чтобы затереть необходимо переместить курсор на место знака "1"
lcd_gotoxy(10,0);
и напечатать шесть пробелов
lcd_putsf(" "); //шесть пробелов
перед выводом нового текста не забудьте
lcd_gotoxy(10,0);"
Написал и термометры, но система получилась "тормозная", очень медленно набирает показания, во всяком случае в Proteus.C@at писал(а):Осталось мелочь? термометр.
Завтра попробую на макетке.
Ваш проект более подходит, но пытался я изменить пересчет показаний влажности и давления, у меня ничего не получается.
Влажность рассчитывается по формуле: Влажность% = (Vout-SV)/KV где SV=смещение нуля (0.958), KV=наклон характеристики (0.0307).
Все значения в вольтах и в исходнике SV и KV нужно изменять под конкретный датчик.
Давление по формуле: Давление в мм = (Vout/5+0.095)/0.009*7.50064 (тоже все в вольтах).
И рекомендуют ADC_VREF_TYPE 0x40 (Vcc 5V).
Может, поможете, как пересчитать вывод этих показаний в Вашей программе?
Re: Помогите совместить АЦП и 1-wire в ATMEGA
То что притормаживает, это номально, обсчет показаний температуры занимает приличный ресурс....
Мой кусок кода , это только один из вариантов вывода информации на дисплей. И все там для минимального понятия ... и все требует усовершествования. Те же термометры в пять строк , это только начало.... Дальше уже ваша математика измерений , опять же вариантов куча (мои методы вряд ли подойдут, для примера обучения), так что дальше, все на ваше усмотрение.....
Мой кусок кода , это только один из вариантов вывода информации на дисплей. И все там для минимального понятия ... и все требует усовершествования. Те же термометры в пять строк , это только начало.... Дальше уже ваша математика измерений , опять же вариантов куча (мои методы вряд ли подойдут, для примера обучения), так что дальше, все на ваше усмотрение.....
Re: Помогите совместить АЦП и 1-wire в ATMEGA
Спасибо, буду смотреть!C@at писал(а):То что притормаживает, это номально, обсчет показаний температуры занимает приличный ресурс....
Мой кусок кода , это только один из вариантов вывода информации на дисплей. И все там для минимального понятия ... и все требует усовершествования. Те же термометры в пять строк , это только начало.... Дальше уже ваша математика измерений , опять же вариантов куча (мои методы вряд ли подойдут, для примера обучения), так что дальше, все на ваше усмотрение.....


