Перейти к содержанию

Видеокурс по AVR-микроконтроллерам для начинающих


Рекомендуемые сообщения

11 час назад, gogaze сказал:

разобраться с библиотеками 5110.

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

LCD_5110_test.rar  От Alex

lcd5110_27.03.2016.tar.gz От COKPOWEHEU

Изменено пользователем gogaze

Мир не без добрых людей!

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

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

#ifndef DISABLE_DOUBLE
/* Имя                   :  Lcd_putd
 * Описание              :  Эта функция предназначена для печати числа с плавающей запятой
 * Аргумент(ы)           :  data -> число
 *                       :  accuracy -> число знаков после запятой
 */
//lcd_put_double - вывод числа с плавающей точкой. Не рекомендуется, потому что медленно
void Lcd_putd(double data, int accuracy ){
  int32_t val = data*pgm_read_float(&exp_data[accuracy]);
  Lcd_putf(val, accuracy);
}
#endif

Модерам: если можно, киньте ссылку с первого поста еще на этот

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Не отпускают меня от поддержки этой библиотеки, хотя я не раз говорил что она плохо подходит для законченных проектов. Она чисто демонстрационная / отладочная.

Ну, как бы то ни было, перевел свою версию на github. Но опыта работы с этим сервисом немного так что любые советы приму к сведению.

 

Добавлено в первый пост. Alex.

Изменено пользователем Alex

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

18 минут назад, COKPOWEHEU сказал:

Не отпускают меня от поддержки этой библиотеки

Ну так разобраться же хочется! Хочу показать результаты своих опытов. Много я у Вас крови свернул, пока сделал то, что мне понравилось! С другой стороны, как бы я разобрался со всеми этими умножениями, делениями на 100, 1000, округлениями результатов? Да без подробной инструкции? Да без примеров? В общем, результатом полученным доволен. Теперь осталось переделать свой показометр для блока питания - зарядного устройства под Вашу библиотеку со всеми счетчиками ампер-часов, опроса портов АЦП по прерываниям и т.д. 

Результаты на скриншоте, подробности в файле в прикрепленном архиве.
В конце файла объем используемой памяти. Если добавить информационную заставку - добавится еще байт 500.
Результатом (тьфу тьфу тьфу, чтоб не сглазить) доволен. Осталось проверить кое-какие мелочи.

Результат!.jpg

результат.rar

Мир не без добрых людей!

Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, gogaze сказал:

С другой стороны, как бы я разобрался со всеми этими умножениями, делениями на 100, 1000, округлениями результатов?

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

6 минут назад, gogaze сказал:

Да без подробной инструкции? Да без примеров?

Примеры там есть! ...вроде...

6 минут назад, gogaze сказал:

В конце файла объем используемой памяти. Если добавить информационную заставку - добавится еще байт 500.

А я сразу говорил что эта библиотека занимает много места. Впрочем, если надо можете отключить полную таблицу символов и функции отрисовки графики (в последней версии добавил #define DISABLE_GRAPHICS). Еще, вроде, CONTINIOUS версия занимает поменьше места. И работа с float/double в основной программе тоже довольно тяжелая, даже если упоминается всего 1 раз.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

23 минуты назад, COKPOWEHEU сказал:

Примеры там есть! ...вроде...

Ну для новичков, типа меня, этого недостаточно. Сколько я Вам надоедал, пока кое-что просек? А кто-то попробовал, не получилось - бросил!

Думаю на досуге сделать типа подробной инструкции для начинающих (если Вы не против)?

26 минут назад, COKPOWEHEU сказал:

А я сразу говорил что эта библиотека занимает много места.

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

Мир не без добрых людей!

Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, gogaze сказал:

Ну для новичков, типа меня, этого недостаточно.

Потому что надо понимать что делаешь а не тыкаться наобум. Много раз уже обсуждался порядок изучения контроллеров: асм->Си. Мигалки -> таймеры -> прерывания -> RTOS. Это грубое приближение, конечно

4 часа назад, gogaze сказал:

Думаю на досуге сделать типа подробной инструкции для начинающих (если Вы не против)?

главное не допустите ошибок kobzar'а

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

40 минут назад, COKPOWEHEU сказал:

Потому что надо понимать что делаешь а не тыкаться наобум. Много раз уже обсуждался порядок изучения контроллеров: асм->Си. Мигалки -> таймеры -> прерывания -> RTOS. Это грубое приближение, конечно

Это справедливо, если есть желание стать профессиональным программистом, позволяет возраст и время - согласен!  А если же нужно какое-то  одно, конкретное устройство или направление, типа вольтметры-амперметры и т.п.... А жизни осталось???

40 минут назад, COKPOWEHEU сказал:

главное не допустите ошибок kobzar'а

Каких именно? Я же для Вашей библиотеки собираюсь шпаргалку делать!

Ладно, сделаю для себя, а там видно будет.

Изменено пользователем gogaze

Мир не без добрых людей!

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, gogaze сказал:

А жизни осталось???

пары месяцев в свободное время не найдется? Все равно же больше потеряете на методе проб и ошибок

3 часа назад, gogaze сказал:

Каких именно? Я же для Вашей библиотеки собираюсь шпаргалку делать!

Ладно, сделаю для себя, а та

_мне_ шпаргалки для этой библиотеки не нужны, так что пишете вы для себя и других новичков. Ошибки, похоже, это ориентация на "как сделать" вместо "как устроено". То есть инструкция по повторению устройства вместо объяснения алгоритмов. Впрочем, зная вас... мешать пробовать не буду в любом случае.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, COKPOWEHEU сказал:

_мне_ шпаргалки для этой библиотеки не нужны, так что пишете вы для себя и других новичков

От чистого сердца хотел избавить, в первую очередь Вас, от лишних вопросов тех, у кого они возникнут (типа меня). Ну если Вам нравится объяснять каждому.... Приношу свои извинения!

9 часов назад, COKPOWEHEU сказал:

"как сделать" вместо "как устроено". То есть инструкция по повторению устройства вместо объяснения алгоритмов

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

Изменено пользователем gogaze

Мир не без добрых людей!

Ссылка на комментарий
Поделиться на другие сайты

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

Важно чтобы не было существенных ошибок. Ложная информация при обучении ищи хуже отсутствия.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, COKPOWEHEU сказал:

Ложная информация при обучении ищи хуже отсутствия.

Из вышесказанного я понял, что Вы все-таки посмотрели уроки и нашли эту "Ложную информацию"? Если так, то хотя бы вкратце расскажите! Или у Вас просто какая-то личная неприязнь к автору уроков?

Мир не без добрых людей!

Ссылка на комментарий
Поделиться на другие сайты

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

Если собираетесь расписывать применение именно доработанной версии библиотеки, стоит разобраться как минимум со следующими моментами:

- зачем сделан выбор DIRECT / CONTINIOUS, в какой ситуации применять то, а в какой - другое

- почему по умолчанию отключена работа с числами с плавающей точкой DISABLE_DOUBLE

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

- как выбирать тип данных

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

Вы уверены что сможете про это рассказать так чтобы новички поняли и без искажения?

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Немного прерву вашу филосовскую беседу :)

Посколько в этой теме было ознакомление с дисплеем nokia5110 поэтому размещу здесь.

Понадобилось мне для наглядности пронумеровать шкалу графика атмосферного давления мелкими цифрами (3 на 5 пикселов). Попиксельно вырисовывать эта затея безумна. Поэтому все это дело автоматизировал. Может пригодится кому.

Закодировал цифры:

static const uint8_t small_number [][5] PROGMEM= // (3 на 5 пикселов)
{
	{7,5,5,5,7}, // 0
	{1,3,1,1,1}, // 1
	{7,1,7,4,7}, // 2
	{7,1,7,1,7}, // 3
	{5,5,7,1,1}, // 4
	{7,4,7,1,7}, // 5
	{7,4,7,5,7}, // 6
	{7,1,1,1,1}, // 7
	{7,5,7,5,7}, // 8
	{7,5,7,1,7} // 9
};

замутил функцию:

void Lcd_small_number(uint8_t x, uint8_t y, long number){ // x,y - координата верхнего левого пикселя числа; number - целое число
	if(number<0){							// если отрицательное число
		number*=-1;							// переведем в положительное
		Lcd_line(x,y+2,x+2,y+2,PIXEL_ON);	// рисуем знак "минус"
		x+=4;								// переместимся на следующее знакоместо
	}
	long temp=number;
	long n1=1;								// коэффициент разрядности
	uint8_t n=0;							// кол-во цифр в числе
	if(number==0){temp=1; n1=10;}
	while(temp){temp/=10; n++; n1*=10;}
	
	for(uint8_t l=0; l<n; l++){
		for(uint8_t i=0; i<5; i++){
			for(uint8_t j=0; j<3; j++){
				Lcd_pixel(x+j,y+i,PIXEL_OFF); // чистим знакоместо
				if(pgm_read_byte(&(small_number[((long)number%n1)/(n1/10)][i])) & (1<<(2-j))){Lcd_pixel(x+j,y+i,PIXEL_ON);}
			}
		}
		x+=4; n1/=10;
	}
}

