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

 
 
> ATTINY2313 и UART, ATTINY2313 и UART
jin_jin
сообщение Mar 31 2008, 07:04
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-02-08
Пользователь №: 35 071



Народ помогите пожайлуста разобраться.
Надо посылать посылки по 3 байта в ком порт.
Когда отсылаю в UART
putchar('g');
или
putchar(71);

то в компе в отладочной програмее для ком порта приходит все что угодно но только не мой код

очень много ошибок идет
к ком порту подключен через max232
кварц на 4Mhz
com1 9600 8n1

КАК правильно отсылать байты в этот UART????? помогите разобраться


ПОЛНЫЙ листинг


#include <tiny2313.h>
#include <delay.h>
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7

#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)

#define TX_BUFFER_SIZE 8
char tx_buffer[TX_BUFFER_SIZE];

#if TX_BUFFER_SIZE<256
unsigned char tx_wr_index,tx_rd_index,tx_counter;
#else
unsigned int tx_wr_index,tx_rd_index,tx_counter;
#endif

// USART Transmitter interrupt service routine
interrupt [USART_TXC] void usart_tx_isr(void)
{
if (tx_counter)
{
--tx_counter;
UDR=tx_buffer[tx_rd_index];
if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
};
}

#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter == TX_BUFFER_SIZE);
#asm("cli")
if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
{
tx_buffer[tx_wr_index]=c;
if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
++tx_counter;
}
else
UDR=c;
#asm("sei")
}
#pragma used-
#endif

#include <stdio.h>



void main(void)
{

#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif


PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x00;


PORTD=0x00;
DDRD=0x00;


TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;


TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

GIMSK=0x00;
MCUCR=0x00;


TIMSK=0x00;


//USICR=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x48;
UCSRC=0x06;
UBRRH=0x00;
UBRRL=0x19;


ACSR=0x80;


#asm("sei")

while (1)
{
putchar(71);
delay_ms(1000);


};
}







да и еще
кварц на 4 мгц

дело в том что в порт приходит байт но не соответствуетт кодировке. А если отсылаю три байта и каждый раз разные прошиваю то при чтении они практически не отличаются
к примеру отсылай с мк
50 100 200 (3 байта)
66 144 222 ()

получай в ком порте
111 239 255
111 200 255
Go to the top of the page
 
+Quote Post
5 страниц V  « < 2 3 4 5 >  
Start new topic
Ответов (45 - 59)
Палыч
сообщение Apr 4 2008, 07:32
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(jin_jin @ Apr 4 2008, 10:27) *
Таймер0 буду использовать. Что то пытался сделать через CodeVisionGenerator выставить значения но что то не получилось
Надеюсь Вы не забыли настроить соответствующую ногу на вывод? В DDB3 - занести единицу.

Цитата(jin_jin @ Apr 4 2008, 10:27) *
Вся проблема в том что у меня проблема с английским.А даташит на инглише.
Найдите в сети перевод или книгу по AVR, но сверяйтесь с оригинальным текстом.
Go to the top of the page
 
+Quote Post
jin_jin
сообщение Apr 4 2008, 07:51
Сообщение #47


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-02-08
Пользователь №: 35 071



порт В настроен на выход. Так что то и не разобрался что надо занести в эти регистры чтобы частота была 36

с этой формулой не могу понять что за коэфициент N 1 8 64 256

Что надо занести в настройки для частоты 36кГц

TCCR0A
TCNT0
OCR0A
Go to the top of the page
 
+Quote Post
vet
сообщение Apr 4 2008, 07:55
Сообщение #48


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Вам не 36, а 72 кГц нужна, бо выход OCn инвертируется по совпадении таймера.
Прочитайте любой перевод любого даташита AVR для общего представления о таймерах, все детали отлично настроит CodeWizard.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
jin_jin
сообщение Apr 4 2008, 08:01
Сообщение #49


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-02-08
Пользователь №: 35 071



Что то я еще больше запутался почему 72 если можно по подробнее
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 4 2008, 08:25
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(jin_jin @ Apr 4 2008, 10:51) *
с этой формулой не могу понять что за коэфициент N 1 8 64 256
Это - прескалер (выбираем значение N=1)
Цитата(jin_jin @ Apr 4 2008, 10:51) *
Что надо занести в настройки для частоты 36кГц TCCR0A TCNT0 OCR0A
TCCR0A(В) - No prescaling, CTC mode, Toggle OC0A (какие значения регистров А и В этому соответcтвуют - определитесь сами)
TCNT0 - не принципиально
OCR0А - 0x37 (OCR0L= 0x37 OCR0H=0) , что для кварца 4МГц даёт 36036Гц

