Например TDA7294

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





Текущее время: Вт апр 16, 2024 20:44:52

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


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



Начать новую тему Ответить на тему  [ Сообщений: 2102 ]     ... , , , 100, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн июн 12, 2017 05:57:26 
Встал на лапы

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Пн окт 03, 2011 19:59:52
Сообщений: 104
Рейтинг сообщения: 0
Прошу прощения, вы меня не правильно поняли. Я в курсе что фьюзы выставляются при прошивке. Вопрос в том - можно ли по исходнику узнать какие фьюзы нужно выставить?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн июн 12, 2017 08:23:28 
Это не хвост, это антенна
Аватар пользователя

Карма: 8
Рейтинг сообщений: 193
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1441
Рейтинг сообщения: 0
Только анализируя что используется. Например, если в ATmega8/48/... используется таймер 2 в асинхронном режиме, наверняка там должен висеть часовой кварц, а это значит что тактирование ядра будет не от него же, а от встроенного RC-генератора. Или если вывод RESET или JTAG используются как обычные порты ввода-вывода, должны быть установлены соответствующие фузы. Или если нигде нет настройки сторожевого таймера и его сбросов, надо его и фузами отключить. Ну и так далее.
Иногда необходимые фузы прописываются в каком-то из файлов конфигурации или описания, или даже в Makefile.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Ср авг 16, 2017 09:32:29 
Первый раз сказал Мяу!

Зарегистрирован: Чт фев 13, 2014 13:17:42
Сообщений: 27
Откуда: Донецк
Рейтинг сообщения: 0
WinAVR-20100110
Как стал объем
Program: 50.0% Full,
То *.hex - файл не шьется
делаешь 49.9 - все норм

WinAVR- вроде как свободна для распространения?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Ср авг 16, 2017 09:46:08 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
А контроллер-то правильный?


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Ср авг 16, 2017 09:50:09 
Первый раз сказал Мяу!

Зарегистрирован: Чт фев 13, 2014 13:17:42
Сообщений: 27
Откуда: Донецк
Рейтинг сообщения: 0
Если вопрос мне, то стоит mega128 и WinAVR сообщает тоже при компиляции


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Ср авг 16, 2017 19:58:05 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
что ж вы такое на 64 килобайта насочиняли-то?! может, оптимизацию включить забыли?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Чт авг 17, 2017 15:12:23 
Первый раз сказал Мяу!

Зарегистрирован: Чт фев 13, 2014 13:17:42
Сообщений: 27
Откуда: Донецк
Рейтинг сообщения: 0
В теме: Глюки программирования mega128

Я уже сообщал, что прога не моя.
Я ищу глюки и аддаптирую её для работы с портом.
А вообще содержание - это меню, LCD, небольшая обработка графики, клава, внешняя ОЗУ, работа с UART

Посмотрю Make: какой там ключ

Добавлено after 4 hours 4 minutes 10 seconds:
Из Даташит:

Цитата:
Внутрисистемно программируемая флэш-память программ ATmega128 содержит 128 кбайт
внутренней внутрисистемно перепрограммируемой флэш-памяти для хранения программы.
Поскольку все AVR-инструкции являются 16 или 32-разр., то флэш-память организована как 64
кбайт х 16. Для программной защиты флэш-память программ разделена на два сектора: сектор
программы начальной загрузки и сектор прикладной программы.

Регистр RAMPZ обычно используется для указания той страницы ОЗУ размером 64 кбайт, к
которой выполняется доступ через Z-указатель. Т.к. ATmega128 не поддерживает память на
статическом ОЗУ размером свыше 64 кбайт, то данный регистр используется только для выбора
страницы памяти программ, доступ к которой осуществляется с помощью инструкций ELPM/SPM.
Различные установки бита RAMPZ0 имеют следующий результат:
RAMPZ0 =0:
Инструкции ELPM/SPM осуществляют доступ к памяти программ в диапазоне адресов
$0000 - $7FFF (младшие 64 кбайт)
RAMPZ0 =1:
Инструкции ELPM/SPM выполняют доступ к памяти программ в диапазоне адресов
$8000 - $FFFF (старшие 64 кбайт)
Обратите внимание, что действие инструкции LPM не зависит от установки RAMPZ.


Получается программно нужно как-то расширять возможности записи программ больше 64к
или все приехали: на данном микроконтроллере дальше не уедешь?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Чт авг 17, 2017 16:08:49 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
А каким методом прошивка происходит? Беглый взгляд на даташит на предмет RAMPZ говорит, что это вроде как критично лишь при самопрограммировании (через загрузчик).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт авг 18, 2017 08:47:03 
Первый раз сказал Мяу!

Зарегистрирован: Чт фев 13, 2014 13:17:42
Сообщений: 27
Откуда: Донецк
Рейтинг сообщения: 0
WinAVR, а далее запись через SinaProg


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт авг 18, 2017 09:01:34 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Пользуйтесь avrdude - в комплекте WinAVR есть, и в типовом шаблоне makefile тоже есть вызов. Не шиться может только по вине программатора, ядро МК тут совсем не при чем, и объем прошивки тоже не при чем.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Структуры в PROGMEM
СообщениеДобавлено: Вс окт 08, 2017 12:27:54 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Что-то мне странного захотелось - положить в PROGMEM массив структур. Или что-то еще в том же духе.

Конкретно - список станций для приемника на RDA5807 (WiseLord, похоже, модификация Вашего творения, но с экраном от Нокии 5110). То есть в в программной флеши должно лежать слово с частотой, за ним - строка текста (допустим, 16 байт) с названием станции, и так 10 и более раз.

Естественно, положить отдельно таблицу частот, отдельно - таблицу с названиями станций - не вопрос. Только править такое - это два разных изменения одной программы, т.е. потенциальный источник ошибок для не очень хорошего специалиста. А хочется сочинить макрос для того, чтобы вносить каждую станцию одной отдельной строчкой. Тогда кто угодно сможет скорректировать под себя список станций, необязательно вообще быть программистом.

Беглый поиск в Нете ничего хорошего не принес... :(

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вс окт 08, 2017 12:39:43 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Не совсем понял, как Вы собираетесь корректировать станции, находящиеся в PROGMEM?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вс окт 08, 2017 18:26:05 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Как-как? Студией, вестимо. Просто в той программуле, которую я нашел, при изменении списка станций, править надо в пяти местах: во-первых, в блоке #define с частотами надо сделать два исправления - исправить define-имя для частоты станции и собственно саму частоту, затем два раза в блоке if'ов - define-имя этой станции и текст с ее названием, и, наконец, надо исправить "магическую" константу "15" в конце, на завороте таблицы станций. Я сам, пока вносил список своих станций, пару-тройку раз ошибся. А хотелось что-нибудь, вроде:
Код:
// Начало списка станций
RadioDef(10050," Тенгри FM ");
RadioDef(10120,"Радио Текс ");
        ....
RadioDef(10770,"  Дала FM  ");
// Конец списка станций
Впрочем, конечно, никто не мешает положить частоту в текстовом виде в начало каждой из строк с названием станций, фиксированным количеством цифр, а потом преобразовать его программно. Так, вероятно, и сделаю...

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн окт 09, 2017 07:03:29 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Насколько я знаю, WinAVR не позволяет макросом определять строковую константу и одновременно делать ссылку на неё в массиве. Для массива станций в ОЗУ проблем нет, макросы элементарны, для flash - заметно хуже.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн окт 09, 2017 15:49:23 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Доброго времени суток.
Требуется помощь по оптимизации быстродействия кода, так скажем идея.
Компилятор CVAVR.

Самый быстрый получается вот такой
Спойлер
Код:
#define PORT_VID   PORTD
#define   DDR_VID      DDRD
#define   VID_PIN      7

char *u;

#define COLUMN(r) transver(font[r][fontline]);            // 5.6875us
void transver ( char a) {           
   //Для 8-и бит.        //5.6875us
     
        if (a & 0b00000001) { PORT_VID.VID_PIN = 1;} else { PORT_VID.VID_PIN = 0;}
        if (a & 0b00000010) { PORT_VID.VID_PIN = 1;} else { PORT_VID.VID_PIN = 0;}
        if (a & 0b00000100) { PORT_VID.VID_PIN = 1;} else { PORT_VID.VID_PIN = 0;}
        if (a & 0b00001000) { PORT_VID.VID_PIN = 1;} else { PORT_VID.VID_PIN = 0;}
        if (a & 0b00010000) { PORT_VID.VID_PIN = 1;} else { PORT_VID.VID_PIN = 0;}
        if (a & 0b00100000) { PORT_VID.VID_PIN = 1;} else { PORT_VID.VID_PIN = 0;}
        if (a & 0b01000000) { PORT_VID.VID_PIN = 1;} else { PORT_VID.VID_PIN = 0;}
        if (a & 0b10000000) { PORT_VID.VID_PIN = 1;} else { PORT_VID.VID_PIN = 0;}         
}
}

Вызов через указатель
      COLUMN(*u++);
      COLUMN(*u++);
