ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
1318406 Топик полностью
Гyдвин, волшебник (10.06.2023 11:58, просмотров: 108) ответил Гyдвин на Емкостные клавиатуры, например... Частота "свободного" пина до 4..5 МГц. Конкретно я пользую для датчиков наличия зерна.
То VLT: Вот натыкал по-быстрому тестилку для MSP430G2553 в IAR. Pin P2.2. Поключил параллельный контур на 125 кГц ("гантелька" 1 mH + 1620 pF - что было под руками) к этому пину через емкость 100 пФ. Но действительно, без включения катушки в цепь обратной связи результат неутешительный :( 
#include <string.h>
#include <stdio.h>
#include "io430.h"
char str[10];
char cnt;
short get_freq (void)
{
       // P2.2  
       TA0CTL = TACLR;                          // Clear
       TA0CTL = TASSEL_3+MC_2;                  // TACLK, cont mode
       TA0CCTL1 = CM_3+CCIS_2+CAP;              // Pos&Neg,GND,Cap
       P2DIR &= ~ BIT2;         
       P2SEL &= ~ BIT2;         
       P2SEL2 |= BIT2;  
       __delay_cycles(10000);                  // 10 ms
       TA0CCTL1 ^= CCIS0;                      // Create SW capture of CCR1
       TA0CTL = 0;                             // Stop Timer_A
       P2SEL2 &= ~BIT2;
       P2DIR |= BIT2;         
       P2OUT &= ~BIT2;
       return(TACCR1);                         //  resultat
}
void putch(char c)
{
   while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
   UCA0TXBUF = c;  
}
int main( void )
{
 
   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
   
   BCSCTL1 = CALBC1_1MHZ;                    // Set DCO 1 MHz
   DCOCTL = CALDCO_1MHZ;
   P2SEL=0; //îòêëþ÷èì êâàðö 
   BCSCTL3 |= LFXT1S_2;                // LFXT1 = VLO (ACLK)  
   ////////// настройка UART //////////////////////////////
  P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  P1SEL2 = BIT1 + BIT2 ;                    // P1.1 = RXD, P1.2=TXD
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 104;                            // 1MHz 9600
  UCA0BR1 = 0;                              // 1MHz 9600
  UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
   
   while (1)
    {
      sprintf(str,"%u\r\n", get_freq());
      cnt=0;
      while (str[cnt]!=0)
      {
        putch(str[cnt]);
        cnt++;  
      }
       __delay_cycles(500000);                     // 500 ms
    }
 
}