Форум

Радиолюбительский форум.

Если у Вас возникли вопросы, задавайте их на форуме.

В сети

Пользователей: 246
Из них просматривают:
Аналоги: 104. Видео: 1. Даташиты: 92. Новости: 6. Остальное: 10. Профиль пользователя: 13. Форум: 20.
Участников: 2
Гостей: 244

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

1 ... 5 6 7 8 9 10 11 ... 31


Re: atmega(USART)
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
А не отговаривать меня от данной задачи, например 1-WIRE.



Re: atmega(USART)
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
Да сделал бы с удовольствием. Если бы я имел программу от этих долбанных китайских игрушках!!! И Вы знаете у них все работает. Но только пульт у них за отдельную цену и по цене практически самого изделия. Вот и встал вопрос самим делать и продавать по цене изделия, но с пультом!!!
Протокол это их. Изврат полный!!! Можно было бы простыми командами обойтись!!!
Вот и мучаюсь. Не только из-за того, что надо и для опыта, но из-за того, что за державу обидно, что смеются они над нами!!! У них все получается делать в сегменте LOW-COST, а у нас нет!!!
Поэтому если есть у кого желание, то прошу, пожалуйста, помочь победить долбанных китайцев!



Re: atmega(USART)
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
Имеется ввиду объединять RX и TX?

Если да, то из-за сложности конструкции готового изделия - придется паять тогда провода на каждую ножку(к управляемому изделию) с пульта управления. А так просто сверху наложил на 2 ножки и все. А их много и переделывать фирма ничего не будит.
Поэтому и приходится так мудрить!



Re: atmega(USART)
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
Ну тогда подскажи, пожалуйста, как это правильно решить, но только без преобр. ур. от TI(74LVCxx)?
кстати опять интересный момент, увеличил задержки и вроде пока все работает, но только пока ПК, дальше буду испытывать на самомо устройстве.
Но вопрос по поводу схемы все равно открыт? Может и правда лучше преобр. ур. от TI?
И вообще как лучше сделать эту схему?



Re: atmega(USART)
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
Так на схеме же показано. Сразу после SLAVE. Напряжение на линии преобр в 3.3В, потом подтяжка, а потом уже 300 Ом.
Получается, что из-за подтяжки в момент передачи может быть КЗ?



Re: atmega(USART)
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
Я вот думаю может только подтяжка лишняя и в коде проблема. Вот и обратился.
Что может я что-то не сбрасываю или дамми байт где-то не отправил.



Re: atmega(USART)
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
так а резисторы для чего???
Делитель напряжения из 2 резисторов. Там и там напряжение постоянное(5 и 3.3в)!!! Поэтому имею полное право обойтись делителем вместо 74LVC(преобр. ур. от TI). Далее после делителя следует подтяжка к 3.3В через (не 20к, а 10кОм) - потому что неактивная ножка(RX или TX) в Z состоянии и правильно задать MARK и SPACE в протоколе USART.
Резистор 300 ОМ - токоограничивающий для RX
Ну и геде косяк???????????????????????
Еще замечания будут???????????????????



Re: atmega(USART)
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
А что в железе то не так?



Re: atmega(USART)
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
А как правильно тогда? Подскажите, пожалуйста.
Да кстати в код добавил щас перед отправкой данных еще 3 дамми байта. И изменил обработку приема.
Пока еще не тестировал.
А так еще есть идеи по поводу кода?
Вот код:
void send_USART (unsigned char data)
{
unsigned char cs=0;

UCSR0B &= ~(1<<4); //RX
DDRD &=~(1<<0);
PORTD &=~(1<<0);
UCSR0B |= (1<<3); //TX
//_delay_ms(5);

pos=1;
if (data == economS) data=0x00;
do
//for(pos=1;pos<6;pos++)
{
while (!(UCSR0A & (1 << UDRE0)));
// Transmit data
if (pos == 1) UDR0=0xAA;
if (pos == 2) UDR0=0xAA;
if (pos == 3) UDR0=0xAA;
if (pos == 4) {UDR0 = 0x0F;cs^=0x0F;}
if (pos == 5) {UDR0 = data&0x1F; cs^=(data&0x1F);}
if (pos == 6) {UDR0 = ((~data)&0x1F); cs^=((~data)&0x1F);}
if (pos == 7) {UDR0 = 0x15;cs^=0x15;}
if (pos == 8) UDR0=cs;
while (!(UCSR0A & (1 << TXC0)));
pos++;
}while (pos<9);
}

unsigned char receive_USART (void)
{
unsigned char cs=0;

UCSR0B &= ~(1<<3); //TX
DDRD &=~(1<<1);
PORTD &=~(1<<1);
UCSR0B |= (1<<4); //RX
//_delay_ms(5);

pos=1;
do
//for(pos=1;pos<6;pos++)
{
USART_RX_buf[pos] = receive_BYTE();
USART_RX_buf[pos]&=0x1F;
if (pos != 5)cs^=USART_RX_buf[pos];
if (USART_RX_buf[1]==0x06) pos++; else {cs=0x00; pos=1;}
if (pos == 2) pos++;
if (USART_RX_buf[3] == ((~(USART_RX_buf[2]))&0x1F)) pos++; else {cs=0x00;break;}
if (USART_RX_buf[4]==0x12) pos++; else {cs=0x00;break;}
if (cs == USART_RX_buf[5]) {pos++; return USART_RX_buf[2];}
// pos++;
} while (pos<6);
return 0xFF;
}



Re: atmega(USART)
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
зарабатоло, но почему-то только один раз попробовал перепрошить и опять перестало. По компьютеру смотрел - отправляет правильно и правильно принимает(смотрел на дисплее), одновременно не получится посмотреть, потому что HYPER TERMINAL и компьютер порт не смогут обработать объединенные 2 линии(RX&TX) в одну.
Обрабаатываю не по прерыванию.
Скорость 4800, 5 бит, 1 стоп, без контроля четности.
Среда разработки AVR STUDIO 4.
Сначала отправляю данные потом жду подтверждения. Оно приходит(вижу на дисплее).И почему то он снова возвращается в начало(снова отправляет) - хотя цикла нет.
И вот пример:
if (programming_mode)
{
send_USART(sportS); //sport
_delay_ms(5);
temp=receive_USART();
USART_RX_buf[2]=0x00;
_delay_ms(5);
if (temp == sportS) // if sport
{
_delay_ms(5);
prepare_send(sport_send);
}
}
Последней команды:
prepare_send(sport_send); - не происходит, почему то после правильного принятия данных(receive_USART) обратно возвращается в начало условия(if programming).
Функции такие же как описаны выше, только задержки
Вот схема:

посмотрите, пожалуйста, может дело как я думаю в коде или оптимизации.
Надеюсь на Вашу помощь!

Прикреплённый файл:



jpg  1.JPG (240.63 KB)
6164_4fea8b1c361b1.jpg 1152X864 px




1 ... 5 6 7 8 9 10 11 ... 31




Разное

Интересно

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