ну так этот аспект к округлению имеет опосредствованное отношение, это скорее проблема форматирования вывода... лично я решал в одном из своих проектов эту проблему так: для положительных температур ниже 100 градусов выводил с десятыми без округления, для температур от 100 и выше - без десятых (считая, что при таких температурах десятые доли уже не особо что-либо решают... например, в бане). аналогично для отрицательных температур... т.е. пока место под десятые есть за счет старших разрядов - десятые выводил, а иначе ими жертвовал в пользу старших разрядов и знака.AndTer писал(а):Ну как же, например просто нет места на индикаторе для 4 цифр + знак + символ температуры. Не делать же бегущей строкой)
Потому и не всегда.
Мелкие вопросы по МК и ПЛИС.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Mem
- Поставщик валерьянки для Кота
- Сообщения: 1915
- Зарегистрирован: Вт апр 17, 2012 14:20:59
- Откуда: Новокузнецк
Re: Мелкие вопросы по МК и ПЛИС.
Пытаюсь разобраться с работой УЗ датчика расстояния HC-SR04 и подружить его с пиком. Нашел хорошее описание работы и разные примеры программ для этого: https://electrosome.com/hc-sr04-ultrasonic-sensor-pic/
Но вот никак не хочет работать таймер в Proteus и постоянно выдает сообщение "вне радиуса", хотя импульсы с датчика приходят как положено и никаких проблем с его моделированием нет. Но вот подсчет времени в прерывании не происходит и не могу понять почему.
Использую программу для MikroC:
Схема:

Всё как на том сайте, частота МК 8 МГц. Но если использовать готовые скомпилированные прошивки, которые можно скатать там же, то происходит сброс мк watchdog'ом.
Прописав значение a = 10, выдает как положено расстояние в 11 см. А с датчиком ничего.
Где ошибка? В программе или протеусе?
Но вот никак не хочет работать таймер в Proteus и постоянно выдает сообщение "вне радиуса", хотя импульсы с датчика приходят как положено и никаких проблем с его моделированием нет. Но вот подсчет времени в прерывании не происходит и не могу понять почему.
Использую программу для MikroC:
Спойлер
Код: Выделить всё
// LCD module connections
sbit LCD_RS at RD2_bit;
sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
// End LCD module connections
int a;
//Interrupt function will be automatically executed on Interrupt
void interrupt()
{
if(INTCON.RBIF == 1) //Makes sure that it is PORTB On-Change Interrupt
{
INTCON.RBIE = 0; //Disable On-Change Interrupt
if(PORTB.F4 == 1) //If ECHO is HIGH
T1CON.F0 = 1; //Start Timer
if(PORTB.F4 == 0) //If ECHO is LOW
{
T1CON.F0 = 0; //Stop Timer
a = (TMR1L | (TMR1H<<8))/58.82; //Calculate Distance
}
}
INTCON.RBIF = 0; //Clear PORTB On-Change Interrupt flag
INTCON.RBIE = 1; //Enable PORTB On-Change Interrupt
}
void main()
{
char txt[7];
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
TRISB = 0b00010000;
INTCON.GIE = 1; //Global Interrupt Enable
INTCON.RBIF = 0; //Clear PORTB On-Change Interrupt Flag
INTCON.RBIE = 1; //Enable PORTB On-Change Interrupt
Lcd_Out(1,1,"Developed By");
Lcd_Out(2,1,"electroSome");
Delay_ms(3000);
Lcd_Cmd(_LCD_CLEAR);
T1CON = 0x10; //Initializing Timer Module
while(1)
{
TMR1H = 0; //Setting Initial Value of Timer
TMR1L = 0; //Setting Initial Value of Timer
a = 0;
PORTB.F0 = 1; //TRIGGER HIGH
Delay_us(10); //10uS Delay
PORTB.F0 = 0; //TRIGGER LOW
Delay_ms(100); //Waiting for ECHO
a = a + 1; //Error Correction Constant
if(a>2 && a<400) //Check whether the result is valid or not
{
IntToStr(a,txt);
Ltrim(txt);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Distance = ");
Lcd_Out(1,12,txt);
Lcd_Out(1,15,"cm");
}
else
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Out of Range");
}
Delay_ms(400);
}
}Всё как на том сайте, частота МК 8 МГц. Но если использовать готовые скомпилированные прошивки, которые можно скатать там же, то происходит сброс мк watchdog'ом.
Прописав значение a = 10, выдает как положено расстояние в 11 см. А с датчиком ничего.
Где ошибка? В программе или протеусе?
Главный инженер проекта - человек, который как никто другой знает, что приближаться к спроектированной им хрени близко не стоит.
-
Самсусамыч
Re: Мелкие вопросы по МК и ПЛИС.
Давно замечено, что протеус с таймерами бывает работает не корректно. Свои программы проверяю только на отладочных платах (на железе).
-
Chettuser
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Лог в Atollic'е:

Что означает указанный адрес PC?
После опроса ST-Link'а переключается на STM32CubeProgrammer:
Что не так с этим STM32CubeProgrammer?
PS: Поставил STM32CubeProgrammer (в нём тот же _CLI.exe) - Firmware upgrade работает! апгрэйдит SW ST-Link'а до V2J33S0, но при этом в упор не видит:

Что означает указанный адрес PC?
После опроса ST-Link'а переключается на STM32CubeProgrammer:
Спойлер
Код: Выделить всё
STMicroelectronics ST-LINK GDB server. Version 5.1.0
Copyright (c) 2018, STMicroelectronics. All rights reserved.
Starting server with the following options:
Persistent Mode : Disabled
LogFile Name : C:\Users\Vovan\Atollic\TrueSTUDIO\STM32_workspace_9.3\prt1\Debug\st-link_gdbserver_log.txt
Logging Level : 31
Listen Port Number : 61234
Status Refresh Delay : 15s
Verbose Mode : Enabled
SWD Debug : Enabled
Hardware watchpoint supported by the target
SWD frequency = 4000 kHz
ST-LINK Firmware version : V2J31S0
Device ID: 0x440
PC: 0x8000ab0
ST-LINK device status: HALT_MODE
ST-LINK detects target voltage = 2.92 V
ST-LINK device status: HALT_MODE
ST-LINK device initialization OK
Waiting for debugger connection...
Waiting for connection on port 61234...
Accepted connection on port 61234...
Debugger connected
Enter STM32_AppReset() function
NVIC_DFSR_REG = 0x00000009
XPSR = 0xC1000000
------ Switching to STM32CubeProgrammer -----
-------------------------------------------------------------------
STM32CubeProgrammer v1.3.0
-------------------------------------------------------------------
Log output file: C:\Users\Vovan\AppData\Local\Temp\STM32CubeProgrammer_a04208.log
Error: No debug probe detected.
Encountered Error when opening C:\Program Files (x86)\Atollic\TrueSTUDIO for STM32 9.3.0\Servers\STM32CubeProgrammer\bin\STM32_Programmer_CLI.exe
------ Switching context -----
Hardware watchpoint supported by the target
SWD frequency = 4000 kHz
ST-LINK Firmware version : V2J31S0
Device ID: 0x440
PC: 0x8000ab0
ST-LINK detects target voltage = 2.91 V
ST-LINK device status: HALT_MODE
ST-LINK device initialization OK
Error in STM32CubeProgrammer
ST-LINK device status: RUN_MODE
Wait after kill 1000 msec
Debugger connection lost.
Shutting down...PS: Поставил STM32CubeProgrammer (в нём тот же _CLI.exe) - Firmware upgrade работает! апгрэйдит SW ST-Link'а до V2J33S0, но при этом в упор не видит:
- GARMIN
- Держит паяльник хвостом
- Сообщения: 952
- Зарегистрирован: Вс дек 02, 2012 16:58:33
- Откуда: от туда
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Процессор стартует с адреса 0x08000000.
По этому адресу стоит переход на начало программы, так как вектор прерывания по старту процессора находится по этому же адресу 0x08000000.
За ним находится таблица прерываний процессора.
Следующая выполняемая команда как раз находится по адресу 0x08000ab0. Читайте устройство и работу процессора.
По этому адресу стоит переход на начало программы, так как вектор прерывания по старту процессора находится по этому же адресу 0x08000000.
За ним находится таблица прерываний процессора.
Следующая выполняемая команда как раз находится по адресу 0x08000ab0. Читайте устройство и работу процессора.
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Это я знаю. Меня смутил "PC"
Причём адресация разная при разных пустых проектах созданных через мастер. Вот это и удивляет!
Проблема вроде решилась сносом Atollic 9.3.0 и установкой 9.0.0.
Печалька... На другой машине (чужой) всё работало "из коробки" с тем же дистрибутивом 9.3.0.
Причём адресация разная при разных пустых проектах созданных через мастер. Вот это и удивляет!
Проблема вроде решилась сносом Atollic 9.3.0 и установкой 9.0.0.
Печалька... На другой машине (чужой) всё работало "из коробки" с тем же дистрибутивом 9.3.0.
- GARMIN
- Держит паяльник хвостом
- Сообщения: 952
- Зарегистрирован: Вс дек 02, 2012 16:58:33
- Откуда: от туда
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Точнее, после сброса процессора в указатель стека и программный счётчик грузятся данные, расположенные по адресу 0х08000000. Вот после сброса PC и указывает на этот адрес. А он в общем случае может быть любым, какой ему назначит компилятор.
- Dentorol
- Нашел транзистор. Понюхал.
- Сообщения: 155
- Зарегистрирован: Пн июн 21, 2010 19:57:07
- Откуда: Россия - родина моя
Re: Мелкие вопросы по МК и ПЛИС.
Здравствуйте!
Делаю GSM-контроллер для телеметрии и малой автоматизации. Использую микроконтроллер STM32F103C8T6 и GSM-модуль SIM800L.
Развел плату так, что кварцевые резонаторы оказались под GSM-модулем - с обратной стороны платы. GSM-модуль является источником электромагнитных излучений. Насколько критично такое расположение кварцевых резонаторов?
Плату уже вытравил и почти спаял (осталось запаять GSM-модуль). При разводке на это не обратил внимания. А переразводить плату очень муторно (для меня это одна из самых нудных работ) - и так при разводке все мозги сломал - плата делалась под готовый корпус - места мало.
Да, я могу запаять GSM-модуль и проверить, как будет работать (хотя я почти уверен, что будет работать - но вопрос помех, надежности и стабильности остается открытым). Для полной проверки необходимо много времени и проверять при разных условиях.

