Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 04.07.2019, 18:01  
Ara41
Почётный гражданин KAZUS.RU
 
Регистрация: 30.09.2006
Сообщений: 1,560
Сказал спасибо: 158
Сказали Спасибо 661 раз(а) в 431 сообщении(ях)
Ara41 на пути к лучшему
По умолчанию Re: ATtiny441 и UART. Не могу разобраться

Сообщение от Deniska407 Посмотреть сообщение
Моя же программа принимает только ОДИН
i в перывании по приему обнуляется, посему пишется всегда только в frame[0]
Реклама:
Ara41 вне форума  
Непрочитано 04.07.2019, 18:28  
Deniska407
Прохожий
 
Регистрация: 03.07.2019
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Deniska407 на пути к лучшему
По умолчанию Re: ATtiny441 и UART. Не могу разобраться

Сообщение от Ara41 Посмотреть сообщение
i в перывании по приему обнуляется, посему пишется всегда только в frame[0]
Не подскажете "чайнику" как быть и как должен выглядеть алгоритм в этом случае?
Deniska407 вне форума  
Непрочитано 04.07.2019, 19:33  
Ara41
Почётный гражданин KAZUS.RU
 
Регистрация: 30.09.2006
Сообщений: 1,560
Сказал спасибо: 158
Сказали Спасибо 661 раз(а) в 431 сообщении(ях)
Ara41 на пути к лучшему
По умолчанию Re: ATtiny441 и UART. Не могу разобраться

в прерывании заполняем frame, по приему 8 байт взводим флаг приема, обрабатываем farme в main, обнуляя уже там i и сбрасывая флаг приема. Как-то так )
Ara41 вне форума  
Непрочитано 04.07.2019, 20:34  
Deniska407
Прохожий
 
Регистрация: 03.07.2019
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Deniska407 на пути к лучшему
По умолчанию Re: ATtiny441 и UART. Не могу разобраться

Сообщение от akegor Посмотреть сообщение
Deniska407, почему бы Вам было не указать в явном виде скорость обмена? Лениво мне, как-то, ковыряться в ДШ...
Откуда взяты 5мс задержки после загрузки байта в УДР ? Вообще-то, гораздо беспроигрышней отлавливать событие "передача байта окончена" по соответствующему флагу.
Вы дрыгаете ножкой направления для каждого байта. А почему бы не сделать прием-передачу через кольцевой буфер на прерываниях? В этом случае ставить на передачу можно один раз на все байты буфера, а переключать на чтение после передачи последнего байта.
У меня все работает именно так.
Уважаемый Akegor! В том то и дело, что опыта работы с:
"... А почему бы не сделать прием-передачу через кольцевой буфер на прерываниях? В этом случае ставить на передачу можно один раз на все байты буфера, а переключать на чтение после передачи последнего байта. У меня все работает именно так..."

Ножкой дрыгаю при передаче - так работает китайская плата UART-›RS-485 (контакты DE и RE). Замечание принимаю! Конечно же нужно дрыгать в функции:
void USART_Transmit_String() а не в:
void USART_Transmit( unsigned char data ) !
ОГРОМНОЕ спасибо за это замечание!

Осталось понять как принимать не 1 байт а целую телеграмму в в frame[i] ... тогда парсинг написать для меня будет вообще без проблем!
Deniska407 вне форума  
Непрочитано 04.07.2019, 21:46  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,856
Сказал спасибо: 2,532
Сказали Спасибо 11,771 раз(а) в 5,896 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: ATtiny441 и UART. Не могу разобраться

Сообщение от Deniska407 Посмотреть сообщение
Осталось понять...
Во вложении (поменять расширение на "с") файл, который генерит визард CV AVR. Сгенерил специально для Вас только с УАРТом, с одним. Это чтобы не загромождать. Посмотрите, понравится - примените, если "не очень" - допилите до "очень" (я применяю допиленный вариант). Управление 485-м добавляется "парой кликов мыши".
Удачи!
Вложения:
Тип файла: txt CV_AVR_t441_uart.txt (9.0 Кб, 0 просмотров)
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor на форуме  
Сказали "Спасибо" akegor
mike-y-k (05.07.2019)
Непрочитано 05.07.2019, 03:21  
Deniska407
Прохожий
 
Регистрация: 03.07.2019
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Deniska407 на пути к лучшему
По умолчанию Re: ATtiny441 и UART. Не могу разобраться

Сообщение от akegor Посмотреть сообщение
Во вложении (поменять расширение на "с") файл, который генерит визард CV AVR. Сгенерил специально для Вас только с УАРТом, с одним. Это чтобы не загромождать. Посмотрите, понравится - примените, если "не очень" - допилите до "очень" (я применяю допиленный вариант). Управление 485-м добавляется "парой кликов мыши".
Удачи!
к огромному сожалению квалификации не хватило разобраться в этом файле ... пока мучаюсь с таким куском кода:

