Страница 1 из 2

Не было никакой библиотеки, галлюцинация

Добавлено: Чт мар 24, 2011 15:36:18
ellioh
-

Re: AVR++ -- небольшая opensource-библиотека

Добавлено: Чт мар 24, 2011 19:50:29
xrays
>>> Как-то так оно получилось, что я, неожиданно для себя, начал разработку опенсорсной библиотеки на C++ для программирования под AVR на GCC (хотя, подозреваю, она должна хорошо поддаваться портированию, как на другие компиляторы, так и на другие МК).

убили наповал)
а вообще, рано вам писать библиотеки...тренируйтесь на кошках)

Не было никакой библиотеки, галлюцинация

Добавлено: Чт мар 24, 2011 19:57:03
ellioh
-

Re: AVR++ -- небольшая opensource-библиотека

Добавлено: Чт мар 24, 2011 20:22:24
phanis
Если я правильно понял, все это делается для удобства программиста.
Хочу привести пример на си из IAR AVR, у вас что то похожее на это?

Код: Выделить всё

/*========*/
/* Predefined SFR Addresses */
/*========*/

/****************************************************************************
 * An example showing the SFR_B() macro call, 
 * the expanded result and usage of this result:
 *
 * SFR_B(AVR,   0x1F) Expands to:
 * __io union {
 *             unsigned char AVR;                 // The sfrb as 1 byte
 *             struct {                           // The sfrb as 8 bits
 *                     unsigned char AVR_Bit0:1,
 *                                   AVR_Bit1:1,
 *                                   AVR_Bit2:1,
 *                                   AVR_Bit3:1,
 *                                   AVR_Bit4:1,
 *                                   AVR_Bit5:1,
 *                                   AVR_Bit6:1,
 *                                   AVR_Bit7:1;
 *                    };
 *            } @ 0x1F;
 * Examples of how to use the expanded result:
 * AVR |= (1<<5);
 * or like this:
 * AVR_Bit5 = 1;
 ***************************************************************************/

Re: AVR++ -- небольшая opensource-библиотека

Добавлено: Чт мар 24, 2011 20:24:47
xrays
не заметен ваш 20 летний стаж...
быдлокод, не более того.

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

где makefile? где конфигурации, где в конце концов опции для сборки архива??

Не было никакой библиотеки, галлюцинация

Добавлено: Чт мар 24, 2011 20:43:46
ellioh
-

Не было никакой библиотеки, галлюцинация

Добавлено: Чт мар 24, 2011 20:58:33
ellioh
-

Re: AVR++ -- небольшая opensource-библиотека

Добавлено: Пт мар 25, 2011 19:14:54
Aheir
Это все хорошо, но как быть, например, с синхронизацией всего этого дела? Применительно к тому же LCD часто недопустимо расхождение сигналов на отдельных пинах во времени, а в случае расположение этих сигналов на физических пинах процессора вперемешку с выходами сдвиговых регистров это неизбежно..

Re: AVR++ -- небольшая opensource-библиотека

Добавлено: Пт мар 25, 2011 19:48:22
avreal
Ну эот вещь не зависящая от библиотеки.
Т.е. если рассинхронизация всё ломает, то поломает и без библиотеки.
Но вот, если уж говорить о том же LCD и о том же HC595, пример.
Пусть LCD подключается по 4-битному интерфейсу, write-only (т.е. BUSY FLAG не читаем), R/nW нога на земле.
На LCD идут ноги D7..D4, RS, E
Ноги как-то раскиданы по ногам контроллера. В нескольких библиотеках для HD44780 видел произвольное назначение через #define и потом длинными кусками ON/OFF этого дела.
Тут заводим пины lcd_rs, lcd_d7, ... lcd_d4, lcd_e и объединяем в шину все, кроме последнего.

Код: Выделить всё

typedef output_bus <lcd_rs, lcd_d7, lcd_d6, lcd_d5, lcd_d4> lcd_bus;
Вывод младшего ниббла в данные выглядит как-то так

Код: Выделить всё

lcd_bus::out( 0x10 | (data & 0xFF) );
lcd_e::on();
lcd_e::off();
Тут рассинхронизация вывода битов данных и register select абсолютно до лампочки, а lcd_e управляется явно отдельно.

Написали библиотечку работы с LCD в виде _шаблона_, параметризумого типом шины и вывода E.
Отладили.
Теперь опа! в каком-то проекте не хватает ног совсем.
Берём и делаем шину не на обычных портах, а на регистре HC595, висящем на SPI. А lcd_e так и оставляем на порту. Подсовываем виртуальную шину, которая по out() выбрасывает данные в сдвиговый регистр, шаблону LCD. Всё продолжает работать. С рассинхронизацией по прежнему нет проблем, так как их не было бы и при обычной работе "врукопашную".
При этом при компилятор уоптимизирует всё, что можно, шаблоны для того и придуманы.