P.S. Забыл, что таймер 0 - восьмибитный...
Go to the top of the page
 
+Quote Post
jin_jin
сообщение Apr 4 2008, 09:04
Сообщение #51


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-02-08
Пользователь №: 35 071



Заношу я вот эти значения сажусь частотомером и ничего вообще не показывает

TCCR0A=0x42;
TCCR0B=0x00;
TCNT0=0x37;
OCR0A=0x37;
OCR0B=0x00;

Что я делаю не правильно

И еще забыл уточнить в Codevision Generatore
что надо выбрать в
Clock value
4000 кГц
500
62.5
15.625
3.906
Timer 0 stoped
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 4 2008, 09:09
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(jin_jin @ Apr 4 2008, 12:04) *
Заношу я вот эти значения сажусь частотомером и ничего вообще не показывает
TCCR0B=0x00;
Что я делаю не правильно
Таймер надо всё-таки включить!
TCCR0B=0x01; /* No prescaling */
Go to the top of the page
 
+Quote Post
jin_jin
сообщение Apr 4 2008, 11:21
Сообщение #53


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-02-08
Пользователь №: 35 071



Спасибо большое и человеческое. Сел частотомером и частота 35.2 кГц
Сейчас попробую промодулировать с UART выходом


Ну вот и получилось можно сказать общими усилиями.
Обвязал логикой и все ок.
Теперь на одном иК диоде получил 3 метра и это без усиления. А раньше 6 диодов и каскад транзисторов давали 3 метра.
Единственное что смущает это вот смещения иногда символов. Но мне кажется это я паузы между передачей байтов сделал маленькой.

010609 13:07:53.546 4A 45 4E 59 41 JENYA
010610 13:07:53.546 4A 45 4E 59 41 JENYA
010611 13:07:53.640 4A 45 4E 59 41 JENYA
010612 13:07:53.640 4A 45 4E 59 41 JENYA
010613 13:07:53.734 4A 45 4E 59 41 JENYA
010614 13:07:53.828 4A 45 4E 59 41 JENYA
010615 13:07:53.828 4A 45 4E 59 41 JENYA
010616 13:07:53.921 4A 45 4E 59 41 JENYA
010617 13:07:54.015 4A 45 4E 59 41 JENYA
010618 13:07:54.015 4A 45 4E JEN
010619 13:07:54.125 59 41 4A 45 4E YAJEN
010620 13:07:54.125 59 41 4A 45 4E YAJEN
010621 13:07:54.218 59 41 4A 45 4E YAJEN
010622 13:07:54.218 59 41 4A 45 4E YAJEN
010623 13:07:54.312 59 41 4A 45 4E YAJEN
010624 13:07:54.406 59 41 4A 45 4E YAJEN
010625 13:07:54.406 59 41 4A 45 4E YAJEN
010626 13:07:54.500 59 41 4A 45 4E YAJEN
010627 13:07:54.593 59 41 4A 45 4E YAJEN
010628 13:07:54.593 59 41 4A YAJ
010629 13:07:54.703 45 4E 59 41 4A ENYAJ
010630 13:07:54.703 45 4E 59 41 4A ENYAJ
010631 13:07:54.796 45 4E 59 41 4A ENYAJ
010632 13:07:54.796 45 4E 59 41 4A ENYAJ
010633 13:07:54.890 45 4E 59 41 4A ENYAJ
010634 13:07:54.984 45 4E 59 41 4A ENYAJ
010635 13:07:54.984 45 4E 59 41 4A ENYAJ
010636 13:07:55.078 45 4E 59 41 4A ENYAJ
010637 13:07:55.171 45 4E 59 41 4A ENYAJ
010638 13:07:55.171 45 4E 59 ENY
010639 13:07:55.281 41 4A 45 4E 59 AJENY
010640 13:07:55.281 41 4A 45 4E 59 AJENY
010641 13:07:55.375 41 4A 45 4E 59 AJENY
010642 13:07:55.375 41 4A 45 4E 59 AJENY
010643 13:07:55.468 41 4A 45 4E 59 AJENY
010644 13:07:55.562 41 4A 45 4E 59 AJENY
010645 13:07:55.562 41 4A 45 4E 59 AJENY
010646 13:07:55.656 41 4A 45 4E 59 AJENY
010647 13:07:55.703 41 00 A.


НУ вот проблема была с задержкой Delay_ms(2); стало нормально из 15000 посылок не одной ошибки

Только вот проблема решилась не полностью. Я избавился от ЛА7 где был собран генератор на 36кГц
дальность чуть чуть стала лучше при 5 вольтах и одном транзисторе расстояние получаю 2 метра где идут стабильно данные.
Но опять же пульты работают в среднем 5-7 метров. Я уже и диоды менял. И подключал к схеме от пульта свой выход, все равно 2 метра.
Может кто подскажет в чем может быть дело.

Конечно выход есть собрать 4 каскада транзисторов и 8 ИК диодов и подключив на 12Вольт. Этим я получу свое расстояние. Но как на одном диоде расстояние повысить

Заметил сейчас такую штуку когда питание включаю то в течении 1 секунды посылки проходят даже на 5 метрах . а в комнате в другую сторону направляю включаю питание посылки проходят где 12-15 правильно и все останавливаются.
Такое ощущение что идет мощный импульс а затем все
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 4 2008, 12:05
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(jin_jin @ Apr 4 2008, 14:21) *
Единственное что смущает это вот смещения иногда символов.
Не стоит обращать внимание - это смещение результат работы (фича) терминалки

Цитата(jin_jin @ Apr 4 2008, 14:21) *
Такое ощущение что идет мощный импульс а затем все
Нагрев диода, транзистора? Неполное закрытие ключа?
Go to the top of the page
 
+Quote Post
jin_jin
сообщение Apr 4 2008, 12:08
Сообщение #55


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-02-08
Пользователь №: 35 071



При 5 вольтах все холодное
При12 греется транзистор с омными резисторами и чуть чуть диодИК
Go to the top of the page
 
+Quote Post
jin_jin
сообщение Apr 7 2008, 07:33
Сообщение #56


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-02-08
Пользователь №: 35 071



Народ подскажите с таким вопрросом. Стандартный пульт RC5 с какой скоростью передает 300 600 1200 или 2400
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 7 2008, 08:01
Сообщение #57


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



RC-5 - это совсем не USART. Такт длится 1.778 мс; двухфазное кодирование; два стартовых; 1 управляющий; 5 адресных; 6 командных
Go to the top of the page
 
+Quote Post
jin_jin
сообщение Apr 7 2008, 08:09
Сообщение #58


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-02-08
Пользователь №: 35 071



Я просто думаю что может у меня проблема в дальности потому что я передаю по ИК 3 байта через USART /. Может все переписать для протокола RC5 и модулировать через какую нибудь ножку
Как вы думаете поможет мне это
Go to the top of the page
 
+Quote Post
jin_jin
сообщение Apr 7 2008, 10:12
Сообщение #59


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-02-08
Пользователь №: 35 071



Ну вроде проблема решилась.
Заработало через всю комнату причем IRDA повернута задней частью.
ПОМЕНЯЛ IRDу поставил не большую а маленькую с круглой линзой.
Стало стабильно принимать на расстоянии 4 метра (вся комната)
Go to the top of the page
 
+Quote Post
sKWO
сообщение Apr 7 2008, 12:37
Сообщение #60


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(jin_jin @ Apr 7 2008, 13:12) *
Ну вроде проблема решилась.
Заработало через всю комнату причем IRDA повернута задней частью.
ПОМЕНЯЛ IRDу поставил не большую а маленькую с круглой линзой.
Стало стабильно принимать на расстоянии 4 метра (вся комната)

Извиняюсь, а какой транзистор для управления вы поставили?
Может тока через ик диод не хватает? Может и у Вас будет дальность как у Панасоника.
Я бы поставил КТ972 или ему подобный и поигрался бы с током через диод.
В лучшем случае, учитывая ваши скоростя подошол бы полевик с низким сопротивлением канала сток - исток.

Сообщение отредактировал sKWO - Apr 7 2008, 12:43


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post

5 страниц V  « < 2 3 4 5 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 08:38
Рейтинг@Mail.ru


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