KEEN SIDE успешно заменяет аналогичные продукты таких известных брендов, как Phoenix Contact, Weidmueller, Degson, Winstar, Hsuan Mao, KLS, G-NOR, Mean Well и др.

Обмен МК с ПК по программному USART attiny 26

Страница 1 из 4
Новичок
 
Аватар для aalex_641
 
Регистрация: 17.03.2018
Адрес: Курган РОССИЯ
Сообщений: 1,079
Репутация: 16
64 24
35 8
 
28.08.2019 23:14 #1
Короче надоели все ампервольтметры, всех видов , На ЛСД, на семисегментной индикации, термометры, таймеры, тупая логика ! Решил изучить передачу данных между МК и ПК, ну или все варианты между всеми вариантами . И решил начать с программного UART для Attiny 26, между оной и гипертерминалом . В общем есть USB-UART две штуки , одна на ftdi232 и есть какая то дешёвая версия YP-01.... Запилил прогу по алгоритму на с++ по ссылке в следующем посте . Она стабильно выдаёт какие то коды, которые не соответствуют пересылаемым с ПК.
Оценка
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
Новичок
 
Аватар для aalex_641
 
Регистрация: 17.03.2018
Адрес: Курган РОССИЯ
Сообщений: 1,079
Репутация: 16
64 24
35 8
 
28.08.2019 23:17 #2
Ссылка https://radiohlam.ru/pic_pr_usart_prost/
Оценка
Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW. Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного.
Новичок
 
Аватар для aalex_641
 
Регистрация: 17.03.2018
Адрес: Курган РОССИЯ
Сообщений: 1,079
Репутация: 16
64 24
35 8
 
28.08.2019 23:18 #3
там правда на ассемблере .
Но вот на с++ такой код (это тестовая прога не судите строго)
Код:
/*******************************************************
прога написана в code vision AVR
фьюзы биты внутренний генератор на 4 Мгц
B6-'это вывод-9 МК который INT0
Chip type               : ATtiny26
AVR Core Clock frequency: 4,000000 MHz
Memory model            : Tiny
External RAM size       : 0
Data Stack size         : 32
*******************************************************/

#include <tiny26.h>
#include <alcd.h>
#include <delay.h>
 unsigned char i,j, time,cod;

interrupt [EXT_INT0] void ext_int0_isr(void)
{
 i=1;  //флаг внешнего прерывания (старт приёма байта)
}

/*interrupt [TIM0_OVF] void timer0_ovf_isr(void)  // прерывание по таймеру пока не используем
{

}
*/
void print (void)    // вывод принятого кода и символа через тире на LCD
{    
     lcd_clear();     
       lcd_putsf("-");
        lcd_putchar((cod/100)+48);         //старший разряд   
         lcd_putchar((cod%100)/10+48);  //средний  
          lcd_putchar((cod%10)+48);        //младший 
           lcd_putsf("-");    
            lcd_putchar (cod);
             delay_ms(100);  //задержка для пропуска стопового бита

}

