Aleksandr1111 Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 (изменено) @IMXO , @Yurkin2015 , спасибо за разъяснения. Вообще, я хочу сделать беспроводной термометр на 2 измеряемые точки с аналоговыми датчиками (один - отечественный К1019ем1). Для передачи данных хотел сначала использовать библиотеку Манчестерского кода, а потом набрел на интересную статью http://www.romanblack.com/RF/cheapRFmodules.htm (на англ.) Там, в конце, есть код и для приемника, но насчет TMR0 мне было не понятно (настройка, чтение) Изменено 26 июля, 2017 пользователем Aleksandr1111 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 11 минуту назад, Aleksandr1111 сказал: Там, в конце, есть код и для приемника этот код не для 628го 23 минуты назад, Aleksandr1111 сказал: беспроводной термометр на 2 измеряемые точки это как? два термометра со своими передатчиками или общий передатчик на один приемник? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Aleksandr1111 Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 (изменено) 26 минут назад, IMXO сказал: этот код не для 628го Это понятно ,пытаюсь адаптировать для 628. 26 минут назад, IMXO сказал: два термометра со своими передатчиками или общий передатчик на один приемник? Наверно, общий передатчик (а датчики в двух теплицах), причем передатчик и приемник, возможно, самодельные.Там еще упоминается, что все это тестировалось на Pic18 с кварцами 20 МГц, а если у меня 8 МГц, то, боюсь, что при таких длительностях передаваемых нулей и единиц (порядка 80 мксек) приёмный МК не сможет корректно обработать поступающие импульсы. Изменено 26 июля, 2017 пользователем Aleksandr1111 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
IMXO Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 36 минут назад, Aleksandr1111 сказал: ,пытаюсь адаптировать для 628. те аналоговые датчики вы уже адаптировали? не с того вы начинаете... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksandr1111 Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 17 минут назад, IMXO сказал: те аналоговые датчики вы уже адаптировали? Нет, но, мне кажется, это не так сложно, примеры кодов есть, в передатчике планирую использовать Pic12f675 с его ацп. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 те настроить таймер вызывает сложности, но считать показания датчика в попугаях АЦП перевести в цифру, потом в строку, потом создать кодовую посылку, добавить CRC(контрольную сумму) , преобразовать все это в манчестер - конечно "это не так сложно" 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksandr1111 Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 Там будет не Манчестер. Да, работы над этим много. А зачем в строку? Результат в байты, посыл 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 Только что, Aleksandr1111 сказал: А зачем в строку? Результат в байты, посыл когда соберешь в живую узнаешь 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksandr1111 Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 (изменено) @IMXO , а вообще, можно останавливать/запускать в нужный момент счетчик с помощью бита T0CS, как написал Yurkin2015 ? И еще: запись while (PORTA.F0) continue; значит ли, что только когда PORTA.F0 станет = 1, выполнение кода пойдет дальше по тексту, иначе программа будет ждать выполнения условия? Изменено 26 июля, 2017 пользователем Aleksandr1111 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 для 12 16 пиков нет, TMR0 считает постоянно исключение новые серии PICxxF1xxx и запускает/останавливает бит TMR0ON, бит T0CS или внутренний генератор или внешний 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Yurkin2015 Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 15 минут назад, Aleksandr1111 сказал: с помощью бита T0CS Поясняю. При установке бита в 1 таймер отключается от внутреннего генератора, поэтому и останавливается. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 и при смене уровней на RA4 продолжает считать... 29 минут назад, Aleksandr1111 сказал: значит ли, что только когда PORTA.F0 станет = 1, выполнение кода пойдет дальше по тексту, с точностью до наоборот, 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksandr1111 Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 32 минуты назад, IMXO сказал: точностью до наоборот, Т.е. continue - имеется ввиду "продолжать находится в этом цикле, если условие истинно", и только, когда условие даст ложный рез., произойдет выход из цикла, и выполнение прогр. пойдет дальше, так? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 26 июля, 2017 Поделиться Опубликовано 26 июля, 2017 нет не так. continue - продолжить , для WHILE перейти на проверку условия изучайте: раздел операторы перехода 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksandr1111 Опубликовано 29 июля, 2017 Поделиться Опубликовано 29 июля, 2017 Чем отличается запись Delay_us(80-1); от просто Delay_us(80); в Си? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 29 июля, 2017 Поделиться Опубликовано 29 июля, 2017 80-1=79 ..... стандартный прием написания кода 80 - нужная задержка -1 - коррекция ошибки МК 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksandr1111 Опубликовано 30 июля, 2017 Поделиться Опубликовано 30 июля, 2017 (изменено) @IMXO , скажите, пожалуйста, у меня в проекте Протеуса 2 МК PIC16F628A, 1-ый передает данные по протоколу, согласно прикрепленному рис., 2-ой соединен через резистор 510 Ом и принимает их (статью с кодами для приемника и передатчика Вы видели несколькими постами выше), только у меня все длительности импульсов увеличены в 2 раза. Так вот передатчик-то работает и в Протеусе, и в железе, (по осциллографу), а на индикаторе приемника передаваемое число не меняется (в Протеусе).Вопрос: может ли этот протеус при длительностях от 40 мксек и более адекватно имитировать работу такого устройства? Изменено 30 июля, 2017 пользователем Aleksandr1111 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 30 июля, 2017 Поделиться Опубликовано 30 июля, 2017 17 минут назад, Aleksandr1111 сказал: Вопрос: может ли этот протеус при длительностях от 40 мксек и более адекватно имитировать работу такого устройства? да может 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksandr1111 Опубликовано 2 августа, 2017 Поделиться Опубликовано 2 августа, 2017 (изменено) @IMXO , наконец, протокол заработал. Увеличил все длительности импульсов в 4 раза от исходных (поскольку у меня кварцы 8 МГц), на выходе приемного МК стоит 7-сегм. индикатор, и он сначала показывал декодированные числа в 2 раза большие, чем передавались, оказалось, в коде функции приемника есть небольшая ошибка, исправил, теперь все правильно работает (на макет. плате, МК соединены проводом). Изменено 2 августа, 2017 пользователем Aleksandr1111 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksandr1111 Опубликовано 19 августа, 2017 Поделиться Опубликовано 19 августа, 2017 В библиотеке ADC в mikroC почему-то указано,что эта библиотека работает с RC-тактовым генератором, но ведь её используют и с кварцами? Почему там так указано? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Kopetan_Nemo Опубликовано 20 октября, 2017 Поделиться Опубликовано 20 октября, 2017 Изучаю СИ по книге Ритчи и Кернигана. Задание из книги: "Проверьте, что выражение getchar() != EOF действительно равно 1 или 0." Получилась следующая программа: #include <stdio.h> main() { int c; while(c=(getchar() !=EOF)) { printf("%d\n", c); } } При нажатии клавиш выводит нажатые символы, вместо единиц. Подскажите, где я ошибся. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 20 октября, 2017 Поделиться Опубликовано 20 октября, 2017 в Си нет переменных типа булеан, выражение считается истинным, если оно не равно ноль. while(c=(getchar()!=EOF) ? 1 : 0 ) { printf("%d\n", c); } 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Kopetan_Nemo Опубликовано 21 октября, 2017 Поделиться Опубликовано 21 октября, 2017 Видимо авторы книги использовали другую версию библиотеки "stdio.h". Или другой стандарт языка СИ. Следующая программа из книги так-же не правильно работает. Просто выводит на экран символы, вводимые с клавиатуры. Попробую другой компилятор. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
ARV Опубликовано 21 октября, 2017 Поделиться Опубликовано 21 октября, 2017 20 часов назад, IMXO сказал: в Си нет переменных типа булеан, выражение считается истинным, если оно не равно ноль. Типа нет, но результат логического выражения всегда будет 0 или 1. Программа учащегося написана верно, ваш вариант избыточен. Почему не работает - не знаю, я протестировал вот здесь https://ideone.com/AeGca9 - работает, все нормально 43 минуты назад, Kopetan_Nemo сказал: Просто выводит на экран символы, вводимые с клавиатуры. Возможно, проблема в том, что stdin у @Kopetan_Nemo по каким-то причинам не связан с консолью, и поэтому вводимые с консоли символы никуда не попадают. Попробуйте запустить программу в командной строке test.exe < data.txt, где data.txt - текстовый файл, в котором надо подсчитать символы. 1 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
Kopetan_Nemo Опубликовано 21 октября, 2017 Поделиться Опубликовано 21 октября, 2017 Просто test.exe запускается, с приставкой <data.txt, пишет "Не удается найти указанный файл". Оба файла в одной папке. Также пробовал прописывать путь для текстового файла - не находит. В архиве СИ файл и EXE-шник. test.zip 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.