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

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


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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

те настроить таймер вызывает сложности, но считать показания датчика в попугаях АЦП перевести в цифру, потом в строку, потом создать кодовую посылку, добавить 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 пользователей онлайн

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

  • Сообщения

    • Привет всем  В макете авторская входная  часть и VT1 - КТ368 , в процессе ... 
    • на сколько важны/ответственный в этой схеме транзисторы 1837/4793? Пришли поддельные похоже, вряд ли такое качество может позволить себе завод!?!?!?  
    • Шота дохрена. Это если мультик может на килогерце. Обычно нет, предел 400 Гц.
    • Да, сначала был написан бутлодер для тини 24. Там нет выделенной памяти под бутлодер и заморочек с областями откуда можно записывать и перезаписывать флеш из программы, там все просто! Также там нет УАРТА, пришлось написать. Ну и самое главное: перезаписывай любые страницы флеш из любого места! В тини 24 под бутлодер ушло 48% памяти. В проекте технологи выделили слишком мало физического места под схему. Потом развел плату, оказалось, что места не так уж и мало. Потом выяснилось, что пинов впритык, и если будет дальнейшее расширение, их может не хватить. И после долгих (ну очень долгих) изысканий (цена, доступность, размеры) остановился на 88 (очень низкая цена, корпус чуть больше чем у 24, датчик температуры, а это важно, но не критически). Да, и сейчас все программируют на С и др. языках высокого уровня, что занимает очень (ну очень) много места, и чипы с небольшой памятью остаются не востребованы, и как следствие низкий спрос, и низкая цена!!! И при тупом переносе программы перезаписи страниц флеш программа не заработала... Ну и пошли изыскания, и я набрел на ВАШ проект, самый полный и законченный на то время. Нужно было выяснить чип который был у меня битый или я что-то упустил при программировании? (в бутлодерах я новичек) Недостаток 88 на сегодня, то что из пользовательской памяти нельзя перепрограммировать флеш, хотя страница стирается.   По поводу ВАШЕЙ программы: выяснилось, что при включенном фьюзе WDT в конфигурации, соединение не устанавливается, а в хелпе это не отражено. В некоторых ситуациях соединение можно восстановить лишь отключив / включив питание, сброс через ножку ресет не помагает. Будем копать дальше,... и глубже....!   Иногда при "установить соединение" выдается сообщение, "соединение не установлено", а на осциллографе виден ответ с чипа?
    • Сейчас по входу стоит керамика 0,1 мкФ + электролит 220 мкФ, иголок вроде нет, ну во всяком случае старичек С1-93 их не показывает.
    • Платы материнки и УВ пока в брак.  - Семён Семёныч... (с) Вы ничего не забыли, сэр? Как вы собрались регулировать УВ по уровню выходного сигнала??? Решение уже есть, пока в процессе. Вот так оно лучше работает.
  • Похожий контент

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