void main(void)
{

// Port A initialization   // тут стандартная настройка портов
// Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRA=(1<<DDA7) | (1<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit7=0 Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=T Bit6=P Bit5=T Bit4=T Bit3=T Bit2=P Bit1=P Bit0=P 
PORTB=(0<<PORTB7) | (1<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (1<<PORTB2) | (1<<PORTB1) | (1<<PORTB0);

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 4000,000 kHz
TCCR0=(0<<CS02) | (0<<CS01) | (1<<CS00);
TCNT0=0x00;                                 // отключил его за ненадобностью после визарда


// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<TOIE0);

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: при переходе в ноль
// Interrupt on any change on pins PA3, PA6, PA7 and PB4-7: Off
// Interrupt on any change on pins PB0-3: Off
GIMSK=(1<<INT0) | (0<<PCIE1) | (0<<PCIE0);
MCUCR=(0<<ISC01) | (0<<ISC00);
GIFR=(1<<INTF0) | (0<<PCIF);



// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTA Bit 4
// RD - PORTB Bit 7
// EN - PORTA Bit 5
// D4 - PORTA Bit 0
// D5 - PORTA Bit 1
// D6 - PORTA Bit 2
// D7 - PORTA Bit 3
// Characters/line: 16
lcd_init(16);
 #asm("sei")

while (1)
  {
      
      if(i==1)  // стартовый бит от ПК был то:
      {
           GIMSK=(0<<INT0);  // запретить внешнее прерывание на время приёма
             i=0;            // сбросить флаг
              delay_us(220+55); //задержка длинна бита + 1/4
               for( j=0;j<8;j++) // 8 бит-8 раз
            {
             if  (PINB.6==0) cod|= (1 << 7); //считываем состояние приёмного порта устанавливаем 7й бит
                                             //приёмной переменной если на порте 0 то бит в единицу
              cod=cod>>1;       //сдвигаем содержимое приёмной переменной в право
               delay_us(220);   //пауза равная длинне приёмного бита (4800 бод 1000000/4800=208,33) ставим слегка больше
            }
                print ();     //вывод на ЛСД кода и символа
      
      }
              GIMSK=(1<<INT0); // разрешение на внешнее прерывание для приёма след. байта
               cod=0;          // обнуление раннее принятого значения
   }
}
Оценка
Новичок
 
Аватар для aalex_641
 
Регистрация: 17.03.2018
Адрес: Курган РОССИЯ
Сообщений: 1,079
Репутация: 16
64 24
35 8
 
28.08.2019 23:34 #4
Оба USB-UART выдают одно и то же , в двух разных гипертерминалах . Вопрос . Почему не то , что надо ?
Оценка
Гуру
 
Регистрация: 28.06.2012
Сообщений: 4,596
Репутация: 1058
1,204 77
480 0
 
28.08.2019 23:41 #5
Так может, скорости не совпадают ???
Оценка
Новичок
 
Аватар для aalex_641
 
Регистрация: 17.03.2018
Адрес: Курган РОССИЯ
Сообщений: 1,079
Репутация: 16
64 24
35 8
 
28.08.2019 23:43 #6
Цитата:
Сообщение от kovigor
Так может, скорости не совпадают ???
Дак совпадают ! И в терминалах, и в физических настройках портов 4800
Оценка
Новичок
 
Аватар для aalex_641
 
Регистрация: 17.03.2018
Адрес: Курган РОССИЯ
Сообщений: 1,079
Репутация: 16
64 24
35 8
 
28.08.2019 23:55 #7
Там чувак под ассемблер запилил алгоритм, может с с++ не канает, типа тайминги какие нить не канают .
Оценка
Гуру
 
Регистрация: 28.06.2012
Сообщений: 4,596
Репутация: 1058
1,204 77
480 0
 
28.08.2019 23:55 #8
Тогда ищите, что в формате посылки не так (старт-бит, стоп-бит). И биты данных - старшими разрядами вперед или младшими ?
Оценка
Новичок
 
Аватар для aalex_641
 
Регистрация: 17.03.2018
Адрес: Курган РОССИЯ
Сообщений: 1,079
Репутация: 16
64 24
35 8
 
29.08.2019 00:01 #9
Цитата:
Сообщение от kovigor
Тогда ищите, что в формате посылки не так (старт-бит, стоп-бит). И биты данных - старшими разрядами вперед или младшими ?
Там вроде как по его алгоритму то всё должно быть правильно , я про старты , стопы и направления ...Вот есть небольшое недопонимание под каой приём данных он имел ввиду ... у него какая то прога которая у меня не заработала на компе как надо . Может какой то свой теминал .... вот я то и спросил .
Оценка
Гуру
 
Регистрация: 28.06.2012
Сообщений: 4,596
Репутация: 1058
1,204 77
480 0
 
29.08.2019 00:03 #10
Так вот это и плохо, что вы пользуетесь неизвестным терминалом. Вообще не используйте терминал автора, используйте стандартный ГиперТерминал или TeraTerm. В конце концов, даже в CodeVision есть свой терминал ...
Оценка
Ответ
Страница 1 из 4
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 15:29.
Обратная связь РадиоЛоцман Вверх