Пробовал такие
Спойлер
Код:
//#define COLUMN(r) transver_3(font[r][fontline]);          // 11.187us
//#define COLUMN(r) transver_2(&reg1,font[r][fontline]);    // 26.562us
//#define COLUMN(r) transver_4(font[r][fontline]);          // 41.125us
//#define COLUMN(r) transver_5(font[r][fontline]);          // 10.938us
//#define COLUMN(r) transver_6(font[r][fontline]);          // 6.1875us

void transver_3 ( char a) {           
   //Для 8-и бит.     // 11.187us
   char i;   
   for(i=0; i<8; i++)
   {
      if(a & 1)   //выводим данные
         PORT_VID.VID_PIN = 1;
      else
         PORT_VID.VID_PIN = 0;
      a >>= 1;
   }         
}


typedef struct ShiftReg_t
{
   char *port;
   char data_pin;

}ShiftReg;

ShiftReg reg1 = {&PORT_VID, 1<<VID_PIN};

void transver_2 (ShiftReg *reg, char value) {           
   char i;         // 26.562us
   for(i=0; i<8; i++)
   {
      if(value & 1)   //выводим данные
         *reg->port |= reg->data_pin;
      else
         *reg->port &= ~reg->data_pin;
      value >>= 1;
   }         
}


void transver_4 ( char a) {           
   //Для 8-и бит.   // 41.125us
   char i=0;
   do
   {
        PORT_VID.VID_PIN = ((a & (1 << i)) >> i)&0x01; //побитно на PB7
        i++;   
      
   } while (i<8);       
}

void transver_5 ( char a) {           
   //Для 8-и бит.  // 10.938us
   char i=0; 
   do
   {
        PORT_VID.VID_PIN = a & 0x01; //побитно на PB7   
      a >>= 1;
        i++;   
      
   } while (i<8);       
}

void transver_6 ( char a) {           
   //Для 8-и бит.        //6.1875us
       
        PORT_VID.VID_PIN = a & 0x01; //побитно на PB7
        PORT_VID.VID_PIN = a & 0b00000010; //побитно на PB7
        PORT_VID.VID_PIN = a & 0b00000100; //побитно на PB7
        PORT_VID.VID_PIN = a & 0b00001000; //побитно на PB7
        PORT_VID.VID_PIN = a & 0b00010000; //побитно на PB7
        PORT_VID.VID_PIN = a & 0b00100000; //побитно на PB7
        PORT_VID.VID_PIN = a & 0b01000000; //побитно на PB7
        PORT_VID.VID_PIN = a & 0b10000000; //побитно на PB7       
}
Все коды рабочие, проверено правда в симуляторе протеус.
Время измерено протеусом между двумя вызовами COLUMN().


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн окт 09, 2017 16:37:51 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Код какой то странный.
При любом установленном бите в переменной "a" (т.б. "a" имеет какое либо значение), "PORT_VID.VID_PIN" присваивается единица. Иначе - ноль.
Зачем тогда куча условий ? :roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн окт 09, 2017 17:01:04 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Видимо, идея - подёргать ножкой, пробежавшись по всем битам. Правда, насколько это может быть нужно без синхроимпульсов - непонятно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн окт 09, 2017 17:01:46 
Грызет канифоль

Карма: 9
Рейтинг сообщений: 80
Зарегистрирован: Чт ноя 06, 2014 13:09:06
Сообщений: 251
Рейтинг сообщения: 0
При любом установленном бите в переменной "a" (т.б. "a" имеет какое либо значение), "PORT_VID.VID_PIN" присваивается единица. Иначе - ноль.
Зачем тогда куча условий ? :roll:


Не. На ножку порта выдвигается байт младшим битом вперед.
Dimon456, это видеосигнал чтоли? Я так понимаю, биты должны быть одинаковой длительности?

А) Приведи ассемблер transver ()
Если тебе важно быстродействие данного кода, можно его на ассемблере переписать
Б) если флеша много свободного, можно и 256 функций (для каждого байта своя функция), тогда ветвлений при выдаче байта не будет
В) Если есть возможность использовать ножку MOSI, то можно выдавать байт в SPI, а SPI контроллер сам сдвинет байт
...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн окт 09, 2017 17:23:17 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Да, это видеосигнал.
Изначально так и было, через MOSI.
Спойлер
Код:
#define COLUMN(r) SPDR=font[r][fontline];                 //1.5625us  SPSR = (1<<SPI2X);
Просто может есть еще какое-то решение, не использовать MOSI.
Ассемблер
СпойлерИзображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн окт 09, 2017 17:28:41 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Ваш код в функции transver равносилен строке :
Код:
PORT_VID.VID_PIN = a!=0;    // Или PORT_VID.VID_PIN = a;
:)


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28


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

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


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