Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Re: Мелкие вопросы по МК и ПЛИС.

Вт фев 12, 2019 06:38:33

AndTer писал(а):Ну как же, например просто нет места на индикаторе для 4 цифр + знак + символ температуры. Не делать же бегущей строкой)
Потому и не всегда.
ну так этот аспект к округлению имеет опосредствованное отношение, это скорее проблема форматирования вывода... лично я решал в одном из своих проектов эту проблему так: для положительных температур ниже 100 градусов выводил с десятыми без округления, для температур от 100 и выше - без десятых (считая, что при таких температурах десятые доли уже не особо что-либо решают... например, в бане). аналогично для отрицательных температур... т.е. пока место под десятые есть за счет старших разрядов - десятые выводил, а иначе ими жертвовал в пользу старших разрядов и знака.

Re: Мелкие вопросы по МК и ПЛИС.

Чт апр 04, 2019 13:30:07

Пытаюсь разобраться с работой УЗ датчика расстояния HC-SR04 и подружить его с пиком. Нашел хорошее описание работы и разные примеры программ для этого: https://electrosome.com/hc-sr04-ultrasonic-sensor-pic/

Но вот никак не хочет работать таймер в 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: Мелкие вопросы по МК и ПЛИС.

Пт апр 05, 2019 13:18:08

Давно замечено, что протеус с таймерами бывает работает не корректно. Свои программы проверяю только на отладочных платах (на железе).

Re: Мелкие вопросы по МК и ПЛИС.

Вс апр 07, 2019 19:23:55

Скачал и установил Atollic для STM32F030. Попробовал создать примитивный пример для отладки STM32F0308-DISCO. Однако при попытке дебажить вываливает ошибку:
Изображение
В ST-Link стоит та версия, которую попросил Atollic (V2.J31.S0), хотя есть новее (V2.J33.S0).
Что я делаю не так?
Спасибо.

Re: Мелкие вопросы по МК и ПЛИС.

Сб апр 20, 2019 23:30:51

Лог в Atollic'е:
Изображение
Что означает указанный адрес 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...

Что не так с этим STM32CubeProgrammer?

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

Re: Мелкие вопросы по МК и ПЛИС.

Вс апр 21, 2019 09:34:37

Процессор стартует с адреса 0x08000000.
По этому адресу стоит переход на начало программы, так как вектор прерывания по старту процессора находится по этому же адресу 0x08000000.
За ним находится таблица прерываний процессора.
Следующая выполняемая команда как раз находится по адресу 0x08000ab0. Читайте устройство и работу процессора.

Re: Мелкие вопросы по МК и ПЛИС.

Вс апр 21, 2019 12:56:43

Это я знаю. Меня смутил "PC" :))
Причём адресация разная при разных пустых проектах созданных через мастер. Вот это и удивляет!
Проблема вроде решилась сносом Atollic 9.3.0 и установкой 9.0.0.
Печалька... На другой машине (чужой) всё работало "из коробки" с тем же дистрибутивом 9.3.0.

Re: Мелкие вопросы по МК и ПЛИС.

Вс апр 21, 2019 14:48:36

Точнее, после сброса процессора в указатель стека и программный счётчик грузятся данные, расположенные по адресу 0х08000000. Вот после сброса PC и указывает на этот адрес. А он в общем случае может быть любым, какой ему назначит компилятор.

Re: Мелкие вопросы по МК и ПЛИС.

Пн апр 22, 2019 13:07:59

Здравствуйте!

Делаю GSM-контроллер для телеметрии и малой автоматизации. Использую микроконтроллер STM32F103C8T6 и GSM-модуль SIM800L.

Развел плату так, что кварцевые резонаторы оказались под GSM-модулем - с обратной стороны платы. GSM-модуль является источником электромагнитных излучений. Насколько критично такое расположение кварцевых резонаторов?

Плату уже вытравил и почти спаял (осталось запаять GSM-модуль). При разводке на это не обратил внимания. А переразводить плату очень муторно (для меня это одна из самых нудных работ) - и так при разводке все мозги сломал - плата делалась под готовый корпус - места мало.

Да, я могу запаять GSM-модуль и проверить, как будет работать (хотя я почти уверен, что будет работать - но вопрос помех, надежности и стабильности остается открытым). Для полной проверки необходимо много времени и проверять при разных условиях.

Изображение Изображение

Соответственно вопрос: кто-то устанавливал кварцевые резонаторы под GSM-модулем? И как надежно, стабильно работал микроконтроллер?

Re: Мелкие вопросы по МК и ПЛИС.

Пт апр 26, 2019 04:31:44

Как называются штыревые разъёмы по краям плат Discovery и Nucleo от ST? На новых Nucleo-xxx не запаяны.

Re: Мелкие вопросы по МК и ПЛИС.

Пт апр 26, 2019 07:58:15

PBD-40 (Гнездо на плату двухрядное 40 контактов, шаг 2.54) Линейка контактов: 6; 8; 10; 16; 20; 40; 80.
Тыц

Re: Мелкие вопросы по МК и ПЛИС.

Пт апр 26, 2019 18:40:18

Нее... Это типа PLD, вот только штыри длинные - торчат с двух сторон, как бы насквозь платы.
Последний раз редактировалось Chettuser Сб апр 27, 2019 07:47:03, всего редактировалось 1 раз.

Re: Мелкие вопросы по МК и ПЛИС.

Пт апр 26, 2019 20:01:36

Такие (у этого же продавца)?
Изображение


Тыц

Re: Мелкие вопросы по МК и ПЛИС.

Сб апр 27, 2019 07:56:27

Вот, разъёмы с краю стоят. Такие:
Изображение
Они по 19 мм высотой. А вот как их назвать не знаю - это не обычные PLD, а что то другое.

Re: Мелкие вопросы по МК и ПЛИС.

Сб апр 27, 2019 08:52:58

PLS нужно искать. например:
https://ru.aliexpress.com/wholesale?Sea ... y&jump=afs

Re: Мелкие вопросы по МК и ПЛИС.

Сб апр 27, 2019 08:57:10

Верхние по ссылке как раз подойдут… они даже немного длиннее 21 мм… пластмассу переместив на середину разъёма получиться то что надо. :)
Или искать у других продавцов готовые...

зы. Вот можно здесь посмотреть

Или тут

Тут есть 19 мм

Re: Мелкие вопросы по МК и ПЛИС.

Вс апр 28, 2019 08:53:42

Как я понял, это что то типа межплатных разъъёмов. Буду искать.
Что интересно - на старых DISCOVERY они короче. В спецификации тишина (может не там смотрю?).

опорное подключение

Ср май 08, 2019 16:01:13

Здравствуйте! подскажите можно ли резистор от TL431 который идёт на вход AREF МК подключать к AVCC?

Re: опорное подключение

Ср май 08, 2019 17:39:29

Аналоговое питание должно соответствовать напряжению питания МК.

Re: Мелкие вопросы по МК и ПЛИС.

Сб май 11, 2019 07:24:14

Уважаемые коты, может вы поможете разобраться с моим вопросом.
Сделал в программе установку пороговых значений через запись в 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 KiB) Скачиваний: 142
Последний раз редактировалось Niks13 Сб май 11, 2019 10:18:07, всего редактировалось 1 раз.
Ответить