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

Термометр На Mega8


Рекомендуемые сообщения

Всем привет!

Задумка такая:

Есть термо резистор 2к2 подключенный к С0

Нужно, чтобы при температуре +95* сработало условие

Вот программа.

#include <mega8.h>
#include <delay.h>

void main(void){
int x = 1;
int data;

ACSR=0x80; // Настройки АЦП
SFIOR=0x00; // Настройки АЦП
ADMUX=0; // бит АЦП порта С
ADCSR=0x85;// Настройки АЦП

while (1) {

if (!(PINB & (1«PINB0))){ // если нажата кнопка "Пуск"


while (1) {
delay_ms(20);
ADCSR |= 0x40;
data = ADCW; // Данные из АЦП

if((data) >= 408) { // Достигаемое значение (Температура)
// t достигнута



}

}

}
}

}

Помогите отладить ее(

Заранее спасибо!

Изменено пользователем Bartle96
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

А программа в целом нормальная, ошибок нет?

Дело в том что у меня все время срабатывает условие

10tdQE3mo.png

Как вы думаете с чем это может быть связанно?

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

у меня все время срабатывает условие

Как вы думаете с чем это может быть связанно?

Наверное с тем, что выражение в условии истинное. Или нет ? :unknw:
Ссылка на комментарий
Поделиться на другие сайты

Я и 1000 делал все равно условие истинно
На выражение в условии посмотрите и подумайте, должно ли оно быть не истинно, если data будет = 1000 ? :)

Какой то кошмар. Обвиняют программу в том, что она делает как задумал автор... :vava:

Ссылка на комментарий
Поделиться на другие сайты

Да программа странная АЦП не работает

Сделал вот так:

#include <mega8.h>
#include <delay.h>

void main(void){
int x = 1;
int data, V;
 DDRB=0xFF;  // весь порт как выход


ACSR=0x80; // Настройки АЦП
SFIOR=0x00; // Настройки АЦП
ADMUX=0;   // бит АЦП порта С
ADCSR=0x85;// Настройки АЦП

   while (1)
  {
    delay_ms(20); // Задаем задержку в 20 миллисекунд</i>
    ADCSR |= 0x40; // Записываем 1 в ADSC</i>
    data = ADCW; // Вычитываем значение</i>
    V = (float) data*0.0048828; // Переводим в вольты</i>


	    PORTB.1=1;
		  delay_ms(V);
		 PORTB.1=0;
		 delay_ms(V);
  };


}



К С.0 подключил переменный трморезистор на 2к2

К B.1 пищалку

Так она пищит все время монотонно, не зависимо от температуры резистра.

Ссылка на комментарий
Поделиться на другие сайты

Автор видать знаки попутал, больше с меньше... А про пищание... это ж какую фантазию надо иметь.. )))

Изменено пользователем Goodefine

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

Alex посмешил, ни одного поста по делу, полное невежество.

А теперь, мое по делу: покажите свою схему обвязки МК, что подключено к выводам AREF / AVCC. Как вы подключили датчик температуры.

И попробуйте вот эту программу (на работоспособность сам не проверял):

#include <mega8.h>
#include <delay.h>

void setupADC(void) {
 // ADLAR = 0 -> выравнивание результата вправо
 // выбор источника опорного напряжения
 // REFS1 = 0, REFS0 = 0 -> внешний ИОН подключенный к AREF
 // REFS1 = 0, REFS0 = 1 -> напряжение питания AVCC
 // REFS1 = 1, REFS0 = 1 -> внутренний ИОН 2.56В, нужен конденсатор на AREF
 ADMUX = (0 << REFS1) | (0 << REFS0) | (0 << ADLAR);
 // ADEN = 1 -> разрешение работы АЦП
 // ADFR = 0 -> режим одиночного преобразования
 // ADPS2 = 1, ADPS2 = 0, ADPS = 1 -> коэффициент деления 32
 // частота работы модуля АЦП = F_CPU / 32 (рекомендуется 50..200кГц)
 ADCSR = (1 << ADEN) | (1 << ADPS2) | (0 << ADPS1) | (1 << ADPS0);
}

unsigned int getValueADC(void) {
 ADCSR |= (1 << ADSC); // запуск нового преобразования
 while(ADCSR & (1 << ADSC)); // ожидание завершения преобразования
 return ADCW;
}
int main(void) {
 unsigned int data;
 DDRB = 0xFF; // весь порт как выход
 setupADC(); // настройка АЦП
 while (1) {
   delay_ms(20);
   data = getValueADC();
   if (data >= 408) {
     PORTB ^= (1 << PINB1);
   } else {
     PORTB &= (0 << PINB1);
   }
 }
}

Изменено пользователем BerZerKku
Ссылка на комментарий
Поделиться на другие сайты

Bartle96,

Вы запускаете преобразование и сразу же желаете получить результат, не дождавшись окончания преобразование ADC. Посмотрите, как это выглядит в примере у BerZerKku или задействуйте вектор прерывания "преобразование ADC завершено" (0x000E).

Ссылка на комментарий
Поделиться на другие сайты

ни одного поста по делу, полное невежество.
Да неужели ? Покажите мне, какой пост бы не по делу ?

Какие вопросы, такие, собственно, и ответы.

Какого же х.. Вы сразу на первый пост не ответили ? Мне интересно стало, какой бы Ваш был ответ на него.

Ссылка на комментарий
Поделиться на другие сайты

Странная претензия, как появилось время, так и ответил. И я даже предположить не могу что бы изменилось, если бы ответил "сразу".

Не нравится вопрос - не отвечайте, вроде бы проще некуда?

Интересно, каким образом это можно сделать удалённо ? :crazy:

Заливайте свою программу в МК и отлаживайте.

Как ни странно существуют симуляторы. Или просто достаточно знать как работает МК, чтобы найти проблемы в ПО.

Наверное с тем, что выражение в условии истинное. Или нет ? :unknw:

Ммм... констатировать очевидные вещи может быть и умно, но толку от них нет.

На выражение в условии посмотрите и подумайте, должно ли оно быть не истинно, если data будет = 1000 ? :)

Какой то кошмар. Обвиняют программу в том, что она делает как задумал автор... :vava:

Наверное все таки не data = 1000, а (data < 1000). Пользы 0.

Ну у Вас с АЦП значит проблемы, а не с условием :)

Даташит покурите и разберитесь как работать с АЦП...

БезЦенный совет. После такого обычно все сразу начинает работать.

Решать конечно автору топика, но свое мнение по поводу вашего общения я высказал выше.

Изменено пользователем BerZerKku
Ссылка на комментарий
Поделиться на другие сайты

Как ни странно существуют симуляторы. Или просто достаточно знать как работает МК, чтобы найти проблемы в ПО.
Т.е. это Ваш ответ ТС'у на первый пост ? Ну-ну... очень информативно :)
Ммм... констатировать очевидные вещи может быть и умно, но толку от них нет.
Для кого очевидные, для Вас ? Вы уверены, что они очевидны для ТС'а ?

Каким ещё может быть ответ на вопрос "почему срабатывает условие ?" ?

Наверное все таки не data = 1000, а (data < 1000). Пользы 0.
Глазки протрите, уважаемый :)

ТС:

Я и 1000 делал все равно условие истинно(
Мой ответ :
должно ли оно быть не истинно, если data будет = 1000 ?
И посмотрите на условие.
БезЦенный совет.
Нормальный совет. Кстати, заставляющий человека хотя бы открыть даташит и что-то поискать.

Как раз, от готового варианта пользы будет меньше, чем от совета в какую сторону копать.

Это моё право решать, какие давать советы - в даташит идти или решения готовые давать... И не Вам в них меня упрекать.

Мои посты заставят человека думать, а не тупо копипастить. Если он, конечно не лентяй.

Кстати,

Не нравится вопрос - не отвечайте, вроде бы проще некуда?
тоже самое я и Вам могу сказать. Не понравились мои ответы - идите "лесом" - не с Вами разговариваю...

ЗЫ: Если хотите потроллить, то скажу Вам сразу - не то место нашли.

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

как ни странно именно вам понадобились мои комментарии относительно ваших постов
Ну дак потому, что комментарии были относительно моих постов. Я же не стал говорить, что Ваш совет полная ерунда, подозревая, что он не поможет ТС'у. Я затронул только то, что было затронуто в мою сторону.

Не нужно человеку говорить о бесполезности его слов, не видя в них намерений. Каждый помогает по-своему.

Ссылка на комментарий
Поделиться на другие сайты

Alex. действительно ваши ответы не структурированы и бессмысленны, вы трактуете очевидные вещи. Помощи нет, один стеб(

И еще критику слушают молча, и адекватно воспринимают ее

Ссылка на комментарий
Поделиться на другие сайты

10tdQE3rf.png

#include <mega8.h>
#include <delay.h>

void main(void){
int x = 1;
int data, V;
 DDRB=0xFF;  // весь порт как выход

ACSR=0x80; // Настройки АЦП
SFIOR=0x00; // Настройки АЦП
ADMUX=0; // бит АЦП порта С
ADCSR=0x85;// Настройки АЦП


   while (1)
  {
    delay_ms(20); // Задаем задержку в 20 миллисекунд</i>
    ADCSR |= 0x40; // Записываем 1 в ADSC</i>
    data = ADCW; // Вычитываем значение</i>

    if (V >= 1008) {
	 PORTB.1=1;
    } else {
	  PORTB.1=0;
    }


  };

}

Ссылка на комментарий
Поделиться на другие сайты

начните с подключения к aref и avcc того, что необходимо по документации.

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

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...