реклама на сайте
подробности

 
 
> Помогите откомпилировать исходник
RA3MAH
сообщение Apr 2 2017, 11:02
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 27-03-17
Пользователь №: 96 129



Добрый день. Не нашел подобной темы. Не могу откомпилировать исходник на асм для тини 10. Может кто сможет помочь или подсказать компилятор? пробовал avrasm2 - пишет
Код
Warning: AVRASM 1.x compatibility is ON - some errors will appear as warnings
Modulate.asm(1): warning: '.device ATtiny10' only sets device name
Modulate.asm(16): error: syntax error, unexpected '\n', expecting MNEMONIC or REGISTER or SYMBOL or FUNCTION

Прикрепленные файлы
Прикрепленный файл  file.zip ( 3.86 килобайт ) Кол-во скачиваний: 27
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
RA3MAH
сообщение Apr 4 2017, 18:39
Сообщение #2





Группа: Участник
Сообщений: 11
Регистрация: 27-03-17
Пользователь №: 96 129



В общем, я так понял, что исходник на специфическом софте написан. Нашел другую статью, но опять не знаю, в чем откомпилировать. Похоже на С. Выкладываю статью и ссылку.
Код
делал я подобное устройство, летало, скорость передачи 1200, FSK соотношение частот 3/2 на AVR
канал звука больше подвержен помехам, поэтому отказался от использования. кстати увеличивать уровень звукового сигнала не надо, наоборот требуется делитель.
модулятор собран на ATmega8. для генерации несущей используется таймер
то есть при выводе 0 или 1 в таймер просто записывается соответствующее значение. вывод через порт D, в tx_buffer выводимая последовательность байт.
код модулятора:
// Timer 2 output compare interrupt service routine
interrupt [TIM2_COMP] void timer2_comp_isr(void)
{ //OCR2=0x33+0x1A; PORTD=PORTD^0b00100000;
// Place your code here
if (count_tact) count_tact--; // если счетчик тактов не ноль, уменьшаем
else
{
if ((!bit_count)&&tx_data_size) // нет бит на вывод - инициализация
{
tx_word.data_byte[0]=tx_buffer[tx_count++];
if (tx_count==tx_data_size) {
tx_count=0;
tx_data_size=0;
}
tx_word.data_byte[1]=0xFF; // стоповый бит
tx_word.data_word=tx_word.data_word*2; // сдвиг влево
tx_word.data_byte[0]=tx_word.data_byte[0]&0xFE; // стартовый бит
bit_count=11; //1 стартовый, 8-данные, 2- стоповых
}
if (bit_count) // есть биты на вывод
{
OCR2=0x33+(0x1A*(!(tx_word.data_byte[0]&0x01))); // установка таймера
count_tact=1+(tx_word.data_byte[0]&0x01); // установка счетчика тактов
/**/ PORTD=PORTD&0b11011111;
PORTD=PORTD|(0b00100000*(tx_word.data_byte[0]&0x01));
tx_word.data_word=tx_word.data_word/2; // сдвиг вправо
bit_count--;
}
}
}

демодулятор на ATtiny13 просто переводит частоту в последовательность 0 и 1, которую я подавал на COM порт компьютера (ТТЛ)
используется прерывание по компаратору и таймер для расчета периода несущей.
код:
#include <tiny13.h>
unsigned char count_capt; // захват значения счетчика
unsigned char count_tact; // счетчик тактов частоты
unsigned char bit_flag; // флаг частоты бита
unsigned char bit_capt; // захваченный бит по частоте
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
count_capt=TCNT0; // захват счетчика
TCNT0=0x00; // сброс счетчика
if ((count_capt>0x48)&&(count_capt<0x16)) count_tact=0; // ошибка приема сброс
else
{
bit_capt=(count_capt<0x33); // оценка принимаемого бита по длительности
if (bit_capt==bit_flag) // если сохраненный и захваченный такт совпадают
{
count_tact++;
if (count_tact==(1+bit_flag)) // счетчик достиг предела для значения бита
{
PORTB.2=bit_flag; // вывод бита
count_tact=0; // сброс счетчика
}
}
else
{
count_tact=0; // сброс счетчика тактов
bit_flag=bit_capt; // сохранение значения такта
}
}
}
Кстати, в приемнике перед контроллером, необходимо установить ФНЧ. я ставил активный, на операционнике. это позволит немного улучшить помехоустойчивость, а следовательно и дальность


http://forum.rcdesign.ru/f8/thread300546.html#post3910216
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 21:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016