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

Термометр На 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 пользователей онлайн

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

  • Сообщения

    • Доброго времени суток. Столкнулся с проблемой: не получается скачать пакет STM32F4 (пробовал и другие, ошибка та же) при нажатии кнопки install появляется ошибка (первый скриншот). Такое ощущение, что CubeIDE не может подключиться к сети, постоянно появляется окно как на втором скиншоте. Подскажите как можно исправить проблему?
    • Я вас конечно уважаю, но хамить мне не надо. Все УНЧ что я создавал сначала до идеала дорабатывались в симуляторе, и только потом собирались. В 98% случаев они сразу работали корректно. Были исключения, но там проблемы были в разводке платы и деталях а не симуляторе. Тот же мой VAC 2.0 ПОЛНОСТЬЮ совпал по результатам тестов в железе с результатами тестов в симуляторе.  Эта схема это простейший ВК в AB классе к которому подключили ОУ для усиления напряжения. Нет ни единой причины этой схеме работать некорректно или плохо. Единственные 2 варианта почему будет работать плохо/не работать, это либо накосячено при сборке или детали обвязки неисправны, либо сам ОУ палëный. Качество работы этой схемы очень сильно будет зависеть от качества ОУ и симулятор тут не при чëм. И опять же, этой схеме уже больше 30 лет и еë собирали сотни человек! Если собрано на нормальных деталях, эта схема будет работать как надо и выдаст качественный звук. 
    • У многих в голове "битые ячейки". Ясно сказано, что работает видео в помещении, опробовано десятки раз. Весь снятый материал в лесу и в поле пошёл в корзину и также опробовано не один раз. Приобретена новая карта за 1К. Видео ещё хуже, чем с тех "чудо флешек". https://disk.yandex.ru/i/Ww52T3leg99VxA
    • Сорри, вопрос звучит не однозначно. Меня интересовало - нужен ли вынос наружу головок или не нужен, а не их расположение на передней панели относительно друг друга.
    • Когда то я тоже был от неё в ужасе, но быстро прошло. К тому же это одно из лучших технических решений, если не лучшее.
    • Совершенно верно. Смысл сближения +/- шин в том чтобы получить эти контуры максимально симметрично расположенными относительно чувствительных к помехам точек монтажа. Однако при этом сами контуры увеличиваются по площади и меняют плоскость расположения на менее выгодную по помехам по сравнению с "классикой" (полигон земли под шинами). Поэтому, лично я предпочитаю трассировать прямые и возвратные проводники  друг над другом, чтобы минимизировать излучение изначально.
    • Почитайте Часть вопросов отпадет.
×
×
  • Создать...