OLED на Attiny13

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
bav123
Говорящий с текстолитом
Сообщения: 1691
Зарегистрирован: Ср окт 12, 2011 20:37:13

Re: OLED на Attiny13

Сообщение bav123 »

zöner
молодец, надо как то попробовать, так как тинек много безхозых и экраны есть.
Аватара пользователя
webtime
Опытный кот
Сообщения: 844
Зарегистрирован: Пт авг 31, 2018 21:53:52
Откуда: ул. Островидова, общага напротив

Re: OLED на Attiny13

Сообщение webtime »

Супер. Схемку бы.
Варкалось. Хливкие шорьки
Пырялись по нове,
И хрюкотали зелюки,
Как мюмзики в мове.

:)))
zöner
Вымогатель припоя
Сообщения: 502
Зарегистрирован: Чт фев 16, 2012 19:00:11

Re: OLED на Attiny13

Сообщение zöner »

для большей точности добавлен опорник для питания контроллера (напряжение задается в исходнике константой ADC_REF)

Изображение Изображение Изображение
Аватара пользователя
webtime
Опытный кот
Сообщения: 844
Зарегистрирован: Пт авг 31, 2018 21:53:52
Откуда: ул. Островидова, общага напротив

Re: OLED на Attiny13

Сообщение webtime »

А все это редкое у нас зверье REF3033 MCP1541 MCP170 XC6220 чем-нибудь, например, в из линейки 1117-3.3, 1117-5.0 заменить никак?
Варкалось. Хливкие шорьки
Пырялись по нове,
И хрюкотали зелюки,
Как мюмзики в мове.

:)))
zöner
Вымогатель припоя
Сообщения: 502
Зарегистрирован: Чт фев 16, 2012 19:00:11

Re: OLED на Attiny13

Сообщение zöner »

1117 выигрыша в точности не даст - запитайте контроллер прямо от 78L05
или возьмите 3.3В с OLED модуля
Аватара пользователя
webtime
Опытный кот
Сообщения: 844
Зарегистрирован: Пт авг 31, 2018 21:53:52
Откуда: ул. Островидова, общага напротив

Re: OLED на Attiny13

Сообщение webtime »

т.е., вопрос питания большей частью умозрительно-философский :) .
Варкалось. Хливкие шорьки
Пырялись по нове,
И хрюкотали зелюки,
Как мюмзики в мове.

:)))
zöner
Вымогатель припоя
Сообщения: 502
Зарегистрирован: Чт фев 16, 2012 19:00:11

Re: OLED на Attiny13

Сообщение zöner »

зависит от требуемой точности - у 7805 ошибка до 5%
еще можно замерять питание и перекомпилировать прошивку з заменой ADC_REF
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: OLED на Attiny13

Сообщение Demiurg »

zöner красава!
Что там насчёт
[uquote="Demiurg",url="/forum/viewtopic.php?p=3537655#p3537655"]Физически невозможно...
[/uquote]
И? Я когда писал, что физически невозможно, подразумевалось, что будет мало мальски серьёзное устройство. Как минимум, интерфейс, кнопки, меню. Именно в этом случае НЕВОЗМОЖНО впихнуться в 1 кБ флеша. В случае же ТС-а, это просто показометр. Я поглядел код. Ни усреднения, ничего. Очень много усилий на то, что влезть в ограниченный объем флеша ради показометра, который что то там показывает. Годно как устройство для личного употребления, тренировки впихнуться в крайне ограниченные ресурсы мк. Но не годно для массового тиража. Графический дисплей избыточен в показометре.
Лично я не стал бы изьебываться с си. И писал бы программу на асме. Так как знаю этот язык и архитектуру авр на достаточном уровне. Но! Для устройства класса показометр взял бы семисегментники.
zöner
Вымогатель припоя
Сообщения: 502
Зарегистрирован: Чт фев 16, 2012 19:00:11

Re: OLED на Attiny13

Сообщение zöner »

пишите, кто мешает... кстати, на асме много не выиграете - С компилится довольно компактно, а критичная часть - умножение - и так написано на асме...
зачем вольтметру кнопки и меню? мне - не нужно. 7-сегментники тянут за собой еще кучу выводов, резисторов и транзисторов
делалось для себя как замена китайскому го.ну, т.к. задолбала подсветка сегментов и медленное измерение, плюс нужно было несколько каналов, и OLEDы и Tiny валялись в загашнике...
Аватара пользователя
webtime
Опытный кот
Сообщения: 844
Зарегистрирован: Пт авг 31, 2018 21:53:52
Откуда: ул. Островидова, общага напротив

Re: OLED на Attiny13

Сообщение webtime »

зависит от требуемой точности
Во всяком случае, в процессе пайки/тестирования можно ставить то, что есть в наличии, что есть хорошо, улучшить можно позже, неспеша поискав комплектующие согласно схеме.
это просто показометр
А бОльшего в подавляющем большинстве случаев и не требуется. И усреднять далеко не всегда есть хорошо. По стоимости вольтметрик получается сопоставим с нищебродскими китайскими поделками на LED, а по точности их переплюнет, на всех четырех каналах. Да еще и выглядит не в пример гламурнее. Да, мне важен гламур :))) .

А желаете проф.прибор для репликации в промышленных масштабах - пачку баксов в карман, и вэлкам к ТС в личку :))) .
Варкалось. Хливкие шорьки
Пырялись по нове,
И хрюкотали зелюки,
Как мюмзики в мове.

:)))
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: OLED на Attiny13

Сообщение Demiurg »

Посмотрел код. Можно ещё оптимальное сделать. При преобразования hex-dec единица не нужна. Когда отнял десятки, единицы выводятся как есть.
Спойлер

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

#ifndef BCD_H
#define BCD_H

#include "bcd.h"

#include "main_def_func.h"

//==================
extern char num_str_buf [];
extern char tmp_num_str_buf [];
//==================

//==================
typedef enum
{
   VAL_08_BIT = 0,
   VAL_16_BIT,
   VAL_32_BIT,
} type_val_t;

void val_to_str (u32 value, type_val_t type_val);

u16 str_to_int (void);
u32 str_to_long (void);
//==================

//==================
void clr_tmp_num_str_buf (void);
void clr_num_str_buf (void);
//==================

#endif //BCD_H


Спойлер

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

//==================
#include "bcd.h"
//==================

//==================
char num_str_buf [11];
char tmp_num_str_buf [11];
//==================

//==================
void clr_num_str_buf (void)
{
   char *ptr = num_str_buf;
   u08 cnt = 10;

   while (cnt)
   {
      *ptr++ = ' ';
      cnt--;
   }
   *ptr = 0;
}
//==================

//==================
void clr_tmp_num_str_buf (void)
{
   char *ptr = tmp_num_str_buf;
   u08 cnt = 10;

   while (cnt)
   {
      *ptr++ = ' ';
      cnt--;
   }
   *ptr = 0;
}
//==================

//==================
__flash u32 tab_hex_dec [] =
{
   1000000000U,
   100000000U,
   10000000U,
   1000000U,
   100000U,
   10000U,
   1000U,
   100U,
   10U,
};
//==================

//==================
void val_to_str (u32 value, type_val_t type_val)
{
   u32 a;

   bool flag = false;

   u08 cnt_1;
   u08 cnt_2;

   u08 displace;

   clr_num_str_buf ();

   switch (type_val)
   {
      case VAL_08_BIT:
         displace = 7;
         cnt_1 = 2;
         break;

      case VAL_16_BIT:
         displace = 5;
         cnt_1 = 4;
         break;

      case VAL_32_BIT:
         displace = 0;
         cnt_1 = 9;
         break;
   }

   char *ptr = num_str_buf + displace;

   u32 __flash *ptr_f = tab_hex_dec + displace;

   while (cnt_1)
   {
      a = *ptr_f;
      cnt_2 = 0;

      while (value >= a)
      {
         value -= a;
         cnt_2++;
      }

      if (flag == false)
      {
         if (cnt_2 == 0)
         {
            *ptr++ = ' '; // Гашение незначащих нулей.
         }
         else
         {
            *ptr++ = (cnt_2 | 0x30);
            flag = true;
         }
      }
      else
      {
         *ptr++ = (cnt_2 | 0x30);
      }

      ptr_f++;
      cnt_1--;
   }
   *ptr++ = (value | 0x30);
   *ptr = 0;
}
//==================



//==================
u16 str_to_int (void)
{
   char *ptr_num = tmp_num_str_buf + 5;
   u32 __flash *ptr_f = tab_hex_dec + 5;
   u16 a;
   u08 cnt = 0;
   u16 tmp_value = 0;

   while (cnt < 4)
   {
      if ((*ptr_num > 0x30) && (*ptr_num < 0x3A))
      {
         a = (*ptr_num - 0x30);

         while (a)
         {
            tmp_value += *ptr_f;
            a--;
         }
      }
      *ptr_num++;
      ptr_f++;
      cnt++;
   }

   return tmp_value += (*ptr_num - 0x30);
}
//==================

//==================
u32 str_to_long (void)
{
   char *ptr_num = tmp_num_str_buf;
   u32 __flash *ptr_tab_10 = tab_hex_dec;
   u32 a;
   u08 cnt = 0;
   u32 tmp_value = 0;

   while (cnt < 9)
   {
      if ((*ptr_num > 0x30) && (*ptr_num < 0x3A))
      {
         a = (*ptr_num - 0x30);

         while (a)
         {
            tmp_value += *ptr_tab_10;
            a--;
         }
      }
      *ptr_num++;
      ptr_tab_10++;
      cnt++;
   }

   return tmp_value += (*ptr_num - 0x30);
}
//==================


Код немного тяжеловат, так как используется гашение незначащих нулей и это единая функция вплоть до 32-разрядного числа.

Кстати, какой компилятор использовался?
zöner
Вымогатель припоя
Сообщения: 502
Зарегистрирован: Чт фев 16, 2012 19:00:11

Re: OLED на Attiny13

Сообщение zöner »

Кстати, какой компилятор использовался?
avr-gcc, выше есть строка компиляции
А бОльшего в подавляющем большинстве случаев и не требуется
10-битный АЦП с соответствующей опорой даст точность 0.2..0.3%, резисторы 0.1% уже не редкость - более чем достаточно для показометра...
если нужно большее разрешение - ads1110/1115 по 1..2$ на Али...
zöner
Вымогатель припоя
Сообщения: 502
Зарегистрирован: Чт фев 16, 2012 19:00:11

Re: OLED на Attiny13

Сообщение zöner »

индикатор оборотов (напр. дрели/микродрели), вход импульсов PB2
Вложения
main.hex
(2.8 КБ) 528 скачиваний
main.c
(11.5 КБ) 643 скачивания
main.h
(2.28 КБ) 563 скачивания
Аватара пользователя
webtime
Опытный кот
Сообщения: 844
Зарегистрирован: Пт авг 31, 2018 21:53:52
Откуда: ул. Островидова, общага напротив

Re: OLED на Attiny13

Сообщение webtime »

zöner, картинки индикатора оборотов в работе нет?
Варкалось. Хливкие шорьки
Пырялись по нове,
И хрюкотали зелюки,
Как мюмзики в мове.

:)))
zöner
Вымогатель припоя
Сообщения: 502
Зарегистрирован: Чт фев 16, 2012 19:00:11

Re: OLED на Attiny13

Сообщение zöner »

5 разрядов:
Изображение

прошивка на 4 разряда:
Вложения
main.hex
(2.8 КБ) 319 скачиваний
Аватара пользователя
webtime
Опытный кот
Сообщения: 844
Зарегистрирован: Пт авг 31, 2018 21:53:52
Откуда: ул. Островидова, общага напротив

Re: OLED на Attiny13

Сообщение webtime »

... какой смысл 5 разрядов, если прошивка на 4 разряда.

Ну и дрель как подключать, чтобы оно обороты/импульсы считало? Или достаточно подать напряжение питания? Обратно же, нет схемки счетчика оборотов, сиречь, тахометра, если я правильно все понял.
Варкалось. Хливкие шорьки
Пырялись по нове,
И хрюкотали зелюки,
Как мюмзики в мове.

:)))
zöner
Вымогатель припоя
Сообщения: 502
Зарегистрирован: Чт фев 16, 2012 19:00:11

Re: OLED на Attiny13

Сообщение zöner »

да, это тахометр. прошивка на 5 разрядов была на пост выше.
датчик оборотов - магнитик на вал и датчик Холла сбоку (в некоторых дрелях есть магнит на валу). Или оптопару на просвет / отражение.
Аватара пользователя
webtime
Опытный кот
Сообщения: 844
Зарегистрирован: Пт авг 31, 2018 21:53:52
Откуда: ул. Островидова, общага напротив

Re: OLED на Attiny13

Сообщение webtime »

Более простой/доступный вариант для реализации в железе - стробоскоп на светодиоде.
Варкалось. Хливкие шорьки
Пырялись по нове,
И хрюкотали зелюки,
Как мюмзики в мове.

:)))
OKF
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: OLED на Attiny13

Сообщение OKF »

И? Я когда писал, что физически невозможно, подразумевалось, что будет мало мальски серьёзное устройство. Как минимум, интерфейс, кнопки, меню. Именно в этом случае НЕВОЗМОЖНО впихнуться в 1 кБ флеша. В случае же ТС-а, это просто показометр. Я поглядел код. Ни усреднения, ничего. Очень много усилий на то, что влезть в ограниченный объем флеша ради показометра, который что то там показывает. Годно как устройство для личного употребления, тренировки впихнуться в крайне ограниченные ресурсы мк. Но не годно для массового тиража. Графический дисплей избыточен в показометре.
Лично я не стал бы изьебываться с си. И писал бы программу на асме. Так как знаю этот язык и архитектуру авр на достаточном уровне. Но! Для устройства класса показометр взял бы семисегментники.

Как ПОКАЗОМЕТР для измерения ЧСВ пойдёт? Рекомендую.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: OLED на Attiny13

Сообщение ARV »

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

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

Вернуться в «AVR»