Соответственно вопрос: кто-то устанавливал кварцевые резонаторы под GSM-модулем? И как надежно, стабильно работал микроконтроллер?
Делаю GSM-контроллер для телеметрии и малой автоматизации. Использую микроконтроллер STM32F103C8T6 и GSM-модуль SIM800L.
Развел плату так, что кварцевые резонаторы оказались под GSM-модулем - с обратной стороны платы. GSM-модуль является источником электромагнитных излучений. Насколько критично такое расположение кварцевых резонаторов?
Плату уже вытравил и почти спаял (осталось запаять GSM-модуль). При разводке на это не обратил внимания. А переразводить плату очень муторно (для меня это одна из самых нудных работ) - и так при разводке все мозги сломал - плата делалась под готовый корпус - места мало.
Да, я могу запаять GSM-модуль и проверить, как будет работать (хотя я почти уверен, что будет работать - но вопрос помех, надежности и стабильности остается открытым). Для полной проверки необходимо много времени и проверять при разных условиях.
Соответственно вопрос: кто-то устанавливал кварцевые резонаторы под GSM-модулем? И как надежно, стабильно работал микроконтроллер?
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Как называются штыревые разъёмы по краям плат Discovery и Nucleo от ST? На новых Nucleo-xxx не запаяны.
-
Самсусамыч
Re: Мелкие вопросы по МК и ПЛИС.
PBD-40 (Гнездо на плату двухрядное 40 контактов, шаг 2.54) Линейка контактов: 6; 8; 10; 16; 20; 40; 80.
Тыц
Тыц
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Нее... Это типа PLD, вот только штыри длинные - торчат с двух сторон, как бы насквозь платы.
Последний раз редактировалось Chettuser Сб апр 27, 2019 07:47:03, всего редактировалось 1 раз.
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Вот, разъёмы с краю стоят. Такие:

Они по 19 мм высотой. А вот как их назвать не знаю - это не обычные PLD, а что то другое.

Они по 19 мм высотой. А вот как их назвать не знаю - это не обычные PLD, а что то другое.
- Starichok51
- Модератор
- Сообщения: 19043
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: Мелкие вопросы по МК и ПЛИС.
PLS нужно искать. например:
https://ru.aliexpress.com/wholesale?Sea ... y&jump=afs
https://ru.aliexpress.com/wholesale?Sea ... y&jump=afs
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
-
Самсусамыч
Re: Мелкие вопросы по МК и ПЛИС.
Верхние по ссылке как раз подойдут… они даже немного длиннее 21 мм… пластмассу переместив на середину разъёма получиться то что надо.
Или искать у других продавцов готовые...
зы. Вот можно здесь посмотреть
Или тут
Тут есть 19 мм
Или искать у других продавцов готовые...
зы. Вот можно здесь посмотреть
Или тут
Тут есть 19 мм
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Как я понял, это что то типа межплатных разъъёмов. Буду искать.
Что интересно - на старых DISCOVERY они короче. В спецификации тишина (может не там смотрю?).
Что интересно - на старых DISCOVERY они короче. В спецификации тишина (может не там смотрю?).
опорное подключение
Здравствуйте! подскажите можно ли резистор от TL431 который идёт на вход AREF МК подключать к AVCC?
-
Самсусамыч
Re: опорное подключение
Аналоговое питание должно соответствовать напряжению питания МК.
Re: Мелкие вопросы по МК и ПЛИС.
Уважаемые коты, может вы поможете разобраться с моим вопросом.
По не понятным причинам, автор этого проекта, заблокировал меня на своем сайте. Видимо за то, что я живу в Луганске, а он считает нас террористами.
В общем, мне нужно изменить температуру с 91 на 94 градуса, а с 97 на 100 и получить файл HEX, для заливки в контроллер. Если не сложно, хоть в 2х словах расскажите как и в каких программах это делать.
Я редактировал bin файл, в программе HxD. Там-же экспортировал его как HEX. Но получалась какая то фигня.
Сделал в программе установку пороговых значений через запись в EEPROM при прошивке МК.
Ячейка с адресом 0x00 - нижний порог (по умолчанию 91 или 0x5B в hex-формате), адрес 0x01 - верхний порог (по умолчанию 97 или 0x61 в hex-формате).
В архиве файлы EEPROM (два варианта - bin и eep). Вы можете открыть их перед прошивкой в программе-прошивалке, отредактировать и залить в EEPROM микроконтроллера.
По не понятным причинам, автор этого проекта, заблокировал меня на своем сайте. Видимо за то, что я живу в Луганске, а он считает нас террористами.
В общем, мне нужно изменить температуру с 91 на 94 градуса, а с 97 на 100 и получить файл HEX, для заливки в контроллер. Если не сложно, хоть в 2х словах расскажите как и в каких программах это делать.
Я редактировал bin файл, в программе HxD. Там-же экспортировал его как HEX. Но получалась какая то фигня.
- Вложения
-
- Vent.zip
- (1.65 КБ) 181 скачивание
Последний раз редактировалось Niks13 Сб май 11, 2019 10:18:07, всего редактировалось 1 раз.
