Специальные цены   новые товары
Закрытая тема
Страница 15 из 33 ПерваяПервая ... 5 13 14 15 16 17 25 ... ПоследняяПоследняя
Показано с 561 по 600 из 1300

Открытый проект универсального зарядника

Тема раздела Самодельная электроника, компьютерные программы в категории Общие вопросы; Может быть ЕУ2 както себя фигово ведет при малых напряжениях? Может ограничена ширина минимального импульса? И оба ключа переходят в ...

  1. #561

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Может быть ЕУ2 както себя фигово ведет при малых напряжениях?
    Может ограничена ширина минимального импульса?
    И оба ключа переходят в полуоткрытое состояние?

  2.  
  3. #562

    Регистрация
    24.01.2005
    Адрес
    Москва
    Возраст
    49
    Сообщений
    1,079
    Цитата Сообщение от R2D2 Посмотреть сообщение
    Может быть ЕУ2 както себя фигово ведет при малых напряжениях?
    Может ограничена ширина минимального импульса?
    И оба ключа переходят в полуоткрытое состояние?
    К ЕУ2 пока претензий нет - претезии к самому себе за фигово изготовленный дроссель. Чисто моя оплошность. IRFы закончились... тоска. В понедельник куплю штучек 10, перемотаю транс и дросель.
    Вопрос к R2D2 - диапазон токов/напряжений? Лично мне более 3 А не нужно, борт-зажигалку-липоли на электричке. Всё. Но для народного девайса хотелось бы поболее. Хотелось бы, чем меньше (габариты) - тем лучше, но 24В при 10А при простой схемотехнике потребуют большого объёма.

  4. #563

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Я так и думал 5А 24-26в =100Ватт Если КПД 50% то получается 200Ватт. 100Ватт рассеять кой как можно.
    Из теории 200 Ватт это максимум для дросселей работающих в режиме накопления.
    Далее поработав над материалом и обмотками и щелью можно было бы еще пару ампер сэкономить.
    Заодно почувсвовать 7 чувством как вообще это все работает как частота на все это влияет.
    Так сказать вариационное извращение. Может быть экстремум нащупать удасца.
    Купил для сепика 100 шт. 1мкф 50в неполярных 0612 за 120 руб. (может быть в конденсаторе дело)

    Заканчиваю паять цифровую часть от v1.1 и приступаю к адаптации прошивки.
    Попытаюсь вынести дисплейный алгоритм в отдельную программу, чтобы можно было меняя подпрограмму делать прошивки отдельно для ЖКИ 2х16 4х20 и графического.

  5. #564

    Регистрация
    21.11.2006
    Адрес
    Нижний Новгород
    Возраст
    44
    Сообщений
    5,323
    КПД 50% ???
    ИМХО, с такими данными получится позорный утюг, а не зарядник. Уж делать, так делать как следует, КПД системы не должен быть менее 75% хотя бы.

  6.  
  7. #565

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Ну да я и говорю экстремум нащупать - сочетание параметров для максимального отжатия амперов.

  8. #566

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Убрал
    Последний раз редактировалось R2D2; 19.12.2008 в 00:48.

  9. #567

    Регистрация
    21.11.2006
    Адрес
    Нижний Новгород
    Возраст
    44
    Сообщений
    5,323
    В схеме ошибка в подключении PWM1 к IR4426. Все PWM-ы надо в нейтраль утянуть резисторами подтяжки. Vref в схеме отсутствует, но по-прежнему подключено на входы ОУ.
    А что за схемка-то? Что-то новенькое, да еще на Пике.

  10.  
  11. #568

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Хотел убрать не удалось.

    Это очень сырая схема. Замечания учтем. Это идея PSW криво воплощенная.

    Пик который управляет совмещенным понижающим и повышающим преобразователем.

    Все оформлено как еще одна силовая к v1.1

    Выбран пик потому что у него можно поставить частоту счетчика шим 48мгц и есть 4 канала шим и он более менее доступен.

  12. #569

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Исправил:Вложение 141729
    Последний раз редактировалось R2D2; 19.12.2008 в 00:48.

  13. #570

    Регистрация
    21.11.2006
    Адрес
    Нижний Новгород
    Возраст
    44
    Сообщений
    5,323
    Не подключены к Пику CH_ON, DCH_ON. R20 не нужен - есть встроенный в Пике. PWM1 надо не на 1, а на 2 вывод драйвера.
    Про PWM3 забыли - его тоже на землю резистором подтяжки.
    Подтяжку PWM1 и PWM2 надо не к +9В, а к +5В - зачем защитные диоды Пика мучать?

  14. #571

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Спасибо исправил. Вложение 141789
    Последний раз редактировалось R2D2; 19.12.2008 в 00:48.

  15. #572

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Как измерить действительную емкость конденсатора на частоте 250 кГц?

  16. #573

    Регистрация
    21.11.2006
    Адрес
    Нижний Новгород
    Возраст
    44
    Сообщений
    5,323
    Измерить - никак. Нужно просто скачать даташит на необходимую серию конденсаторов и там узнать все нужные данные.

  17. #574

    Регистрация
    24.01.2005
    Адрес
    Москва
    Возраст
    49
    Сообщений
    1,079
    Цитата Сообщение от R2D2 Посмотреть сообщение
    Как измерить действительную емкость конденсатора на частоте 250 кГц?
    Для этого потребуется перестраиваемый генератор с нужной частотой и небольшим выходным сопротивлением, частотомер, осциллограф или вольтметр переменного тока, который может работать на требуемой частоте, резистор сопротивлением где нибудь Ом 10-50, и катушку с индуктивностью L=1/(4*Pi*Pi*F0*F0*C0), где С0 - ёмкость кондёра, написанная на корпусе. Дальше собираем последовательный колебательный контур, одна нога резисторы - на общий. Подключаем генератор и, меняя частоту, ловим резонанс по максимальной амплитуде напряжения на резисторе. Меряем частоту Fr. Считаем ёмкость на этой частоте Cf=1/(4*Pi*Pi*Fr*Fr*L). Всё просто, за исключением катушки и измерения её индуктивности. Нужен LC-метр.

  18. #575

    Регистрация
    24.01.2005
    Адрес
    Москва
    Возраст
    49
    Сообщений
    1,079
    Цитата Сообщение от Shavelsky Посмотреть сообщение
    Для этого потребуется перестраиваемый генератор с нужной частотой и небольшим выходным сопротивлением, частотомер, осциллограф или вольтметр переменного тока, который может работать на требуемой частоте, резистор сопротивлением где нибудь Ом 10-50, и катушку с индуктивностью L=1/(4*Pi*Pi*F0*F0*C0), где С0 - ёмкость кондёра, написанная на корпусе. Дальше собираем последовательный колебательный контур, одна нога резисторы - на общий. Подключаем генератор и, меняя частоту, ловим резонанс по максимальной амплитуде напряжения на резисторе. Меряем частоту Fr. Считаем ёмкость на этой частоте Cf=1/(4*Pi*Pi*Fr*Fr*L). Всё просто, за исключением катушки и измерения её индуктивности. Нужен LC-метр.
    Здравстуйте! Перемотал, наконец-то (в смысле не на конец, но перемотал) и заработало правильно, как в теории! КПД на малых напряжениях сильно "душит" выпрямитель, несмотря ни на что. Правда жизни, как говорит автор темы. В остальном всё вполне живуче, но при малой нагрузке "звенит" транс и дроссель - с совсем малой скважностью работать не получилось, преобразователь работает в режиме "старт-стоп", может виновата большая индуктивность дросселя, или неважнецкая разводка платы - не знаю. Но напругу и ток держит, транзюки почти не греются, вот только звук бесит. Если вариант для зарядника автор считает перспективным, можно направить усилия в сторону уменьшения габаритов и оптимизации моточных данных. Сейчас транс и дроссель на кольцах 6000 транс 2х5 + 2х12, кольцо К42х35х7 (примерно, девайс остался на работе), провод ПЭВ2 0.4х14. Дроссель на таком же кольце и тем же проводом - 40 витков.

  19. #576

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    V1.1 заработала (пока только цифровая). В програматоре есть глюк r11 надо прицепить к X2:3, а не X2:9.
    Чуть с ума не сошел пока выловил. Теперь знаю - проверять нужно все!!!

    Дроссель SEPIC тоже пищит в старой схеме зараза. Может есть какая прормышленная теплопроводная смола с нормальным температурным коэффициентом.
    Конечно интересно в смысле схемы. Постараюсь ее тоже приделать чуть позже.

    Больше всего времени в проекте сожрали интерфейс пользователя и алгоритмы с химией.
    А заделать еще одну силовую легко.
    При человеческом прописывании меню и всех настроек подстроек, деже без учета двухканальности (которая в основном отъела только ОЗУ) в 16кБ проги уместиться не возможно (как мне кажется).

    Очень я озаботился лицензиозностью и доступностью проекта.
    Bulder стоит ~$2000 с возможностью распостронять прогу.
    IAR AVR стоит ~$3000
    Ну вот для программеров одиночек любителей разве такая политика принесет доход?

    Посему хочу "макро" прогу переписать на жабе jdk это займет время на изучение. Мне и по работе надо заодно.
    Искал ченить бесплатное чтобы в КОМ лазить и график нарисовать. Visual Studio Express тормозючий... на моем ноуте.
    Ява тоже тормозючая, но там с переносом на разные платформы говорят хорошо???? да и вообще интересно.
    Да вот узнал - ява и яваскрипт что в браузере это совершенно разные языки.
    Ява может все!!!, но медленнее чем Си. Яваскрипт это так - "по мелочи".

    И микро прогу хочу переписать на АВРовском вин-си. Тоже время на изучение оболочки по часу в день.
    В остальное время правлю микропрограмму по старому с учетом новых особенностей и выбросом аттавизмов.

  20. #577

    Регистрация
    12.01.2007
    Адрес
    Москва
    Возраст
    39
    Сообщений
    188
    Ну, можно Mono попробовать (открытая реализация .NET), я правда не знаю на сколько он завершен
    http://www.mono-project.com/Main_Page
    Кажется для него был plug-in для Eclipse
    http://www.eclipse.org/

  21. #578

    Регистрация
    11.11.2006
    Адрес
    Калуга
    Возраст
    48
    Сообщений
    106
    Цитата Сообщение от R2D2 Посмотреть сообщение
    Очень я озаботился лицензиозностью и доступностью проекта.
    Bulder стоит ~$2000 с возможностью распостронять прогу.
    IAR AVR стоит ~$3000
    Ну вот для программеров одиночек любителей разве такая политика принесет доход?
    WinAvr (это gcc сборка под виндовс - все в комплекте, включая простенькую иде)
    бесплатный, хорошо документированный, в дистрибутиве есть примеры, куча примеров в инете. куча библиотек.
    я на нем последние года 4 под авр пишу, проблем нет (были мелкие в ранних версиях, но легко обходились)
    при необходимости могу подсказать по переходу с иара (хотя все и так просто, может только строковые константы во флеше описываются своеобразно). код получается весьма приличный.

  22. #579

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Ага!
    Нужны примеры по WinAvr (с прерываниями и всякими строковыми структурами). Где почитать?

    Из полезного нашел вот: http://www.myrobot.ru/stepbystep/mc_winavr.php

    Кто-нибудь знает можно ли AVRDUDE - программатор (из комплекта winavr) настроить на PoniProg(овское) железо?

    Говорят компилятор winavr слабее оптимизирует код чем IAR, т.е. неиспользуемое включает.

    Заранее спасибо!

  23. #580

    Регистрация
    12.01.2007
    Адрес
    Москва
    Возраст
    39
    Сообщений
    188
    Цитата Сообщение от R2D2 Посмотреть сообщение
    Ага!
    Нужны примеры по WinAvr (с прерываниями). Где почитать?

    Из полезного нашел вот: http://www.myrobot.ru/stepbystep/mc_winavr.php

    Кто-нибудь знает можно ли AVRDUDE - программатор настроить на PoniProg(овское) железо?
    Можно, причем в конфигурационном файле (avrdude.conf) уже есть вот такой:
    programmer
    id = "pony-stk200";
    desc = "Pony Prog STK200";
    type = par;
    buff = 4, 5;
    sck = 6;
    mosi = 7;
    reset = 9;
    miso = 10;
    pgmled = 8;
    ;

  24. #581

    Регистрация
    11.11.2006
    Адрес
    Калуга
    Возраст
    48
    Сообщений
    106
    Цитата Сообщение от R2D2 Посмотреть сообщение
    Ага!
    Нужны примеры по WinAvr (с прерываниями и всякими строковыми структурами). Где почитать?
    Говорят компилятор winavr слабее оптимизирует код чем IAR, т.е. неиспользуемое включает.
    по прерываниям: как битики в регистрах конфигурить - это у любого компилятора одинаково, пример кода обработчика:
    откуда брать подобное SIG_OVERFLOW0 и SIG_INPUT_CAPTURE1, чтоб не нибивать руками и не ошибаться - смотрим соответствующий процу h-файл в (например для меги8 iom8.h)

    звездочки "*" куда попало движок форума вставил, я не виноват

    #incl*ude <type.h>
    #incl*ude <avr/io.h>
    #incl*ude <avr/interrupt.h>

    SIGNAL (SIG_INPUT_CAPTURE1) //это прерывание по входу захвата, ну далее ясно...
    {
    icp_cur=ICR1-icp_last;
    icp_last=ICR1;
    icp_flg=1;
    }
    /************************************************************************************/
    SIGNAL (SIG_OVERFLOW0)
    {
    pos++;

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

  25. #582

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Спасибо!

    Всегда очень трудно сделать первые шаги.

    1. Про генерацию файла проекта ясно. Используем утилитку MFile
    2. Про стандартный язык ясно. В целом все как обычно в си и названия битов притянуты из даташита.
    3. Про особенности прерываний ясно. Из предыдущего коментария.
    ??? 4. Про особенности описания строковых переменных и работы с различными видами памяти (флэш озу ппзу) не совсем ясно. Подсмотреть бы.
    5. Про компиляцию ясно. Из программерс нотепада
    6. Про прошивание ясно. От тудаже.

  26. #583

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Про ОЗУ все ясно - обычное использование строковых переменных

    А вот про flash и eeprom???

    Например в IAR я делал так:

    typedef BYTE __flash * Txt; // Тип данных строка, оканчивающаяся нулем во флаш
    typedef __flash BYTE __flash * pTxt; // Тип данных массив указателей, находящийся во флаш, на строки, находящиеся во флаш

    // Пункты меню
    pTxt pMn[]=
    {
    (Txt)"1.Канал-1 пуск", //Запуск диалога первого канала (не запускать)
    (Txt)"2.Канал-2 пуск", //Запуск диалога второго канала (не запускать)
    (Txt)"3.Список аккум", //Заголовок
    (Txt)"3.1.Просмотр акк", //Просмотр всех аккумуляторов
    ...
    }

    Далее зная номер указателя на строку можно ее побайтно например рисовать на ЖКИ.
    Да еще забыл спросить про определение фузов прямо в программе. Кажется такое возможно в WinAvr

  27. #584

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Вот нашел инфу: http://avr.h15.ru/index.php?page=winavr

  28. #585

    Регистрация
    11.11.2006
    Адрес
    Калуга
    Возраст
    48
    Сообщений
    106
    Цитата Сообщение от R2D2 Посмотреть сообщение
    1. Про генерацию файла проекта ясно. Используем утилитку MFile
    достаточно руками в мэйкфайле из примера поправить тип процессора и имя исходника

    Цитата Сообщение от R2D2 Посмотреть сообщение
    ??? 4. Про особенности описания строковых переменных и работы с различными видами памяти (флэш озу ппзу) не совсем ясно. Подсмотреть бы.
    вот, посмотри...
    надергал строчек из реального проекта.

    #incl*ude <avr/pgmspace.h>
    #define P(s) ({static const char c[] __attribute__ ((progmem)) = s;c;})
    #define Tx_Str(str) PutStringP(P(str))
    void PutStringP(const char *Str);
    //============================================================
    void Uart_Tx(u_char bt)
    {
    while ( !(UCSRA & (1<<UDRE)) ); //atmega wait for empty transmit buffer
    UDR = bt; // start transmittion
    }
    //============================================================
    void PutStringP(const char *Str)
    {
    char c;
    while ((c = pgm_read_byte(Str++))) Uart_Tx©;
    }
    //============================================================
    int main(void)
    {
    UBRRH = 0;
    UBRRL = 47; //7.3728M 9600
    UCSRB = (1<<RXEN)|(1<<TXEN); // Enable Receiver and Transmitter
    UCSRC = (1<<URSEL)|(3<<UCSZ0); // Set frame format: 8data, 1stop bit
    Tx_Str("эта строка в флеш-памяти программ");
    }

  29. #586

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Вот такие штуковины:

    Это цифровая часть
    Нажмите на изображение для увеличения
Название: IMG_2460.JPG
Просмотров: 219
Размер:	74.1 Кб
ID:	147043
    Нажмите на изображение для увеличения
Название: IMG_2472.JPG
Просмотров: 159
Размер:	41.0 Кб
ID:	147050
    Вложение 147051

    Это силовая SEPIC
    Броневой сердечник 35мм судя по цвету HM2000
    Зазор 0.5мм
    L1=39 скрутка/0.315мм/7 витков=11мкГн
    L2=13 скрутка/0.315мм/10 витков=26мкГн

    Вложение 147044
    Вложение 147045

    Это силовая BUCK
    Броневой сердечник 35мм без зазора судя по цвету HM2000
    L=1.2мм/до заполнения=5300мкГн
    Вложение 147046
    Вложение 147047

    Это все вместе
    Нажмите на изображение для увеличения
Название: IMG_2457.JPG
Просмотров: 244
Размер:	59.5 Кб
ID:	147048
    Нажмите на изображение для увеличения
Название: IMG_2477.JPG
Просмотров: 171
Размер:	36.3 Кб
ID:	147049
    Думаю засунуть все в старуюкоробку от АТ блока питания.
    Красивую алюминивую коробку в чипе дипе купил (о которой говорилось ранее), крутил и так и сяк - не лезет.
    Надо переразводить.

    Цифровая заработала!!!
    Силовые не включал - прогу переписываю.
    Последний раз редактировалось R2D2; 19.12.2008 в 00:48.

  30. #587

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Мне подкинули книжку djvu

    shpak_yu_a__programmirovanie_na_jazyke_s_dlja_avr_i_pic_mikr.djvu

    Программирование на языке Cи для AVR и PIC микроконтроллеров.

    Там про WinAvr все подробно расписано.

    Чё-то bool gcc не признает!!! Какаято ерунда не пойму.

  31. #588

    Регистрация
    26.12.2005
    Адрес
    Москва,Севастополь
    Возраст
    42
    Сообщений
    212
    Цитата Сообщение от R2D2 Посмотреть сообщение
    Чё-то bool gcc не признает!!! Какаято ерунда не пойму.
    #incl*ude "stdbool.h" поможет

  32. #589

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Помогло однако!!!

  33. #590

    Регистрация
    20.04.2006
    Адрес
    Г.владимир
    Возраст
    51
    Сообщений
    73
    Цитата Сообщение от R2D2 Посмотреть сообщение
    shpak_yu_a__programmirovanie_na_jazyke_s_dlja_avr_i_pic_mikr.djvu
    Программирование на языке Cи для AVR и PIC микроконтроллеров.
    Там про WinAvr все подробно расписано.
    Можете поделиться?
    Сюда или на bob5024 [sobacka] mail.ru

  34. #591

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Вот некоторые рассуждения, которые посетили меня.
    Я постараюсь реализовать их именно в этом виде.
    Возможно, они будут полезны комунибудь.

    // Отображение информации на LCD происходит в 2 уровня как и раньше.

    // Высокий уровень:
    // Доступен из основной программы в "любой момент времени".
    // Вызов отрисовки прозводится через подпрограмму PrnScr(BYTE SHABLON, BYTE PERIOD)
    // Шаблон это командная последовательность байтов. Например: очистить экран, вывести
    // строку S, вывести переменную P, поставить курсор, стереть подстроку. Указанные элементы шаблона
    // могут быть прорисованы единожды или обновляемы при каждой прорисовке.
    // Шаблоном может быть стандартное отображение Меню или Экран хода зарядки или тестирования.
    // Механизм шаблонов позволяет гибко настраиваться на разного размера экраны (2х16 или 4х20)
    // и производить русификацию, англификацию.
    // После вызова шаблон становится текущим и обновляется (его изменяемая часть) в основной программе
    // при наступлении PERIOD.
    // Прорисовка шаблона происходит в видеопамять.
    // Если низкий уровень не доделал свое задание (не послал видеопамять в ЖКИ),
    // прорисовка шаблона не происходит до следующего PERIOD.
    // Во время прорисовки шаблона низкий уровень ждет.

    // Низкий уровень
    // Во время работы низкого уровня высокий уровень ждет.
    // Любой вид LCD может быть подменен заменой низкоуровневой подпрограммы (драйвера LCD).
    // В случае текстового LCD каждая буква видеопамяти превращается в
    // низкоуровневую последовательность байтов-команд для установки и сбрасывания
    // битов управления LCD через равные промежутки времени, определенные прерыванием.
    // В случае графического LCD, посылка каждой буквы происходит посылкой адреса
    // спрайта и самого спрайта (например из 8 байт).
    // В случае графического LCD интегрированного с железным драйвером-процом, происходит передача
    // управляющих последовательностей процу, который сам работает со своим LCD.
    // Посылка низкоуровневых команд в LCD, происходит, используя прерывания, через равные промежутки
    // времени - позволит избавиться от ожиданий готовности LCD и равномерно распределит
    // вычисления на процессор вперемешку с основной задачей - контроля заряда.

    // Т.о. мы имеем одно неизменяемое программное ядро работы с зарядкой и гибкое решение по привязке к различным LCD

  35. #592

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Ацтой!!!

    То, что под IAR занимало 65%FLASH и 80%SRAM
    под WinAvr занимает 104%FLASH и 130%SRAM
    В обоих случаях выбрана максимальная оптимизация.

    А мне надо значительно переписать прогу. Количество текстов увеличится. С учетом наработанного опыта многие самопальные функции уйдут в пользу библиотечных и объектная ориентированность уменьшит количество вызовов объем и скорость. Короче под IAR закончить проект на этом проце - реально. Для WinAvr надо брать другой проц раза в 2 больше по всему.

    Можно отказаться от float и написать свой класс целочисленный floor(float*100)=long
    Т.е. IAR показывает, что экономить есть возможность.
    Но посвятить себя экономии -

    Где заработать $5000, чтоб стать чесным и работать на лучшем?

  36. #593

    Регистрация
    11.11.2006
    Адрес
    Калуга
    Возраст
    48
    Сообщений
    106
    Цитата Сообщение от R2D2 Посмотреть сообщение
    Ацтой!!!

    То, что под IAR занимало 65%FLASH и 80%SRAM
    под WinAvr занимает 104%FLASH и 130%SRAM
    В обоих случаях выбрана максимальная оптимизация.

    А мне надо значительно переписать прогу. Количество текстов увеличится. С учетом наработанного опыта многие самопальные функции уйдут в пользу библиотечных и объектная ориентированность уменьшит количество вызовов объем и скорость. Короче под IAR закончить проект на этом проце - реально. Для WinAvr надо брать другой проц раза в 2 больше по всему.

    Можно отказаться от float и написать свой класс целочисленный floor(float*100)=long
    Т.е. IAR показывает, что экономить есть возможность.
    Но посвятить себя экономии -

    Где заработать $5000, чтоб стать чесным и работать на лучшем?
    math вроде вполне приличный, я достатосно его использовал.

    а листинг смотреть не пробовали? странный эффет - по коду еще можно поверить (с большим трудом), а по озу непонятно: все структуры данных описываете сами, откуда перерасход?
    что смотреть:
    строковые константы как описаны (я выше пример приводил, ниже еще кусок)
    стандартный printf не используете? я предпочитаю вывод сам писать.
    может лишние библиотеки подключены?
    оптимизация какая стоит? самая большая циферка не значит самая лучшая...

    пример констант:
    #incl*ude <avr/pgmspace.h>
    prog_char const SinTable[] = "\x80\x98\xB0\xC5\xD8\xE8\xF3\xFB\xFD\xFB\xF3\xE8\xD8\xC5\xB0\x98\x80\x68\x50\x3B\x28\x18\x0D\x05\x03\x05\x0D\x18\x28\x3B\x50\x68";
    а это ее использование (в прерывании)
    OCR2=pgm_read_byte(SinTable+phase);

  37. #594

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Наверняк я сам налобал ошибок.

    printf scanf не использую вообще
    синусы косинусы степени и тд тоже нет у меня только умножение и деление флоат
    по этому поводу думаю вообще от флоат отказаться и перейти на long=float*1000

    Но здесь есть подводный камень. Например суммирование интегрального полученного/отданного заряда. Точность уплывет.

    Всвязи с этим решил переписывать все так как вижу много кривых мест в старой проге.
    И по мере переписи контролировать память.

  38. #595

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Облазил все файлы не могу найти где посмотреть в какой вид памяти указатели на строки разместились.

    И вообще где смотреть размер и расчет стэка, кучи и т.д.
    Должна же быть там какаянибудь подбивка итогов?

    Использую только

    #incl*ude <avr/io.h>
    #incl*ude <avr/fuse.h>
    #incl*ude <avr/interrupt.h>
    #incl*ude <avr/pgmspace.h>
    #incl*ude <avr/eeprom.h>
    #incl*ude <avr/wdt.h>

    Написал свое определение битов ног проца по совету старших товарищей.
    Теперь можно в ноги писать и читать по названию как в IAR
    Пока не проверял, но компилятор пропускает.
    Идею содрал из другого форума
    Мог напортачить только с номером(адресом) порта их бывает 2, но кажись не напортачил.

    typedef struct _bit_struct {unsigned char Bit0:1, Bit1:1, Bit2:1, Bit3:1, Bit4:1, Bit5:1, Bit6:1, Bit7:1; }bit_field;

    #ifdef PORTA
    #define PORTA_Bit0 (*((volatile bit_field*) (PORTA))).Bit0
    #define PORTA_Bit1 (*((volatile bit_field*) (PORTA))).Bit1
    #define PORTA_Bit2 (*((volatile bit_field*) (PORTA))).Bit2
    #define PORTA_Bit3 (*((volatile bit_field*) (PORTA))).Bit3
    #define PORTA_Bit4 (*((volatile bit_field*) (PORTA))).Bit4
    #define PORTA_Bit5 (*((volatile bit_field*) (PORTA))).Bit5
    #define PORTA_Bit6 (*((volatile bit_field*) (PORTA))).Bit6
    #define PORTA_Bit7 (*((volatile bit_field*) (PORTA))).Bit7
    #endif

    #ifdef DDRA
    #define DDRA_Bit0 (*((volatile bit_field*) (DDRA))).Bit0
    #define DDRA_Bit1 (*((volatile bit_field*) (DDRA))).Bit1
    #define DDRA_Bit2 (*((volatile bit_field*) (DDRA))).Bit2
    #define DDRA_Bit3 (*((volatile bit_field*) (DDRA))).Bit3
    #define DDRA_Bit4 (*((volatile bit_field*) (DDRA))).Bit4
    #define DDRA_Bit5 (*((volatile bit_field*) (DDRA))).Bit5
    #define DDRA_Bit6 (*((volatile bit_field*) (DDRA))).Bit6
    #define DDRA_Bit7 (*((volatile bit_field*) (DDRA))).Bit7
    #endif

    #ifdef PINA
    #define PINA_Bit0 (*((volatile bit_field*) (PINA))).Bit0
    #define PINA_Bit1 (*((volatile bit_field*) (PINA))).Bit1
    #define PINA_Bit2 (*((volatile bit_field*) (PINA))).Bit2
    #define PINA_Bit3 (*((volatile bit_field*) (PINA))).Bit3
    #define PINA_Bit4 (*((volatile bit_field*) (PINA))).Bit4
    #define PINA_Bit5 (*((volatile bit_field*) (PINA))).Bit5
    #define PINA_Bit6 (*((volatile bit_field*) (PINA))).Bit6
    #define PINA_Bit7 (*((volatile bit_field*) (PINA))).Bit7
    #endif

    и т.д.

  39. #596

    Регистрация
    11.11.2006
    Адрес
    Калуга
    Возраст
    48
    Сообщений
    106
    Цитата Сообщение от R2D2 Посмотреть сообщение
    синусы косинусы степени и тд тоже нет у меня только умножение и деление флоат
    по этому поводу думаю вообще от флоат отказаться и перейти на long=float*1000

    Но здесь есть подводный камень. Например суммирование интегрального полученного/отданного заряда. Точность уплывет.

    Всвязи с этим решил переписывать все так как вижу много кривых мест в старой проге.
    И по мере переписи контролировать память.
    при компиляции смотреть на окно вывода, там видно сколько кода\данных (ну можно еще начало *.lss посмотреь)

    описали переменную\константу, запомнили сколько было - скомпилировали, посмотрели сколько стало.

    если просто написать строка='АБВГ', то компилятор сосздаст ее в озу, и стартапом скопирует в нее это АБВГ, что весьма криво.
    код получается весьма плотный, глядя по листингу видно. иногда на входе в функцию пара команд бывает, которые мне несовсем понятно зачем нужны, но все смотреть просто смысла нет.

    мелкий совет - если совсем с памятью кода туго, строки в еепром можно засунуть частично. или внешнюю и2ц на 64кб прицепить под текст меню

  40. #597

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Как в WinIar сделать над переменной то, что в ассемблере делает "swap"

    Пришлось сделать так:

    /* Swap BYTE*/
    #define __swap_nibbles(_x) ({BYTE _y=_x; asm volatile("swap %0" : "=&r" (_y) : "0" (_y)); _y;})

    И еще для перехода c IAR на WinAvr

    /* Set BIT in ADDRESS */
    #define SETBIT(ADDRESS,BIT) ((ADDRESS) |= (1<<(BIT)))

    /* Clear BIT in ADDRESS */
    #define CLEARBIT(ADDRESS,BIT) ((ADDRESS) &= ~(1<<(BIT)))

    /* Test BIT in ADDRESS */
    #define TESTBIT(ADDRESS,BIT) ((ADDRESS) & (1<<(BIT)))

  41. #598

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Как в WinAvr работать с фузами

    Стандартный пример не компелится

    #incl*ude <avr/io.h>
    #incl*ude <avr/fuse.h>

    FUSES =
    {
    .low= // Запрограммированные фузы
    (
    CKOPT& // рекомендуется для зашумленных приборов и для частот больше 8 МГц
    BODEN& // разрешить реагирование на уровень напряжения. Для стабильного запуска и защиты от порчи EEPROM.
    BODLEVEL // минимальный уровень напряжения 2.7в. Для стабильного запуска и защиты от порчи EEPROM.
    ),
    .high= // Незапрограммированные фузы
    (
    CKSEL3&CKSEL2&CKSEL1&CKSEL0& // Частота определяется внешним кварцевым резонатором
    SUT0&SUT1& // 65мс медленный старт процессора
    BOOTRST& // Стартовать из обычного вектора, а не из BOOT-а
    BOOTSZ0&BOOTSZ1& // размер бутовой программы безразличен
    EESAVE& // EEPROM не защищен
    SPIEN& // SPI не важно разрешен или нет
    OCDEN& // встроенный отладчик запрещен
    JTAGEN // JTAG запрещен
    ),
    };

    main.cpp:31: error: expected primary-expression before '.' token
    main.cpp:37: error: expected primary-expression before '.' token
    make.exe: *** [main.o] Error 1

  42. #599

    Регистрация
    11.11.2006
    Адрес
    Калуга
    Возраст
    48
    Сообщений
    106
    Цитата Сообщение от R2D2 Посмотреть сообщение
    Как в WinAvr работать с фузами
    даже никогда не думал, что в проекте можно фьюзы описывать...

    делаю так:
    использую AVREAL (просто замечательный программатор Александра Редчука)
    в директории с проектов держу несколько bat файлов - для программирования с прошивкой фьюзов, просто для программирования, и для ресета.

    вызов бат-афйлов для программирования и ресета прописаны в иде, чуть ниже маке-алл строчки в меню
    программирование фьюзов делаю один раз, при начале работы с новым кристаллом\платой, при отладке только флеш переписываю

    под тиражирование бат-файл программирования с прошивкой фьюзов применяется.

    вот пример содержимого этих 3-х файлов (1 строка в каждом)

    avreal32 -p1 -as -o1000 +mega32 -ew eth_sr.hex -fCKSEL=F,JTAGEN=1,CKOPT=0
    avreal32 -p1 -as -o8000 +mega32 -ew eth_sr.hex
    avreal32 -p1 -as -o8000 +mega32

  43. #600

    Регистрация
    31.03.2005
    Адрес
    Красногорск
    Возраст
    51
    Сообщений
    488
    Почти ничего не получается:
    1. Побитовое обращение не работает PORTD_Bit3=PORTC_Bit7.
    2. AVRstudio elf глючит как хочет меняет содержимое переменных и т.д.
    3. Работа с флэш памятью требует извратов несовместимых со здравым смыслом
    const char FlashString[] PROGMEM = "This is a string in flash"; - обявление переменной во флаш
    SendSTR_P(FlashString); - макрос который ее туда суёт
    4. ФУЗЫ описать не удается компилятор обругивает.

    Что удалось:
    1. Удалось написать мааленькую прогу на которую компилятор не ругался.
    2. Удалось через аврдуду и понипрог ее залить в проц.

    В иаре все сделано красиво и логично. Одно слово __flash решает все возможные проблемы с работой флаш памяти.

    НО

    Данный продукт поставляется только под заказ, т.к. везется из-за границы (срок поставки примерно 6-8 недель)
    (27-14-19-IAR-SL) Atmel AVR Stand Alone License Baseline - 1437$ на 1 рабочее место.
    (В стоимость лицензии входит доставка из-за рубежа)
    Вопрос: Имеет ли право с этой лицензией разработчик распространять разработанные им на указанном ПО программы(прошивки)?
    Ответ: Да, имеет.
    Устовия оплаты:
    Оплата производится по безналичному расчету в рублях по курсу ЦБ+3%
    ООО "Ваш Софт"
    тел/факс: (495) 153-64-91, 153-94-41 http://www.yoursoft.ru/
    ICQ: 404-454-431

    На ихнем сайте оптовая цена 1179$
    Теперь представим себе как за 6-8 недель можно доставить коробочку за 250$ ?
    Ответ на велосипеде!!!

Закрытая тема

Похожие темы

  1. Продам универсальный зарядник
    от RDoc в разделе Барахолка. Аппаратура
    Ответов: 1
    Последнее сообщение: 10.09.2010, 12:28
  2. Нужен ли новичку универсальный зарядник?
    от kazakov_98 в разделе Аккумуляторы, зарядники
    Ответов: 6
    Последнее сообщение: 28.07.2007, 21:29
  3. Делаем универсальный зарядник (на 3 тока) своими руками.
    от Dimux в разделе Самодельная электроника, компьютерные программы
    Ответов: 21
    Последнее сообщение: 28.06.2002, 02:51

Ваши права

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