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

Atmega8, Термометр Lm75A(Ds1621) И Bascom


Anonim

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

Всем доброго времени суток. Захотел сделать термометр на Atmega8 и цифровом датчике LM75a(DS1621 полный аналог, но есть в Proteus). В качестве языка програмирования использую BASCOM. среда разработки BASCOM-AVR. Нашел русское описание на LM75а, инструкцию на русском и на английском по работе с I2C шиной в BASCOM.

По отдельности вроде все понятно, но пытаюсь написать програму - ничего путного не выходит. Хочу использовать аппаратную реализацию шины.

Пока все что смог сделать, кроме тела для динамической индикации(тут проблем нет, чать кода связаную с индикацией не публикую, мне бы со связью разобраться)


Dim I2ctemp As Byte				   'Storage for the temperature

I2cinit
Config I2cdelay = 10
Do

  I2cstart
  I2cwbyte &1001111  'Это адрес устройства
  I2crbyte & , Ack	    'Тут будем читать байты
  I2crbyte Databyte_to_read , Nack 'Тут прочтем последний
  I2cstop

Loop

Вопросы:

1)Как правильно указать какой байт и бит читать?

20Как считаное значение запихать в переменную I2ctemp?

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

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

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

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

Вопросы:

1)Как правильно указать какой байт и бит читать?

20Как считаное значение запихать в переменную I2ctemp?

Вы же нашли:
инструкцию на русском и на английском по работе с I2C шиной в BASCOM.
Странно, что после этого у Вас возникают такие вопросы.

PS: Неужели со средой не идут никакие мануалы по компилятору и его библиотеках ?

PSPS: Пока не поздно (если уже не поздно), откажитесь от басика, учите сразу Си.

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

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

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

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

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

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

Я хочу считать температуру из датчика командой(00h - указано в описании, в англ. примере все команды в виде &H**

I2crbyte &H00

А среда разработки пишет unknown definition на это.

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

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

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

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

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

Баском актуален для контроллеров? Первый раз слышу. Обычно для контроллеров пишут на ассемблере и Си, несколько реже на С++ (ардуина). Всякие бейсики-паскали совсем экзотика.

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

Перспективность явы для ПК тоже спорна. Тот же Си прекрасно себя чувствует в области системного программирования (где о яве и не слышно, насколько я знаю) и, вместе с С++ в разработке конечных приложений (GNOME, KDE как достаточно крупные примеры). Впрочем, конечные приложения на чем только не пишут. Впрочем, известных программ на бейсике не припомню.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

Ну, это тема для хорошей отдельной дисскусии. Мне бейсик нравиться своей простой, да и привык как то. Хотя может это и не совсем правильно.

Сейчас вопрос один:

как правильно указать адрес регистра который считывем, в каком виде? Нужно просто считать Temp из этой таблицы, 98300a.png.

Memory-574x181.jpg

Это должно происходить в строчке выделенной жирным. Что я там только не пробовал писать! И 00h (адрес из таблицы 1 как я понял), и 0x00, и

&H00, и Temp - на все ответ один - ошибка unknown definition.

Подозреваю что чего то очень сильно не понимаю в формате записи адреса, просвятите пожалуста.

,

Config Sda = Portc.4
Config Scl = Portc.5
I2cinit
Const Lm75rd = &B10011111								   'Sensor read (ïîñëåäíÿÿ 1 - ðåæèì ÷òåíèå)
I2cstart
I2cwbyte Lm75rd
Waitms 25

Do
  Value_out = 123
  I2cstart
  I2cwbyte Lm75rd
  [b]I2crbyte 00h [/b]										    'ÐÀÇÎÁÐÀÒÜÑß Ñ ÔÎÐÌÀÒÎÌ					    '
'ïî èäåå òóò ñ÷èòàëè òåìïåðàòóðó

  I2cstart
  I2cwbyte Lm75rd
  I2crbyte Value_out , Ack
'So you'll have to read twice... first the ,5
  I2crbyte Value_out , Nack
'And then the 12... we don't store the ,5
  I2cstop

  Digit_temp = Value_out								   ' ðàçäåëåíèå èçìåðåííîãî çíà÷åíèÿ íà ñîñòàâíûå ÷àñòè
  One = Digit_temp Mod 10								  ' åäèíèöû
  Digit_temp = Digit_temp - One
  Digit_temp = Digit_temp / 10
  Ten = Digit_temp Mod 10								  ' äåñÿòêè
  Digit_temp = Digit_temp - Ten
  Digit_temp = Digit_temp / 10
  Hundred = Digit_temp Mod 10							  ' ñîòíè
  Value_out = 0
Loop

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

работаю с паскале-бейсико-подобными средами с 2004 года. Желания менять пока нет - КодеВижн отдыхает как по качеству кода, так и по размеру. Про библиотеки вообще молчу. ДА, когда это сказал авторам Кодевижен - обиделись. Но приняли за факт.

Тоже работаю с Баском. Я переводил среду на русский, часть справочной системы перевёл. Но Марк как-то пофигистически относится к факту покупок его ПО в странах бывшего СССР: воруют, мол, не покупают. Смысл с нами-то возиться...

Это так. К слову о холиварах.

первый совет автору темы: дайте словесный или графический алгоритм.

второй: разбейте задачу на мелкие части, пишите кусками и тестируйте.

третий: милости просим на форум: http://bascomavr.3bb.ru/ - -тут вам быстрее ответят. И без халиваров ;)

ps

четверый совет: чтобы скопировать все комментарии на русском - переключитесь сперва на русский (раскладка клавиатуры), а потом уже копируйте

pps

пятый: читайте справку - там всё есть, поверьте :)

&H11

ppss

а слабо было перевести из Hex в Dec и просто написать? ))))

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

Александр, спасибо, пока самый толковый ответ!

1) Алгоритм:

Стартуем шину I2C

Обращаемся к термометру

Считываем тмпературу

Записываем ее в временый регистр

Останавливаем I2C

Потом обрабатываем значение что бы получит температуру в градусах Цельсия, как написано в описании датчика. Этот кусок пока не написан.

Полученое число разбиваем на 3 отдельных (еденицы десятки сотни) для динамической индикации в прерывании.

Начинаем сначала основной цикл.

Вроде ничего сложного...

2)Так и делаю. Сначала написал динамическую индикацию, теперь пытаюсь с датчиком связаться.

3)Спасибо, завтра зерегаюсь там.

4) СПАСИБО!!!

5) Не могу найти про это справке. Ткните носм пожалуйста... На &H11 пишет тоже самое...

5) 0x01 это выходит просто 1 в десятичном виде... Тоже самое...

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

какая у вас версия? может у вас какая-то древняя? хотя я начинал с demo, сейчас в лицензионной работаю

я сперва у себя проверил - компилятор принял, не ругнулся

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

какая у вас версия? может у вас какая-то древняя? хотя я начинал с demo, сейчас в лицензионной работаю

я сперва у себя проверил - компилятор принял, не ругнулся

2.0.7.1, конечно не лицензия... Но до этого нареканий не было

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

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

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

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

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

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

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

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

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

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

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