[an error occurred while processing this directive]
|
То ли она... То ли я такой! Но чтобы я - такой, это же не может быть!!!
Подскажите новорожденному что-то очень, видимо, простое.
Выход порта Р1.0 через резистор перезаряжает емкость на выводе Р1.2, выбранный как "переферия" ТА1, по прерыванию которого перебрасывается исходный Р1.0.
Все должно работать на 900 Гц. Однако, RC оказалась лишней. Достаточно от этой RC или просто пальцем стартовать колебания, и будут продолжаться колебания частотой 136 кГц, как-будто накоротко выход ТА1 подключен к собственному входу (по-моему так и есть, но тогда подскажите, где в программе у меня встряла эта лабуда). Вход Р1.2 к земле притянутый после старта колебаний ничего не меняет.
Отлаженная и работающая программа, с рисунком даже, прилагается ниже.
#include void main(void) _BIS_SR(OSCOFF); // OSCOFF TACTL = TASSEL_2+MC_2; // TimerA: SMCLK, Continous // Timer_A3, A1,2 interrupt service routine
E-mail:
info@telesys.ru
__interrupt void Timer_A1(void);
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
DCOCTL |= DCO2; // max Freq
BCSCTL1 |= RSEL0 + RSEL1; // max Freq
P1DIR = 0xFF-4; // P1.x Outputs Function except P1.2
CAPD = 0xFF; // P2.x Buffers off
P1SEL = (1<<2); // P1.2 - peripheral TA1 CCI1A
CCTL1 = CM0+CM1+SCS+CAP+CCIE; // TA0 Both Edges+Synhr+CAP+IE // +CCI1A(default)
_EINT(); // Enable interrupts;
P1OUT ^= 1; // Toggle P1.0
LPM0; // Enter Low Power Mode 0
}
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1(void)
{
_BIS_SR(OSCOFF); // OSCOFF
P1OUT ^= 1; // Toggle P1.0
}
/*
MSP430F21x1/11x1 (F123)
136.6 kHz !!! ---------------------------
/|\|RST XIN|-
| | ((32kHz))
|P2.3 19 CA0+ XOUT|-
| |-
|P2.4 20 CA1- |
| |
+-------|P1.0 21 |
| | |
47k |P1.1 22 CCI0A |
| | |
+-------|P1.2 23 CCI1A |
| | |
=== |P1.3 24 CCI2A |
|47n | |
+-------|VSS___4____________________|
0.9 kHz = 1 / 1.1 ms
*/
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание