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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Встал на лапы
Сообщения: 100
Зарегистрирован: Сб янв 22, 2011 16:57:45

Сообщение ellioh »

-
Последний раз редактировалось ellioh Сб май 14, 2011 12:23:27, всего редактировалось 7 раз.
Клоподавер упрыгхт
Реклама
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Вс ноя 01, 2009 13:12:35

Сообщение xrays »

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

убили наповал)
а вообще, рано вам писать библиотеки...тренируйтесь на кошках)
Реклама
Встал на лапы
Сообщения: 100
Зарегистрирован: Сб янв 22, 2011 16:57:45

Сообщение ellioh »

-
Последний раз редактировалось ellioh Сб май 14, 2011 12:24:00, всего редактировалось 1 раз.
Клоподавер упрыгхт
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение 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;
 ***************************************************************************/
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Вс ноя 01, 2009 13:12:35

Сообщение xrays »

не заметен ваш 20 летний стаж...
быдлокод, не более того.

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

где makefile? где конфигурации, где в конце концов опции для сборки архива??
Последний раз редактировалось xrays Чт мар 24, 2011 20:47:28, всего редактировалось 1 раз.
Реклама
Встал на лапы
Сообщения: 100
Зарегистрирован: Сб янв 22, 2011 16:57:45

Сообщение ellioh »

-
Последний раз редактировалось ellioh Сб май 14, 2011 12:24:48, всего редактировалось 4 раза.
Клоподавер упрыгхт
Реклама
Встал на лапы
Сообщения: 100
Зарегистрирован: Сб янв 22, 2011 16:57:45

Сообщение ellioh »

-
Последний раз редактировалось ellioh Сб май 14, 2011 12:25:16, всего редактировалось 1 раз.
Клоподавер упрыгхт
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Это все хорошо, но как быть, например, с синхронизацией всего этого дела? Применительно к тому же LCD часто недопустимо расхождение сигналов на отдельных пинах во времени, а в случае расположение этих сигналов на физических пинах процессора вперемешку с выходами сдвиговых регистров это неизбежно..
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение 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-ами. Выходит некрасивый микс, но я вот почитаю, что опытный в плюсах народ делает, и подучусь, что не то, чот никогда не поздно, а ещё и чем дальше, тем полезнее :-)
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Встал на лапы
Сообщения: 100
Зарегистрирован: Сб янв 22, 2011 16:57:45

Сообщение ellioh »

-
Последний раз редактировалось ellioh Сб май 14, 2011 12:25:57, всего редактировалось 2 раза.
Клоподавер упрыгхт
Встал на лапы
Сообщения: 100
Зарегистрирован: Сб янв 22, 2011 16:57:45

Сообщение ellioh »

-
Последний раз редактировалось ellioh Сб май 14, 2011 12:26:22, всего редактировалось 1 раз.
Клоподавер упрыгхт
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

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

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

	while((struct = core_list_task(task_id_num))){........}
Работает? Не есть память? Не вызывает критических ошибок? Облегчает жизнь?
Если да, то нех.... кидаться. :kill: Тут помоему интересуются в улучшении креатива, а не рекламируют его. :)
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Встал на лапы
Сообщения: 100
Зарегистрирован: Сб янв 22, 2011 16:57:45

Сообщение ellioh »

-
Последний раз редактировалось ellioh Сб май 14, 2011 12:27:18, всего редактировалось 1 раз.
Клоподавер упрыгхт
Открыл глаза
Сообщения: 41
Зарегистрирован: Ср ноя 14, 2007 01:02:51
Откуда: Москва

Сообщение Верещагин »

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

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

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

И еще есть к вам такой вопрос. Вы под GCC на С++ пишете? Из-под AVR студии?
Алексей Верещагин
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18676
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Встал на лапы
Сообщения: 100
Зарегистрирован: Сб янв 22, 2011 16:57:45

Сообщение ellioh »

-
Последний раз редактировалось ellioh Сб май 14, 2011 12:27:48, всего редактировалось 1 раз.
Клоподавер упрыгхт
Открыл глаза
Сообщения: 41
Зарегистрирован: Ср ноя 14, 2007 01:02:51
Откуда: Москва

Сообщение Верещагин »

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

Я если честно не много знаю визардов, и все коммерческие. А хочется - то под AVR Studio, желательно оупен соурс. Если знаете что-нибудь такое, поделитесь ссылочкой пож.
Алексей Верещагин
Контактная информация:
Мучитель микросхем
Сообщения: 487
Зарегистрирован: Пт июн 12, 2009 19:17:35

Сообщение qwerky »

чем это: pin_a_1::set(true); лучше PORTA |= (1 << PA1); ?
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18676
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Встал на лапы
Сообщения: 100
Зарегистрирован: Сб янв 22, 2011 16:57:45

Сообщение ellioh »

-
Последний раз редактировалось ellioh Сб май 14, 2011 12:28:27, всего редактировалось 1 раз.
Клоподавер упрыгхт
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»