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

Язык СИ для микроконтроллеров


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

@IMXO@Yurkin2015 , спасибо за разъяснения. Вообще, я хочу сделать беспроводной термометр на 2 измеряемые точки с аналоговыми датчиками (один - отечественный К1019ем1). Для передачи данных хотел сначала использовать библиотеку Манчестерского кода, а потом набрел на интересную статью http://www.romanblack.com/RF/cheapRFmodules.htm (на англ.) Там, в конце, есть код и для приемника, но насчет TMR0 мне было не понятно (настройка, чтение)

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

11 минуту назад, Aleksandr1111 сказал:

Там, в конце, есть код и для приемника

этот код не для 628го

 

23 минуты назад, Aleksandr1111 сказал:

беспроводной термометр на 2 измеряемые точки

это как?  два термометра со своими передатчиками или общий передатчик на один приемник?

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

26 минут назад, IMXO сказал:

этот код не для 628го

Это понятно :) ,пытаюсь адаптировать для 628. 

26 минут назад, IMXO сказал:

два термометра со своими передатчиками или общий передатчик на один приемник?

Наверно, общий передатчик (а датчики в двух теплицах), причем передатчик и приемник, возможно, самодельные.Там еще упоминается, что все это тестировалось на Pic18 с кварцами 20 МГц, а если у меня 8 МГц, то, боюсь, что при таких длительностях передаваемых нулей и единиц (порядка 80 мксек) приёмный МК не сможет корректно обработать поступающие импульсы.

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

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

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

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

17 минут назад, IMXO сказал:

те аналоговые датчики вы уже адаптировали?

Нет, но, мне кажется, это не так сложно, примеры кодов есть, в передатчике планирую использовать Pic12f675 с его ацп.

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

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

те настроить таймер вызывает сложности, но считать показания датчика в попугаях АЦП перевести в цифру, потом в строку, потом создать кодовую посылку, добавить CRC(контрольную сумму) , преобразовать все это в манчестер - конечно "это не так сложно" :)

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

@IMXO , а вообще, можно останавливать/запускать в нужный момент счетчик с помощью бита T0CS, как написал Yurkin2015 ? И еще: запись

while (PORTA.F0) continue;

значит ли, что только когда PORTA.F0 станет = 1, выполнение кода пойдет дальше по тексту, иначе программа будет ждать выполнения условия?

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

для 12 16 пиков нет, TMR0 считает постоянно

исключение новые серии PICxxF1xxx

и запускает/останавливает бит TMR0ON, бит T0CS  или внутренний генератор или внешний 

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

15 минут назад, Aleksandr1111 сказал:

с помощью бита T0CS

Поясняю. При установке бита в 1 таймер отключается от внутреннего генератора, поэтому и останавливается.

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

и при смене уровней на RA4 продолжает считать...

29 минут назад, Aleksandr1111 сказал:

значит ли, что только когда PORTA.F0 станет = 1, выполнение кода пойдет дальше по тексту,

с точностью до наоборот,

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

32 минуты назад, IMXO сказал:

точностью до наоборот,

Т.е. continue - имеется ввиду "продолжать находится в этом цикле, если условие истинно", и только, когда условие даст ложный рез., произойдет выход из цикла, и выполнение прогр. пойдет дальше, так?

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

@IMXO , скажите, пожалуйста, у меня в проекте Протеуса 2 МК PIC16F628A, 1-ый передает данные по протоколу, согласно прикрепленному рис., 2-ой соединен через резистор 510 Ом и принимает их (статью с кодами для приемника и передатчика Вы видели несколькими постами выше), только у меня все длительности импульсов увеличены в 2 раза. Так вот передатчик-то работает и в Протеусе, и в железе, (по осциллографу), а на индикаторе приемника передаваемое число не меняется (в Протеусе).Вопрос: может ли этот протеус при  длительностях от 40 мксек и более адекватно имитировать работу такого устройства?

RFmodule_proto1.gif

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

17 минут назад, Aleksandr1111 сказал:

Вопрос: может ли этот протеус при  длительностях от 40 мксек и более адекватно имитировать работу такого устройства?

да может

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

@IMXO , наконец, протокол заработал. Увеличил все длительности импульсов в 4 раза от исходных (поскольку у меня кварцы 8 МГц), на выходе приемного МК стоит 7-сегм. индикатор, и он сначала показывал декодированные числа в 2 раза большие, чем передавались, оказалось, в коде функции приемника есть небольшая ошибка, исправил, теперь все правильно работает (на макет. плате, МК соединены проводом).

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

  • 3 недели спустя...

В библиотеке ADC в mikroC почему-то указано,что эта библиотека работает с RC-тактовым генератором, но ведь её используют и с кварцами? Почему там так указано?

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

  • 2 месяца спустя...

Изучаю СИ по книге Ритчи и Кернигана. Задание из книги: "Проверьте, что выражение getchar() != EOF действительно равно 1 или 0."

Получилась следующая программа:

#include <stdio.h>

main()
{
  int c;
  
  	while(c=(getchar() !=EOF))
	{
		printf("%d\n", c);
	}
}

При нажатии клавиш выводит нажатые символы, вместо единиц. Подскажите, где я ошибся.

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

Видимо авторы книги использовали другую версию библиотеки "stdio.h". Или другой стандарт языка СИ. Следующая программа из книги так-же не правильно работает. Просто выводит на экран символы, вводимые с клавиатуры. Попробую другой компилятор.

Подсчет символов.PNG

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

20 часов назад, IMXO сказал:

в Си нет переменных типа булеан,  выражение считается истинным, если оно не равно ноль.

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

Почему не работает - не знаю, я протестировал вот здесь https://ideone.com/AeGca9 - работает, все нормально

43 минуты назад, Kopetan_Nemo сказал:

Просто выводит на экран символы, вводимые с клавиатуры.

Возможно, проблема в том, что stdin у @Kopetan_Nemo по каким-то причинам не связан с консолью, и поэтому вводимые с консоли символы никуда не попадают. Попробуйте запустить программу в командной строке test.exe < data.txt, где data.txt - текстовый файл, в котором надо подсчитать символы.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

Просто test.exe запускается, с приставкой <data.txt, пишет "Не удается найти указанный файл". Оба файла в одной папке. Также пробовал прописывать путь для текстового файла - не находит. В архиве СИ файл и EXE-шник.

test.zip

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

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

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

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

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

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

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

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

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

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

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

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