1. В сообществе нашего форума Вконтакте создан раздел по продаже электронных компонентов.
    Каждый может продать в нем свои залежавшиеся детали. Подробности здесь.

uart на си

Тема в разделе "AVR", создана пользователем timsoon, 27 ноя 2015.

  1. timsoon

    timsoon В доску свой

    Сообщения:
    378
    Симпатии:
    46
    Род занятий:
    КИПиА, it, и прочее
    Адрес:
    г.Капчагай
    может еще пару лет ковырять буду, если бы не она , много чего по мк, си, си++ не освоил.
    А так работы не початый край. Только монетизировать пока не получается. :(
  2. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.489
    Симпатии:
    371
    Адрес:
    Талгар
    у шишкина посмотри ;)
    timsoon нравится это.
  3. timsoon

    timsoon В доску свой

    Сообщения:
    378
    Симпатии:
    46
    Род занятий:
    КИПиА, it, и прочее
    Адрес:
    г.Капчагай
    Думал обойдусь обменом по уарт одним символом. Оказалось нет, решил подключить к мк esp8266. Теперь нужно принимать целую строку . В ней отделять id , команду и данные. Нарыл только скейтч для ардуино. Никто не встречал чистый си код атмел студио? А то боюсь придется ардуинщиком стать - уже информацию рою про esp8266 и arduino. Инфы мало и что-то не усваивается мною.


    Код:
    #include <string.h>
    char unitID_in[10];
    char command_in[10];
    char data_in[100];
    void setup() {
      // открываем порт
      Serial.begin(9600);
    }
    void loop() {        
      int i=0;
      char buffer[100];
    //если есть данные - читаем
      if(Serial.available()){
         delay(100);
         
         //загоняем прочитанное в буфер
         while( Serial.available() && i< 99) {
            buffer[i++] = Serial.read();
         }
         //закрываем массив
         buffer[i++]='\0';
      }
    //если буфер наполнен
      if(i>0){ 
        
        //разбераем его на части отделенные запятой
        sscanf(buffer, "%[^','],%[^','],%s", &unitID_in, &command_in, &data_in);
        
      }
      
    //Исполнительная часть
    //Проверяем какому устройству пришли данные
    //тестовое устройство 001
        if ((String)unitID_in == "001"){  //test serial read
          Serial.print("001,arduino recive: unit ");
          Serial.print(unitID_in);
          Serial.print("\n");
          Serial.print("command: ");
          Serial.print(command_in);
          Serial.print("\n");
          Serial.print("data: ");
          Serial.print(data_in);     
          Serial.print("\n");
          unitID_in [0] = '\0';
          command_in [0] = '\0';           
        }
        
    //пример выполнения команды устройством 013
         if ((String)unitID_in == "013"){
          
          if ((String)command_in == "on"){
              digitalWrite(13, HIGH);}
          if ((String)command_in == "off"){
              digitalWrite(13, LOW);}  
              
          Serial.print("001,arduino recive: unit ");
          Serial.print(unitID_in);
          Serial.print(" command ");
          Serial.print(command_in);
          Serial.print("\n");
          unitID_in [0] = '\0';
          command_in [0] = '\0';           
        }
    }
  4. .ctor

    .ctor В доску свой

    Сообщения:
    720
    Симпатии:
    209
    Род занятий:
    парогенератор
    Адрес:
    Алматы
    Поставь CodeVisionAVR, там есть неплохой визард по инициализации МК. Я его использую, в даташитах очень лень копаться постоянно. По UART там тоже в целом неплохой шаблон делается.
    timsoon нравится это.
  5. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.577
    Симпатии:
    355
    Адрес:
    Алматы
    C ESP8266 стандартный обмен по uart, работа со строками через стандартный string.h, по идее не должно быть проблем с портом на gcc.
    timsoon нравится это.
  6. timsoon

    timsoon В доску свой

    Сообщения:
    378
    Симпатии:
    46
    Род занятий:
    КИПиА, it, и прочее
    Адрес:
    г.Капчагай
    Спасибо за отклик. Я пока хочу без подключения библиотек вкурить сам процесс образования строки по-байтно и потом понять процесс разделения строки и сравнения ее части с эталонной командой-строкой внутри мк.
  7. jtag

    jtag Гость

    Сообщения:
    27
    Симпатии:
    0
    Адрес:
    Астана, Молодежное
    Добрый день уважаемые. Первый раз разбираюсь с мегой 64. Не могу включить uart1.
    В протеусе все работает. А на железе ничего. Выставил фьюзы такие: -U lfuse:w:0xe4:m -U hfuse:w:0x99:m -U efuse:w:0xff:m Частота 8 Mhz, отключен режим совместимости Mega103. В терминал ничего не приходит. Проверил пины RX TX, изменял напряжение, высокое, низкое, все норм.
  8. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.489
    Симпатии:
    371
    Адрес:
    Талгар
    там во фьюзах случайно jtag не включен ? у меня тоже мега 16 работать не хотела ;)
  9. jtag

    jtag Гость

    Сообщения:
    27
    Симпатии:
    0
    Адрес:
    Астана, Молодежное
    jtag полюбому включен по дифолту, жаль отключил ничего не изменилось
  10. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.489
    Симпатии:
    371
    Адрес:
    Талгар
    а на этих ногах, которые используются для uart больше ничего не назначено фьюзами ?
  11. jtag

    jtag Гость

    Сообщения:
    27
    Симпатии:
    0
    Адрес:
    Астана, Молодежное
    Нет, там int2 и int3 и больше ничего. Читал переписку как настраивали тот же uart1 на atmega64, там все запустилось а тут никак. Может я их поджег чуть, внутри, где управляется uart'ом.
  12. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.489
    Симпатии:
    371
    Адрес:
    Талгар
    это ноги для внешних прерываний вроде, а можно может переназначить uart на другие ноги ?
  13. Чапаев

    Чапаев В доску свой

    Сообщения:
    195
    Симпатии:
    20
    Род занятий:
    Охранные системы безопасности
    Адрес:
    Астана
    Камень живой? Ногами дергает с нужной частотой?

    на UART1 на выходе для проверки написать вывод тестовых данных, будут ли вываливаться данные?
    Может только прием RX не работает.

    Режим совместимости с мега103 точно отключен? Может у вас инверсные фузы
    Последнее редактирование: 7 янв 2017
  14. Дмитрий BASIC

    Дмитрий BASIC В доску свой

    Сообщения:
    199
    Симпатии:
    104
    К компу через что подключено , через переходник или напрямую к порту COM ?
    Скорости еще проверти !
    Buba_Chkhadze нравится это.
  15. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.489
    Симпатии:
    371
    Адрес:
    Талгар
    да, кстати, через переходник может не работать
  16. jtag

    jtag Гость

    Сообщения:
    27
    Симпатии:
    0
    Адрес:
    Астана, Молодежное
    Все, причину нашел. Отходила ножка контроллера. Мультиметром все звонилось. А сигнал не проходил.
  17. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.489
    Симпатии:
    371
    Адрес:
    Талгар
    вай маладэс ну :)
  18. Bartenev_Jeduard

    Bartenev_Jeduard Гость

    Сообщения:
    1
    Симпатии:
    0
    Не поверите, но именно тут я нашел решение своей проблемы

Поделиться этой страницей