как пример:

for(uint8_t i=0; i<50; i+=10){Lcd_small_number(53,3+i,760-i);}

uint8_t wrem=152;
long wrem1=-715869;

Lcd_small_number(1,1,wrem);
Lcd_small_number(1,7,wrem1);

не забываем про #include <avr/pgmspace.h>

результат:

small_number.jpg.9963f2666d4d7e98a47e2bc6c634b4f2.jpg

 

small_number.bmp

Ссылка на комментарий
Поделиться на другие сайты

@Berg , интересная идея и похвально что сами написали модуль. Если не против, позже добавлю вашу идею в библиотеку, вдруг пригодится кому. Правда, скорее всего, со своей реализацией. Разумеется, не гарантирую что это будет скоро :)

 

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, COKPOWEHEU сказал:

интересная идея

Согласен. Изначально функция была проще. Ту же шкалу можно было нумеровать статичными цифрами. Потом усовершенствовал.

В моем регионе среднее ат. давление 740PmmHg, у мирового океана к примеру 760, в нагорье >700, а теперь мы можем программно вычислить среднее значение и согласно ему автоматически перенумеруется шкала.

А еще иногда бывает на экране не хватает места, а хочется знать некую техническую информацию хотя бы мизерным шрифтом.

1 час назад, COKPOWEHEU сказал:

Правда, скорее всего, со своей реализацией.

Это правильно. А то когда написал код и сразу вспомнились слова Alex-а, - "бедный микроконтроллер" :)

Ссылка на комментарий
Поделиться на другие сайты

Добавил шрифт 3х5, выбирается по LcdSize(0) и работает со стандартными функциями вывода (lcd_puts и т.п.) ну там по образцу из main'а разобраться несложно. Можете тестировать

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

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

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

В 25.02.2018 в 19:57, COKPOWEHEU сказал:

В первом посте ссылка на github.

Я не совсем понял этот сервис. При размещении новой версии предыдущие затираются? 

Мир не без добрых людей!

Ссылка на комментарий
Поделиться на другие сайты

как-то можно посмотреть историю изменений, что-то откатить. Но самому делать такое не приходилось. Гуглите, экспериментируйте.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

@Berg  @COKPOWEHEU   Попробовал новы шрифт, очень понравилось!!! В железе, наверное, еще красивей будет.Спасибо, очень пригодится!

Код того, что я выводил.

Скрытый текст

/*
 * n5110-master.c
 *
 * Created: 28.02.2018 13:30:23
 * Author : ADMIN
 */ 
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/pgmspace.h>
#include "n5110.h"

int main(void)
{
    Lcd_init();
    Lcd_clear();
    
    LcdGotoXY(0,1);
    LcdSize(2);
    Lcd_puts("Очень");
    
    LcdGotoXY(0,2);
    LcdSize(1);
    Lcd_puts("Прикольный");
    
    LcdGotoXY(5,3);
    LcdSize(1);
    Lcd_puts("шрифт!!!");
    
    LcdGotoXY(0,4);
    LcdSize(0);
    Lcd3x5shift(1); Lcd_puts("1234567890");

    LcdGotoXY(7,5);
    LcdSize(0);
    Lcd3x5shift(2); Lcd_puts("1234567890");
    
    while(1)
    {
        Lcd_update();
    }
    return 0;
}

Хочу услышать ваше мнение о размере. Program Memory Usage     :    2332 bytes   28,5 % Full
                                                                                 Data Memory Usage         :    547 bytes   53,4 % Full

P.S. Мысли вслух. А я бы основного начинателя @Berg  упомянул в шапке библиотеки.

2018-02-28_160602.jpg

Изменено пользователем gogaze
Код под спойлер

Мир не без добрых людей!

Ссылка на комментарий
Поделиться на другие сайты

11 час назад, gogaze сказал:

P.S. Мысли вслух. А я бы основного начинателя @Berg  упомянул в шапке библиотеки.

А надо было ему коммит писать :P. Я его код не использовал, только задачу, "мелкий шрифт 3х5".

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, COKPOWEHEU сказал:

А надо было ему коммит писать :P. Я его код не использовал, только задачу, "мелкий шрифт 3х5".

Ну это не мое дело. Я же написал  - "Мысли вслух".

 

 

Изменено пользователем gogaze

Мир не без добрых людей!

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...