Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

В общем начитался я постов тут и решил замутить для увеличения дальности генерацию 125 кгц в противофазе по двум выходам питания антенны.

Отправлено 1111 02 марта 2009 г. 19:03
В ответ на: Это не самоцель :) Тока мне непонятно как так можно извратиться, чтобы получить два противофазных меандра для полного моста? :) Ибо автору вроде как это как раз и надо... отправлено пользователем Гудвин 02 марта 2009 г. 18:49

Код на асме взял тут-же и решил его, уж простите за лень, портануть.
Получилось вот так. Просто оригинальная константа не прошла.

<code>
#define FCLK XTAL
#define FOUT 125ul //output frequency, kHz
#define BYTC 11ul //data byte count
#define BITC 5ul //data bit count
#define dMask 0x1Ful //0b00011111 ;data byte mask
#define sSymb 0x1FFul //0b0000000111111111 ;syncro symbol
#define sMask 0x3FFul //0b0000001111111111 ;syncro symbol mask

#define MIN1T 58ul //64 - 10%
#define NOM1T5 96ul //64 + 1/2 * 64
#define MAX2T 141ul //128 + 10%

//Decoder phases (dPhase values):
#define pOff 0 //off
#define pSync 1 //find syncronization
#define pData 2 //get data

//Derivated constantes:
//#define T1DIV ((((FCLK/FOUT)/200ul)+5ul)/10ul) //CK/1

#define T1DIV (((FCLK/FOUT)/200ul)/10ul)

void TIMER1_Init(void)
{
RF_DDR |= ((1<<OC1A) | (1<<OC1B));
TCCR1A = (1<<COM1A1) | (1<<COM1A0) | (1<<COM1B1);
TCCR1B = (1<<WGM12) | (1<<CS10);//CTC, CK/1
OCR1A = (unsigned)T1DIV;
TIFR1 |= (1<<OCF1A);
TIMSK1 |= (1<<OCIE1A);
//TCCR1A = (1<<COM1A0) | (1<<COM1B0);
}

//::::::::::::::::::::::::::::::::::::::::::::::::::::::
// Обработчик прерывания
//::::::::::::::::::::::::::::::::::::::::::::::::::::::
#pragma vector = TIMER1_COMPA_vect
__interrupt void TIMER1_OCR1A_Isr(void)
{
if((RF_PIN & (1<<OC1A)) == 0)
{
TCCR1A = (1<<COM1A1) | (1<<COM1A0) | (1<<COM1B1);
}
else
{
TCCR1A = (1<<COM1A1) | (1<<COM1B0) | (1<<COM1B1);
}

}
</code>


Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
вычтите из двух единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru