76

Re: Частотомер

freq = float(TIMER3_BASE->CNT<<16  | TIMER2_BASE->CNT) * 0.997594448 ;
freq =long(freq)/1000*1000;

77

Re: Частотомер

сообщения 74 и 76 одинаковы -----------при проверке  ошибка

78

Re: Частотомер

Опубликуйте скетч на форуме целиком

79

Re: Частотомер

Данный контент доступен только зарегистрированным пользователям.

80

Re: Частотомер

#include <LedControl.h>//https://github.com/wayoda/LedControl/archive/master.zip  
     LedControl lc = LedControl(PB1,PB10,PB11,1);// DIN(PB1), CLK(PB10), CS(PB11)
 
     volatile int  mon_flag;
     unsigned long freq;
     byte fq[8],pd,x;
 
void setup() {
 Serial.begin(9600);
      lc.shutdown(0, false); 
      lc.setIntensity(0,8); // ÿðêîñòü 0-15
      lc.clearDisplay(0); 
    pinMode(PA15,INPUT_PULLDOWN); // âõîä ÷àñòîòîìåðà
 
    RCC_BASE->APB1ENR|= (1<<2)|(1<<1)|(1<<0); //âêëþ÷èòü òàêòèðîâàíèå tim-2,3,4
    RCC_BASE->APB2ENR|= (1<<3)|(1<<11)|(1<<2)|(1<<0)|(1<<4);////âêëþ÷èòü òàêòèðîâàíèå port-a-b-c,tim1
    AFIO_BASE->MAPR=(1<<8)|(1<<6); //tim 1 && tim 2 Partial remap
}
 
void loop() {
 freq_meter();
 Serial.println(freq);
  fq[7]= freq/10000000%10;
  fq[6]= freq/1000000%10;
  fq[5]= freq/100000%10;
  fq[4]= freq/10000%10;
  fq[3]= freq/1000%10;
  fq[2]= freq/100%10;
  fq[1]= freq/10%10;
  fq[0]= freq%10%10;
 
  if(freq>=10000000){x=8;}
  if(freq<10000000){lc.setRow(0,7,0);x=7;}
  if(freq<1000000){lc.setRow(0,6,0);x=6;}
  if(freq<100000){lc.setRow(0,5,0);x=5;}
  if(freq<10000){lc.setRow(0,4,0);x=4;}
  if(freq<1000){lc.setRow(0,3,0);x=3;}
  if(freq<100){lc.setRow(0,2,0);x=2;}
  if(freq<10){lc.setRow(0,1,0);x=1;}
 
  for(int i = 0;i < x;i++){
  if(i==3){pd=true;}
  else if(i==6){pd=true;}
  else if(i==9){pd=true;}
  else{pd=false;}
  lc.setDigit(0,i,fq[i],pd);}
}
 
void freq_meter(){  // http://arduino.ru/forum/proekty/generator-s-reguliruemoei-chastotoi-na-arduino#comment-296530
   __asm volatile( "cpsid i" );
   /// Timer2 ñ÷žò ìëàäøèõ 16 áèò
    TIMER2_BASE->CR1=0;//ñòîï òàéìåð
    TIMER2_BASE->CCER=0; TIMER2_BASE->PSC=0;  TIMER2_BASE->CNT=0; 
    TIMER2_BASE->CCR1=0; TIMER2_BASE->CCR2=0; TIMER2_BASE->CCR3=0; 
    TIMER2_BASE->CCR4=0;TIMER2_BASE->PSC=0;TIMER2_BASE->SR=0;
    TIMER2_BASE->CCMR2=0;
    TIMER2_BASE->CR2=1<<5; //MMS:010 óïðàâëåíèå ïîä÷èížííûì â ðåæèìå "Update" 
    TIMER2_BASE->SMCR= (1<<14);// ECE & TS:000  ðåæèì 2 âíåøíåãî òàêòèðîâàíèÿ & ðàçðåøåíèå ðàáîòû îò òàéìåðà1
    TIMER2_BASE->ARR=65535; //ñ÷èòàòü äî ìàêñèìóìà
    TIMER2_BASE->EGR=1; //ïåðå÷èòàòü ðåãèñòðû.
    TIMER2_BASE->CR1|=(1<<0);//start timer2
   /// Timer3 ñ÷žò ñòàðøèõ 16 áèò
    TIMER3_BASE->CR1=1<<0;//ñòîï òàéìåð
    TIMER3_BASE->CCER=0; TIMER3_BASE->PSC=0; TIMER3_BASE->CNT=0; 
    TIMER3_BASE->CCR1=0; TIMER3_BASE->CCR2=0; TIMER3_BASE->CCR3=0; 
    TIMER3_BASE->CCR4=0;TIMER3_BASE->PSC=0;TIMER3_BASE->SR=0;TIMER3_BASE->CR2=0;  
    TIMER3_BASE->CCMR1=0; 
    TIMER3_BASE->SMCR=(1<<2)|(1<<1)|(1<<0)|(1<<4);//SMS:111 && TS:001  òàêò áðàòü îò 2-ãî òàéìåðà  
    TIMER3_BASE->ARR=65535; //ñ÷èòàòü äî 
    TIMER3_BASE->EGR=1; //ïåðå÷èòàòü ðåãèñòðû.
    TIMER3_BASE->CR1|=(1<<0);//start timer3
 /// íàñòðîéêà âðåìåíè ðàçðåøåíèÿ íà òàéìåðå1 äëÿ òàéìåðà2
    TIMER1_BASE->CR1=(1<<3)|(1<<2);//îäèí èìïóëüñ, áåç ïðåðûâàíèé
    TIMER1_BASE->CNT=0;
    TIMER1_BASE->CR2=(1<<4);  //MMS:001 ñèãíàë ðàçðåøåíèÿ ðàáîòû äðóãèì òàéìåðàì
    TIMER1_BASE->CCER=0;// îòêëþ÷èòü âûõîäû òàéìåðà íà ôèç íîãè
    TIMER1_BASE->PSC=F_CPU/36000 -1 ;// 1999; // 72000000/2000= 36000êÃö òàêòîâàÿ òàéìåðà 
    TIMER1_BASE->ARR=36000;//ñ÷èòàòü äî 36000 (1ñåêóíäà) 
    TIMER1_BASE->EGR=1; //ïåðå÷èòàòü ðåãèñòðû.
    TIMER1_BASE->CR1|=(1<<0);
    __asm volatile( "cpsie i" );
    while (TIMER1_BASE->CR1&1) {asm volatile("nop"); if(mon_flag) {return;}  }
    
freq = float(TIMER3_BASE->CNT<<16  |   TIMER2_BASE->CNT) * 0.99759448;
freq =long(freq)/1000*1000;
}