PHP код:
ISR (USART0_RX_vect)
{
    
    
frame[0] = UDR0;
    
flagRX=1;
        
}


int main(void)
{
    
    
USART_Init();
    
    
StartTransmit_SET_OUTPUT;
    
StartTransmit_HIGH;
    
LED_SET_OUTPUT;
    
LED_LOW;
    
    
sei();
    
    
flagRX=0;
    
    while(
1)
    {
                if (
flagRX==1)
                    {
                        
exceptionResponse(5);
                        
flagRX 0;

                    }

    }

как читать из буфера столько байт, сколько в нем находится и помещать их по очереди в массив frame[i] и по i понимать длину массива - вот это для меня БОЛЬШАЯ загадка ... хотя может весь фокус действительно в терминале... завтра буду посылать телеграммы из TERMITE (ModBUS RTU Terminal). Может быть он байты в порт как то кладет иначе ...
Deniska407 вне форума  
Непрочитано 05.07.2019, 09:46  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,856
Сказал спасибо: 2,532
Сказали Спасибо 11,771 раз(а) в 5,896 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: ATtiny441 и UART. Не могу разобраться

Сообщение от Deniska407 Посмотреть сообщение
к огромному сожалению...
Переработал чуть: поубирал все лишнее и чуть прокомментировал. Смотрите. Будут вопросы и неясности - спрашивайте.
Вложения:
Тип файла: txt CV_AVR_t441_uart_adapt.txt (4.2 Кб, 0 просмотров)
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor на форуме  
Непрочитано 06.07.2019, 13:24  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,792
Сказал спасибо: 2,912
Сказали Спасибо 3,120 раз(а) в 2,111 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: ATtiny441 и UART. Не могу разобраться

Сообщение от parovoZZ Посмотреть сообщение
Я даже на ЛА вижу джиттер от 441/841.
Тащем-то джиттер и другая частота - разные вещи.
__________________
Экзорцист 40-го уровня.
ForcePoint на форуме  
Непрочитано 07.07.2019, 17:49  
Deniska407
Прохожий
 
Регистрация: 03.07.2019
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Deniska407 на пути к лучшему
По умолчанию Re: ATtiny441 и UART. Не могу разобраться

Уважаемые коллеги!

Вот что у меня получилось отладить и получить требуемый результат на Ардуинке:

Код:
         unsigned char frame_buffer = 0;
         unsigned char buf_overflow = 0;
  
         while (Serial.available())
         {
                if (buf_overflow) 
                   Serial.read();
             else
             {
                if (frame_buffer == 32) buf_overflow = 1;
                
                   frame[frame_buffer] = Serial.read();
                   frame_buffer++;

             
             }
        
          delayMicroseconds(1500); // подобрал опытным путем. вроде принимает нормально.
 
        }
этот кусок кода четко объясняет что мне хочется получить: а) последовательно прочитать все телеграмму: 50 03 01 00 00 01 88 77 (запрос по RS-485) и засунуть в массив frame:
frame[0]=50, frame[1]=03, frame[2]=01, frame[3]=00, frame[4]=00, frame[5]=01, frame[6]=88, frame[7]=77

как это переложить на С++, используя ISR (USART0_RX_vect) /прерывание/ я не знаю. Все, что я пока добился - чтение одного единственного (ПЕРВОГО) байта и все. Не понимаю, как читать из буфера телеграмму и по какому признаку останавливаться, получая frame_buffer, который указывает сколько байт в телеграмме. Если кому не сложно, разжуйте, пожалуйста, нубу ...
Deniska407 вне форума  
Непрочитано 08.07.2019, 10:05  
Ara41
Почётный гражданин KAZUS.RU
 
Регистрация: 30.09.2006
Сообщений: 1,560
Сказал спасибо: 158
Сказали Спасибо 661 раз(а) в 431 сообщении(ях)
Ara41 на пути к лучшему
По умолчанию Re: ATtiny441 и UART. Не могу разобраться

Код:
ISR (USART0_RX_vect) 
{ 
     
    frame[i++] = UDR0; 
    if (i==8) 
       {
           flagRX=1; //ТЕЛЕГРАММА ПОЛУЧЕНА
           i=0;
        } 
}
как-то так
Ara41 вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу разобраться с термостатом restorn Proteus 12 05.04.2018 11:27
Помогите разобраться со схемой. я не могу понять что не так. sofist Источники питания и свет 17 15.11.2007 15:52
MP Lab 7.1 Не могу создать проект Dimtr Микроконтроллеры, АЦП, память и т.д 1 10.12.2005 17:09
[Решено] Повредил Geforce FX5900xt, не могу разобраться с деталями Partizan Ремонт оргтехники 2 16.04.2005 21:32
Не могу разобраться с LCD init_sub Информация по радиокомпонентам 6 02.04.2004 04:40


Часовой пояс GMT +4, время: 11:31.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot