Например TDA7294

Форум РадиоКот • Просмотр темы - UART проблема
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 10:56:53

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: UART проблема
СообщениеДобавлено: Чт мар 21, 2019 10:55:16 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1661
Откуда: Курск
Рейтинг сообщения: 0
Написал такой код.
Спойлер#include <mega8.h>

#include <alcd.h>
#include <delay.h>
#include <stdio.h>



unsigned int temp=0;
interrupt [USART_RXC] void se (void)
{ temp=30;
PORTC.5=~PORTC.5;}

void wait (void)
{TCNT1=0;
while (TCNT1<13){};
}






void main(void)
{
unsigned char string[20];
UCSRA=(0<<MPCM|0<<U2X|0<<UPE|0<<DOR|0<<FE|0<<UDRE|0<<TXC|0<<RXC);
UCSRB=(0<<TXB8|0<<RXB8|0<<UCSZ2|0<<TXEN|1<<RXEN|0<<UDRIE|0<<TXCIE|1<<RXCIE);
UCSRC=(0<<UCPOL|1<<UCSZ0|1<<UCSZ1|0<<USBS|0<<UPM0|0<<UPM1|0<<UMSEL|0<<URSEL);
UBRRH=0;
UBRRL=51;



PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0xFF;
DDRD=0x00;

TCCR0=0x00;
TCNT0=0x00;


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

ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

MCUCR=0x00;

TIMSK=0x00;

UCSRB=0x00;

ACSR=0x80;
SFIOR=0x00;


ADCSRA=0x00;

SPCR=0x00;

TWCR=0x00;

lcd_init(16);

while (1)
{#asm ("sei");

lcd_gotoxy(0,0);
sprintf(string,"%05x\n",temp);
lcd_puts(string);
delay_ms(1000);
lcd_clear();
PORTC.4=0;
wait ();
PORTC.4=0;
wait ();
PORTC.4=1;
wait ();
PORTC.4=0;
wait ();
PORTC.4=1;
};

}

не понимаю почему нет прерывания. Как понимаю после того как URD принимает байт должно вызваться прерывание и как я написал ножка порта инвертироваться. То есть мигать по сути. Как передатчик использовал другую ногу как TxD. В чем может быть причина.



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

а на данный момент codevishion пишет что библиотека alcd.lib испорчена и не может использоваться


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART проблема
СообщениеДобавлено: Пт мар 22, 2019 20:38:04 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1661
Откуда: Курск
Рейтинг сообщения: 0
какая то непонятная ерунда. то пишешь код и прерывание работает по приему. то пишешь уже другой код и не работает. не могу понять где допускаю ошибку при написании.

ха. взял объявил

UCSRA=0x00;
UCSRB=0x90;
UCSRC=0x86;

UBRRH=0x00;
UBRRL=0x33;


в конце списка перед while (1) и все заработало. интересно как и почему это произошло. ну теперь надо дальше уже думать что отправлять и зачем

мое предположение. сначала нужно объявить порты ввода вывода а уже затем только UART. иначе не получается


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART проблема
СообщениеДобавлено: Пн апр 08, 2019 20:58:32 
Друг Кота
Аватар пользователя

Карма: 81
Рейтинг сообщений: 1377
Зарегистрирован: Пн май 11, 2009 14:15:00
Сообщений: 3059
Откуда: СПб
Рейтинг сообщения: 0
Медали: 1
Мявтор 3-й степени (1)
Вы сначала пишете:
Код:
UCSRA=(0<<MPCM|0<<U2X|0<<UPE|0<<DOR|0<<FE|0<<UDRE|0<<TXC|0<<RXC);
UCSRB=(0<<TXB8|0<<RXB8|0<<UCSZ2|0<<TXEN|1<<RXEN|0<<UDRIE|0<<TXCIE|1<<RXCIE); //Вот тут разрешается прерывание по приёму (RXCIE)
UCSRC=(0<<UCPOL|1<<UCSZ0|1<<UCSZ1|0<<USBS|0<<UPM0|0<<UPM1|0<<UMSEL|0<<URSEL);


А потом зачем-то:
Код:
UCSRB=0x00;


После этого прерывания USART все запрещены. Если же переставить верхние три строчки перед while(1), в UCSRB оказывается не ноль, а правильное значение.

_________________
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: UART проблема
СообщениеДобавлено: Вт апр 09, 2019 15:28:48 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1661
Откуда: Курск
Рейтинг сообщения: 0
Да верно. Я уже потом разобрался. )


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y