81

Re: Частотомер

Очень нужна помощь!После прошивки индикатор показывает 72.002.140, что делать?Очень нужен этот частотомер!

82

Re: Частотомер

Опешите подробнее, какой скетч?

83

Re: Частотомер

Пробовал разные и тот что выше.

84

Re: Частотомер

Загружаю через ST-Link V2.

85

Re: Частотомер

После прошивки индикатор показывает 72.002.140,

???

86

Re: Частотомер

Такое впечатление, что индикатор показывает тактовую частоту 72МГц, а не измеренную. Прошу прощения я новичок в STM32 но очень нужен частотомер до 30МГц.

87

Re: Частотомер

Компилировал в ArduinoIDE v2.3.4 выдаёт ошибки, попробовал в v1.8.9 все получилось без ошибок. После вкл. индикатор должен что показывать?(0.000.000)

88

Re: Частотомер

После вкл. индикатор должен что показывать?(0.000.000)

да

89 (2024-12-18 22:05:18 отредактировано ra4amg)

Re: Частотомер

Прошил по этому методу:
Попробуйте прошить stm32 используя - http://rcl-radio.ru/?p=68376
Скетч отсюда:(http://rcl-radio.ru/?p=76772)
Монитор порта показывает 72.002.130
                                         72.002.142
и т.д. Кто-нибудь поможет?
И тоже самое показывает индикатор после включения.

90

Re: Частотомер

http://forum.rcl-radio.ru/uploads/images/2024/12/5fbce0742534854c4e1a276a6cde78b2.png

http://forum.rcl-radio.ru/uploads/images/2024/12/5e6227af2cb1a42787371b5aa240a3d5.png

http://forum.rcl-radio.ru/uploads/images/2024/12/a3b1fe9f795b21f137b6fb0a854d0a48.png

Скетч - http://forum.rcl-radio.ru/viewtopic.php?pid=1154#p1154

91

Re: Частотомер

На всякий случай выберите более старую версию платы как у меня

http://forum.rcl-radio.ru/uploads/images/2024/12/ea8110289dfa0ec56e479e8dff936ed3.png

92

Re: Частотомер

При компиляции появляется:
Предупреждение: Плата STMicroelectronics:stm32:STeaMi не определяет предпочтение 'build.board'. Автоматически устанавливается на: STM32_STEAMI
Не найду эту версию у себя в менеджере плат. Спасибо что помогаете!

93

Re: Частотомер

Плата верно выбрана?

http://forum.rcl-radio.ru/uploads/images/2024/12/50433a5a98650b7e8eca831c3e8895e9.png


http://dan.drown.org/stm32duino/package … index.json

94

Re: Частотомер

http://forum.rcl-radio.ru/uploads/images/2024/12/52dcbe00658b9b62d4a27226b0db845d.png

stm32duino

95

Re: Частотомер

http://dan.drown.org/stm32duino/package_STM32duino_index.json

96

Re: Частотомер

Попробуйте перезапустить Arduino IDE после добавления ссылки

97

Re: Частотомер

Нашел,пробую.

98

Re: Частотомер

Ни чего у меня не получается. Платы менял, скетчи менял, монитор плат выдает 72002140.
Видно не судьба для меня STM32.Спасибо за терпение.

99

Re: Частотомер

Данный контент доступен только зарегистрированным пользователям.

100

Re: Частотомер

Здравствуйте. Скажите это правильно:
Скетч использует 14560 байт (22%) памяти устройства. Всего доступно 65536 байт.
Глобальные переменные используют 1552 байт (7%) динамической памяти, оставляя 18928 байт для локальных переменных. Максимум: 20480 байт.