Это можно сделать и по другому, у меня сейчас класс Lcd объявляет, но в своих файлах lcd.h/lcd.cpp не определяет функцию Write(), предназначенную для записи в индикатор.
Эта функция доопределяется в том проекте, в котрый включаются (общие для всех проектов) файлы lcd.h/lcd.cpp

Немного мне не нравится всё то, что получается, но у меня С++-ный опыт маловат и когда что-то не выходит, а надо торопиться, я по многолетней С-шной привычке разбавляю #define-ами и #ifdef-ами. Выходит некрасивый микс, но я вот почитаю, что опытный в плюсах народ делает, и подучусь, что не то, чот никогда не поздно, а ещё и чем дальше, тем полезнее :-)

Не было никакой библиотеки, галлюцинация

Добавлено: Пт мар 25, 2011 20:00:19
ellioh
-

Не было никакой библиотеки, галлюцинация

Добавлено: Пт мар 25, 2011 20:25:18
ellioh
-

Re: AVR++ -- небольшая opensource-библиотека

Добавлено: Пт мар 25, 2011 20:39:43
DX168B
xrays писал(а):не заметен ваш 20 летний стаж...
быдлокод, не более того.
Давайте ещё это быдлокодом назовём:

Код: Выделить всё

	while((struct = core_list_task(task_id_num))){........}
Работает? Не есть память? Не вызывает критических ошибок? Облегчает жизнь?
Если да, то нех.... кидаться. :kill: Тут помоему интересуются в улучшении креатива, а не рекламируют его. :)

Не было никакой библиотеки, галлюцинация

Добавлено: Ср апр 13, 2011 21:20:23
ellioh
-

Re: AVR++ -- бета-версия вышла

Добавлено: Пт апр 15, 2011 01:43:31
Верещагин
не заметен ваш 20 летний стаж...
быдлокод, не более того.
Вот блин... Это мне кара за снобизм: я грешным делом вчера только плевался от форума бухгалтеров-одноэсников, как они там гнобят друг друга... Думаю - во народ озверел... Другое дело думаю - типа мы, техническая интеллигенция... все вежливо, поддержут, помогут... Короче, спасибо xrays-у, не дал зазнаться :)

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

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

И еще есть к вам такой вопрос. Вы под GCC на С++ пишете? Из-под AVR студии?

Re: AVR++ -- бета-версия вышла

Добавлено: Пт апр 15, 2011 08:21:25
ARV
Верещагин писал(а):Каждый раз, когда пишу что-то под avr, хочется все нафиг бросить, и засесть - за создание визартов. Типа что б не рыться по сотому разу в даташитах (ну вот такая у меня плохая память), а просто нащелкать мышкой нужную комбинация аппаратных средств...
дык полно этих визардов же... хотите сделать очередной?

Не было никакой библиотеки, галлюцинация

Добавлено: Пт апр 15, 2011 11:07:31
ellioh
-

Re: AVR++ -- бета-версия вышла

Добавлено: Пт апр 15, 2011 12:31:56
Верещагин
ARV писал(а):
Верещагин писал(а):Каждый раз, когда пишу что-то под avr, хочется все нафиг бросить, и засесть - за создание визартов. Типа что б не рыться по сотому разу в даташитах (ну вот такая у меня плохая память), а просто нащелкать мышкой нужную комбинация аппаратных средств...
дык полно этих визардов же... хотите сделать очередной?
дык полно этих визардов же... хотите сделать очередной?
________________
хожу, где вздумается, и гуляю сам по себе
Я аватар ваш прочитал беглым взглядом сперва как "Хочу где вздумается...". Думаю, блин, какой хороший ответ на его вопрос... :)

Я если честно не много знаю визардов, и все коммерческие. А хочется - то под AVR Studio, желательно оупен соурс. Если знаете что-нибудь такое, поделитесь ссылочкой пож.

Re: AVR++ -- бета-версия вышла

Добавлено: Пт апр 15, 2011 12:43:01
qwerky
чем это: pin_a_1::set(true); лучше PORTA |= (1 << PA1); ?

Re: AVR++ -- бета-версия вышла

Добавлено: Пт апр 15, 2011 13:32:35
ARV
Верещагин писал(а):Я если честно не много знаю визардов, и все коммерческие. А хочется - то под AVR Studio, желательно оупен соурс. Если знаете что-нибудь такое, поделитесь ссылочкой пож.
да бросьте - коммерческие все... некоммерческих тоже немало :)
http://www.avrfreaks.net/index.php?modu ... pe=project
http://trol.0fees.net/calc/index.php

Не было никакой библиотеки, галлюцинация

Добавлено: Пт апр 15, 2011 14:09:34
ellioh
-