Например TDA7294

Форум РадиоКот • Просмотр темы - Помогите портировать исходник с Arduino в CVAVR
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб июл 26, 2025 21:50:56

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


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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Помогите портировать исходник с Arduino в CVAVR
СообщениеДобавлено: Чт фев 05, 2015 11:49:22 
Открыл глаза
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Пт апр 30, 2010 16:09:16
Сообщений: 78
Откуда: Мариуполь (украина)
Рейтинг сообщения: 0
Привет знатные коты! :))
Есть вот такой исходничек https://github.com/probonopd/arduino-in ... to_hex.ino
Посылает из ПК по сом-порту данные коды кнопки пульта, а мк воспроизводит их на ик-диод, - своего рода пульт универсальный.
Переделываю его под свою среду CVAVR.
Вроде как все норм идет, но вот выдаёт он не то что нужно - подозреваю что ошибка в этом участке кода. Но не знаю чем заменить функцию strtol.
Код:
 void go_ir()
 
{
     uint16_t array[80];
     uint16_t j = 0;
     uint8_t i = 0;
        if ( !strncmp(rx_buffer0, "AVR_SIR", 7) )
          {
            char *p = rx_buffer0+4; //указываем начало
             while ( (p = strchr(p,' ')) != NULL ) //ждём пока недойдем до пробела и записываем номер строки
             //теперь нужно склеить  от начла до конца и  записать в массив

              array[j++] = atol(p); // это функция ту что я применил
             // array[j++] = strtol(p, &p, 16); //а вот это родная в ардуине и каким аналого её заменить незнаю
 

             ir_start(array);  //посылаем склееные части
          /*
             putsf("SENT ");
            for ( i = 0; i < j; i++ )
            {
             putsf("0x");
             printf ("%c",array[i]);
             putsf(" ");
             }
            */



    }


Пологаю, что мне нужно взять символы с начало "*р" и склеить их до символов "р" ...а вот как это сделать не знаю...
Не подскажите?


Вложения:
Комментарий к файлу: модель в протеус
ver_328.rar [29.98 KiB]
Скачиваний: 130
Комментарий к файлу: мой исходник в кодевижене
ir_328.c [13.01 KiB]
Скачиваний: 175

_________________
AVR FOR CИ РУЛИТ)))
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите портировать исходник с Arduino в CVAVR
СообщениеДобавлено: Чт фев 05, 2015 12:26:59 
Друг Кота
Аватар пользователя

Карма: 117
Рейтинг сообщений: 1531
Зарегистрирован: Ср сен 18, 2013 10:08:26
Сообщений: 4732
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
В тексте if не закрыт.

Склеивать можно множеством способов. Можно самому в массив добавлять, можно функции серии sprint.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите портировать исходник с Arduino в CVAVR
СообщениеДобавлено: Чт фев 05, 2015 12:40:34 
Открыл глаза
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Пт апр 30, 2010 16:09:16
Сообщений: 78
Откуда: Мариуполь (украина)
Рейтинг сообщения: 0
За if да, не все скопировалось видимо)

Добавлять прямо в массив не получится -если только отдельный... в тот массив array записывается уже преобразованная строка из символов в число.

_________________
AVR FOR CИ РУЛИТ)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите портировать исходник с Arduino в CVAVR
СообщениеДобавлено: Чт фев 05, 2015 14:27:20 
Открыл глаза
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Пт апр 30, 2010 16:09:16
Сообщений: 78
Откуда: Мариуполь (украина)
Рейтинг сообщения: 0
Сделал вот так
Код:
 void go_ir()
 
{
     uint16_t array[80];

     uint16_t j = 0;
     uint8_t i = 0;
        if ( !strncmp(rx_buffer0, "AVR_SIR", 7) )
          {
            char str_out[4];
            char *p = rx_buffer0+4; //указываем начало
            char pp = *p;
             while ( (p = strchr(p,' ')) != NULL ) //ждём пока недойдем до пробела и записываем номер строки
             //теперь нужно склеить  от начла до конца и  записать в массив
             // array[j++] = strtol(p, &p, 16);
             for(i=0;i<4;i++)
             {
              buff[i] = rx_buffer0[pp+i];
             }
             strcpy(str_out,buff);
             array[j++] = atoi(str_out);

             ir_start(array);  //посылаем склееные части

    }
    delay_ms(250);
     ir_stop();
 }



но на выходе ноль - на ик-диоде...
в симуляторе в отладчикепосмотрел - в буфер строка записывается, а вот конечной строке str_out какойто мусор

_________________
AVR FOR CИ РУЛИТ)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите портировать исходник с Arduino в CVAVR
СообщениеДобавлено: Чт фев 05, 2015 15:09:29 
Друг Кота
Аватар пользователя

Карма: 117
Рейтинг сообщений: 1531
Зарегистрирован: Ср сен 18, 2013 10:08:26
Сообщений: 4732
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
А где вы формируете str_out?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите портировать исходник с Arduino в CVAVR
СообщениеДобавлено: Чт фев 05, 2015 21:46:03 
Открыл глаза
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Пт апр 30, 2010 16:09:16
Сообщений: 78
Откуда: Мариуполь (украина)
Рейтинг сообщения: 0
вот здесь
Код:
  strcpy(str_out,buff);

не правильно?

_________________
AVR FOR CИ РУЛИТ)))


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Помогите портировать исходник с Arduino в CVAVR
СообщениеДобавлено: Пт фев 06, 2015 09:08:36 
Друг Кота
Аватар пользователя

Карма: 117
Рейтинг сообщений: 1531
Зарегистрирован: Ср сен 18, 2013 10:08:26
Сообщений: 4732
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Проверяем, если rx_buffer0 не равно "AVR_SIR", тогда исполняется if
if ( !strncmp(rx_buffer0, "AVR_SIR", 7) )
{
char str_out[4];
char *p = rx_buffer0+4; //указываем начало
char pp = *p;
Получили адрес строки
while ( (p = strchr(p,' ')) != NULL ) //ждём пока недойдем до пробела и записываем номер строки
//теперь нужно склеить от начла до конца и записать в массив
// array[j++] = strtol(p, &p, 16);
for(i=0;i<4;i++)
{
buff[i] = rx_buffer0[pp+i];
Почему вы адрес используете как индексатор?
}
Тут я не понимаю почему вайл должен остановиться?
strcpy(str_out,buff);
Соотвественно и записываем то, что далеко вне области буфера
array[j++] = atoi(str_out);

ir_start(array); //посылаем склееные части
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите портировать исходник с Arduino в CVAVR
СообщениеДобавлено: Пт фев 06, 2015 13:21:02 
Открыл глаза
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Пт апр 30, 2010 16:09:16
Сообщений: 78
Откуда: Мариуполь (украина)
Рейтинг сообщения: 0
В исходной программе так было, и я решил не менять...

_________________
AVR FOR CИ РУЛИТ)))


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

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


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

Сейчас этот форум просматривают: olmoro666 и гости: 15


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

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


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