Easyelectronics.ru

Электроника для всех
Текущее время: 07 июл 2020, 11:44

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 470 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 19  След.
Автор Сообщение
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 27 окт 2014, 02:32 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5158
Откуда: п. Борок, Ярославская область
Написал в тему. Будет время - обновлю репозиторий github ибо запилил несколько удобных фишек по оптимизации кода. Правда идеи не мои, но мне нравятся :-)

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 28 окт 2014, 01:27 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5158
Откуда: п. Борок, Ярославская область
Итак, буду ваять очередное разбиралово поделки. Мож кому и пригодится мое рукоблудство.

Кароч речь пойдет про текст, таблицы символов и знакогенератор в целом. Не скажу что я открыл что-то новое, но голь на выдумку хитра. Фишка вот какая: места флеши на камне мало, и экономить его чем-то надо. А таблица символов (ее верхняя половина на 128 символов) отжирает ажно 128х8 = 1024 байт (целое кило епт, но это справедливо для черно-белого символа 8х8 пикселей). А полная таблица ASCII символов сожрет ажно 256х128 = 2048 байт - и того пол флеши в моем случае. При том для удобства надо расположить символы в таблице так, чтобы строка набранная в .db под виндой так же виделась на экранчике дисплея.

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

Выход был придуман такой:
Код:
font8x8:
ch_SPC:   .db   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ; ( )   0x20
; коды для отображения цифр-букв в стиле семисегментного индикатора
ch_s0:   .db   0x7C, 0xBA, 0xC6, 0xC6, 0xC6, 0xC6, 0xBA, 0x7C   ; ()   0x21
ch_s1:   .db   0x00, 0x02, 0x06, 0x06, 0x06, 0x06, 0x02, 0x00   ; ()   0x22
ch_s2:   .db   0x7C, 0x3A, 0x06, 0x06, 0x06, 0x06, 0x02, 0x00   ; ()   0x23
ch_s3:   .db   0x7C, 0x3A, 0x06, 0x06, 0x06, 0x06, 0x3A, 0x7C   ; ()   0x24
ch_s4:   .db   0x7C, 0xB8, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00   ; ()   0x25
ch_s5:   .db   0x7C, 0xB8, 0xC0, 0xC0, 0xC0, 0xC0, 0xB8, 0x7C   ; ()   0x26
ch_s6:   .db   0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xB8, 0x7C   ; ()   0x27
ch_s7:   .db   0x00, 0x82, 0xC6, 0xC6, 0xC6, 0xC6, 0xBA, 0x7C   ; ()   0x28
ch_s8:   .db   0x00, 0x02, 0x06, 0x06, 0x06, 0x06, 0x3A, 0x7C   ; ()   0x29
ch_s9:   .db   0x7C, 0xBA, 0xC6, 0xC6, 0xC6, 0xC6, 0x82, 0x00   ; ()   0x2A

ch_b0:   .db   0xFC, 0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0xFC   ; (0%)   Символы батарейки 0x2B
ch_b1:   .db   0xFC, 0x82, 0xC1, 0xC1, 0xC1, 0xC1, 0x82, 0xFC   ; (33%) 0x2C
ch_b2:   .db   0xFC, 0x82, 0xD1, 0xD1, 0xD1, 0xD1, 0x82, 0xFC   ; (66%) 0x2D
ch_b3:   .db   0xFC, 0x82, 0xD5, 0xD5, 0xD5, 0xD5, 0x82, 0xFC   ; (100%) 0x2E

ch_Sl:   .db   0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00   ; (/)
ch_n0:   .db   0x38, 0x6C, 0xC6, 0xD6, 0xC6, 0x6C, 0x38, 0x00   ; (0)   0x30
ch_n1:   .db   0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00   ; (1)
* * * * * * * *
ch_F:   .db   0x7E, 0xdb, 0xdb, 0xdb, 0x7E, 0x18, 0x18, 0x00   ; (Ф)
ch_H:;   .db   0x66, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x66, 0x00   ; (Х)
ch_C:;   .db   0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7F, 0x03   ; (Ц)
ch_Ch:   .db   0x66, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x06, 0x00   ; (Ч)
ch_Sh:;   .db   0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xFF, 0x00   ; (Ш)
ch_Sch:;   .db   0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xFF, 0x03   ; (Щ)
ch_tvZn:;   .db   0xE0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x00   ; (Ъ)
ch_uI:;   .db   0xC6, 0xC6, 0xC6, 0xF6, 0xDE, 0xDE, 0xF6, 0x00   ; (Ы)
ch_mZn:   .db   0x60, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x00   ; (Ь)
ch_aE:;   .db   0x78, 0x8C, 0x06, 0x3E, 0x06, 0x8C, 0x78, 0x00   ; (Э)
ch_iU:   .db   0xCE, 0xdb, 0xdb, 0xFB, 0xdb, 0xdb, 0xCE, 0x00   ; (Ю)
ch_iA:   .db   0x3E, 0x66, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x00   ; (Я)

ch_Snd0:   .db   0x19, 0x2A, 0xC8, 0xCB, 0xC8, 0xCA, 0x29, 0x18   ; Звук включен 0x61
ch_Snd1:   .db   0x18, 0x28, 0xC8, 0xCD, 0xCA, 0xCD, 0x28, 0x18   ; Звук выключен 0x62

Вот так обозначаем в памяти таблицу символов, устанавливая метку для каждого символа. Причем здесь порядок символов совсем не важен. И вот почему:
Код:
; Константы для перекодировки символов
.equ s0 = (ch_s0 - font8x8) / 4
.equ s1 = (ch_s1 - font8x8) / 4
.equ s2 = (ch_s2 - font8x8) / 4
.equ s3 = (ch_s3 - font8x8) / 4
.equ s4 = (ch_s4 - font8x8) / 4
.equ s5 = (ch_s5 - font8x8) / 4
.equ s6 = (ch_s6 - font8x8) / 4
.equ s7 = (ch_s7 - font8x8) / 4
.equ s8 = (ch_s8 - font8x8) / 4
.equ s9 = (ch_s9 - font8x8) / 4

.equ SPC = (ch_SPC - font8x8) / 4 ; Пробел
.equ A = (ch_A - font8x8) / 4   ; А
.equ B = (ch_B - font8x8) / 4   ; Б
.equ V = (ch_V - font8x8) / 4
.equ G = (ch_G - font8x8) / 4
.equ D = (ch_D - font8x8) / 4
.equ E = (ch_E - font8x8) / 4
.equ J = (ch_J - font8x8) / 4
.equ Zz = (ch_Z - font8x8) / 4   ; З
.equ I = (ch_I - font8x8) / 4
.equ Ii = (ch_iI - font8x8) / 4
.equ K = (ch_K - font8x8) / 4
.equ L = (ch_L - font8x8) / 4
.equ M = (ch_M - font8x8) / 4
.equ N = (ch_N - font8x8) / 4
* * * * * * * *
.equ Sh = (ch_Sh - font8x8) / 4   ; Ш
.equ Sch = (ch_Sch - font8x8) / 4   ; Щ
.equ tvZn = (ch_tvZn - font8x8) / 4   ; Ъ
.equ uI = (ch_uI - font8x8) / 4   ; Ы
.equ mZn = (ch_mZn - font8x8) / 4   ; Ь
.equ aE = (ch_aE - font8x8) / 4   ; Э
.equ iU = (ch_iU - font8x8) / 4   ; Ю
.equ iA = (ch_iA - font8x8) / 4   ; Я

.equ p2 = (ch_2p - font8x8) / 4   ; :
.equ n0 = (ch_n0 - font8x8) / 4   ; 0
.equ n1 = (ch_n1 - font8x8) / 4   ; 1
.equ n2 = (ch_n2 - font8x8) / 4   ; 2
.equ n3 = (ch_n3 - font8x8) / 4   ; 3
.equ n4 = (ch_n4 - font8x8) / 4   ; 4
.equ n5 = (ch_n5 - font8x8) / 4   ; 5
.equ n6 = (ch_n6 - font8x8) / 4   ; 6
.equ n7 = (ch_n7 - font8x8) / 4   ; 7
.equ n8 = (ch_n8 - font8x8) / 4   ; 8
.equ n9 = (ch_n9 - font8x8) / 4   ; 9
.equ nA = (ch_nA - font8x8) / 4   ; 0xA
.equ nB = (ch_nB - font8x8) / 4   ; 0xB
.equ nC = (ch_nC - font8x8) / 4
.equ nD = (ch_nD - font8x8) / 4
.equ nE = (ch_nE - font8x8) / 4
.equ nF = (ch_nF - font8x8) / 4

.equ vBat0 = (ch_b0 - font8x8) / 4
.equ vBat1 = (ch_b1 - font8x8) / 4
.equ vBat2 = (ch_b2 - font8x8) / 4
.equ vBat3 = (ch_b3 - font8x8) / 4

.equ Snd0 = (ch_Snd0 - font8x8) / 4
.equ Snd1 = (ch_Snd1 - font8x8) / 4
.equ ZER = 0xFF   ; символ конца строки - обязательно!

Таким вот простым макаром мы имеем собственные номера символов в памяти. И чтобы сделать строку для вывода на дисплей зафигачиваем так:
Код:
week_day_names:
mon:   .db P,O,N,E,D,E,L,mZn,N,I,K,ZER                           ; <- ПОНЕДЕЛЬНИК
tue:   .db SPC,SPC,V,T,O,R,N,I,K,SPC,SPC,ZER             ; <- ВТОРНИК
wed:   .db SPC,SPC,SPC,S,R,E,D,A,SPC,SPC,SPC,ZER
thu:   .db SPC,SPC,Ch,E,T,V,E,R,G,SPC,SPC,ZER
fri:   .db SPC,SPC,P,iA,T,N,I,C,A,SPC,SPC,ZER
sat:   .db SPC,SPC,S,U,B,B,O,T,A,SPC,SPC,ZER
sun:   .db V,O,S,K,R,E,S,E,N,I,E,ZER

tim_str: .db T,A,iI,M,E,R,ZER,0x00
scoun_str: .db S,E,K,U,N,D,O,M,E,R,ZER,0x00

А подпрограмма вывода строки будет выглядеть так:
Код:
LCD_DrawStringPM:
; in: Z - строка во flash ASCIIZ
   push tmp
   push ZH
   push ZL
   push r20

   rcall r20_lcd_mx
drst:
   lpm tmp, Z+
   cpi tmp, ZER
   breq drst_end
   rcall LCD_DrawChar
   add lcd_x, r20
   rjmp drst
drst_end:
   pop r20
   pop ZL
   pop ZH
   pop tmp
   ret
;--------------------
LCD_DrawChar:
; in: tmp - код символа
;   lcd_x, lcd_y - координаты
; lcd_mx - масштаб по x
; lcd_my - масштаб по y

   push tmp
   push tmp1
   push ZH
   push ZL
   push lcd_x
   push lcd_y
   push r20   ; индекс по y
   push r21   ; индекс по x
   
   LAPZ font8x8

   ldi tmp1, 0x08
   mul tmp, tmp1
   mov tmp1, r1
   mov tmp, r0

   add ZL, tmp
   adc ZH, tmp1

   ldi r20, 0x08
   CS_LOW
cdrw:
   lpm tmp1, Z+
   push lcd_my
mydrw:
   rcall LCD_GotoXY
   CMD_SET
   ldi tmp, 0x2C
   rcall Send_SPI
   DATA_SET
   ldi r21, 0x08
   push tmp1
ldrw:
   sbrs tmp1, 7
   rjmp drw_bkg
   mov tmp, frg_color
   rjmp drw
drw_bkg:
   mov tmp, bkg_color
drw:
   push lcd_mx
mxdrw:
   rcall Send_SPI
   dec lcd_mx
   brne mxdrw
   pop lcd_mx

   lsl tmp1
   dec r21
   brne ldrw
   pop tmp1
   inc lcd_y
   dec lcd_my
   brne mydrw
   pop lcd_my
   dec r20
   brne cdrw   

   CS_HIGH   

   pop r21
   pop r20
   pop lcd_y
   pop lcd_x
   pop ZL
   pop ZH
   pop tmp1
   pop tmp   
drw_chr_end:
   ret


В чем цимес? А в том, что можно забубенить в таблицу только те символы, которые используются в строках. Есть еще цимес: можно таким макаром забубенить всю таблицу на 256 символов, и не нужные просто закомментировать (оставив метки, но закомментировав .db - у меня так закомментированы символы букв Ж,З,Х,Ц,Щ,Ъ,Ы,Э - ибо не используются). Место экономится простым комментированием, а уже адреса и явки за нас считает компилятор.
Третий цимес - это если делать строку не из байт, а из 16-бит слов. В этом случае можно состряпать что-то вроде своего Unicode забубенив в чип таблицу размером гораздо больше чем 256 символов. Но строка будет задаваться так же просто. Хотя это и не для моего случая решение.

В чем неудобство? А в том что под каждый символ надо заводить свой линк, а потом еще и свою константу (хотя в случае с 16-бит/символ строками можно обойтись без констант, указывая для каждого символа прямой адрес). Это не удобно. Еще не удобно набирать вот так константами строки.

В чем эффективность? В данном случае позволило сэкономить порядка 1кб флеша. Как-то так.

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 06 дек 2014, 13:43 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5158
Откуда: п. Борок, Ярославская область
Было чуток свободного времени, решил доделывать часы. Осознал следующее:
1. Для программатора надо делать отдельный микро-разъем, причем надо 6 контактов: Vcc, GND, MISO, MOSI, SCK, RESET
2. Для зарядки таки придется либо делать отдельный разъем (microUSB или под цилиндрический от Nokia, miniUSB уже не влазит) либо заряжать от разъема программатора. Бесконтактная зарядка в моем случае - это аццкое зло, ибо и не шибко-то эффективна, и не компактна, да еще и наводки создает бешеные. Потому пришлось ее убрать фтопку.
3. Таки дисплей надо завернуть тот, что планировал ранее - от Siemens A70. Контрастность выше, жрет меньше. Но минус у него есть в софтварьном плане. Дело в том, что там за 1 присест рисуется сразу 8 пикселов. И вся память дисплея разбита на 8 или 9 (не помню) строк по 101-му 8-ми пиксельному столбику в каждом. Соответственно вывод символа 8х8 будет в 8 раз быстрее, но и рисовать по-простому можно только в этих строках. Нарисовать например между строк будет уже сложно, так же сложно будет рисовать спрайты (картинки с прозрачными местами). Но в моем случае это не так уж и критично :-)

Что уже сделано:
1. Другой дисплей подключил, распаяв все проводками ПЭЛ-0.4. Сильно сэкономило место.
2. Разъем для зарядки думаю выдрать из старого Nokia. Как раз там он маленький и зарядка Nokia выдает 5В. То что надо :-)
3. Разъем для программирования думаю взять тот, что под сверхтонкий шлейф без фиксации... Есть куча мест где такой выдрать, но куда-то просрал сами шлейфы...

Надо еще софт соответствующий писать под этот дисплей и менять кодировку символов ("развернуть" каждый символ на 90 градусов). Инициализация уже написана кстати :-)

P.S. По поводу разъемов мож кто что посоветует? Там место по высоте где-то 4-5мм, и по ширине - 10-15мм. Надо туда 6 контактов впендюрить...

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 06 дек 2014, 13:56 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2870
когда нам надо совсем "микро", используем такие (шаг 1мм)
Вложение:
eSH_(10-11-30).pdf [142.36 Кб]
Скачиваний: 276

Либо, если места есть чуть поболее, ставим от MOLEX (шаг 1.25мм) 53398 серию (прямые выводы) или 53261 серию (угловые)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 06 дек 2014, 14:02 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5158
Откуда: п. Борок, Ярославская область
2 Hold
Во! Это то что надо! Вот типа таких тоже есть где выдрать... в крайнем случае в китае такие закажу.

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 06 дек 2014, 14:05 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2870
такие часто стоят в LCD-мониторах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 06 дек 2014, 14:11 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2870
Изображение
Слева - JST, прямой и угловой. Справа - Molex, прямой и угловой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 06 дек 2014, 14:34 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5158
Откуда: п. Борок, Ярославская область
Вот в моем случае как раз угловые разъемы надо. Буду ковырять хлам, не найду в хламе - буду заказывать :-)
UPD:
Вот в китае нашел micro JST: http://www.aliexpress.com/item/Mini-Micro-JST-1-25-T-1-6-Pin-Connector-w-Wire-x-10-sets/1027102802.html

Папа-мама, и уже с проводами. И цена гуманная. Хотя и дешевле мож есть, если партию по-крупнее заказать.

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 06 дек 2014, 19:16 
Старожил

Зарегистрирован: 28 дек 2012, 07:17
Сообщения: 517
VivalzarD писал(а):
P.S. По поводу разъемов мож кто что посоветует? Там место по высоте где-то 4-5мм, и по ширине - 10-15мм. Надо туда 6 контактов впендюрить...

Штырьки бывают с шагом не только 2.54, но и 2 мм, и вроде 1.27 мм. 2 мм как раз уже не больше 5-6 мм, но можно и подрезать (сам хочу попробовать этот вариант для места над платой 4-5 мм).
Плюс этого в том, что штырьки надежнее и под них у атмела есть набор переходников.

А тот вариант, что вы выбрали, скорее всего имеет очень большое усилие подключения / отключения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 06 дек 2014, 19:31 
Старожил

Зарегистрирован: 28 дек 2012, 07:17
Сообщения: 517
VivalzarD писал(а):
Соответственно вывод символа 8х8 будет в 8 раз быстрее, но и рисовать по-простому можно только в этих строках. Нарисовать например между строк будет уже сложно, так же сложно будет рисовать спрайты (картинки с прозрачными местами).

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 06 дек 2014, 21:41 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5158
Откуда: п. Борок, Ярославская область
2 Black Warrior
Вобщем по потреблению точных цифр не скажу сейчас, позже - когда все соберу и отлажу, будут уже и цифры. На вскидку - меньше раза в три. Подсветка и на том и на другом жрет 10мА, но на цветном дисплее падение напряжения на диоде 3.1В, а на черно-белом 2.5В - как бы по ваттам потребление меньше, но я подсветку все равно на прямую от МК питаю, без резисторов или какого либо отдельного источника.

Опять таки отправка данных на дисплей займет гораздо меньше времени, а значит МК будет тоже меньше "бодрствовать", на этом тоже экономия (т.к. пока МК спит - он жрет микроамперы, а когда проснулся - около 1мА, а так как потребление тока почти прямо пропорционально частоте, то не имеет смысла сбавлять частоту. ИМХО надо оптимизировать алгоритм, чтобы МК спал как можно дольше).

P.S. Но эт мое ИМХО конечно... по поводу частоты... вот аппноты атмела наоборот рекомендуют сбавить частоту до необходимого минимума.

UPD:
И еще назрел вопрос по корпусу... Вот вообще не соображу никак: в какой корпус такие часы запихать, да так - чтоб корпус можно было самому собрать из говна и палок спичек и желудей. Внешность не критична. Хочется чтобы прочно и не царапало/задевало окружающие предметы. Мож кто какими соображениями поделится?

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 06 дек 2014, 21:49 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
VivalzarD писал(а):
мое ИМХО конечно... по поводу частоты... вот аппноты атмела наоборот рекомендуют сбавить частоту до необходимого минимума.
Дело в том, что "спальный" ток тоже зависит от частоты. По той же самой зависимости.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 06 дек 2014, 22:21 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
VivalzarD писал(а):
Подсветка и на том и на другом жрет 10мА
Чтобы потребление от подсветки было не в тягость, надо, конечно, OLED брать. У них только активные пикселы светят, а не вся плоскость дисплея.
Причём можно программно снизить яркость и дополнительно сэкономить, т.к. встроенный в OLED источник тока - импульсный преобразователь, а не линейный.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 07 дек 2014, 00:32 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5158
Откуда: п. Борок, Ярославская область
2 AlexPM
Да. Но LCD (говорю про xSTN, TFT - не в счет) отображает инфу постоянно без подсветки и при том мало жрет, а OLED при постоянном отображении и жрет много, и деградирует постепенно. Потому большинство устройств с OLED работают по принципу: "нажал кнопку -> включился дисплей". Для наручных часов это не удобно, т.к. потребует либо задействования второй руки чтоб время посмотреть, либо "накрутки" в часы разных g-сенсоров и прочей "сильноумной" выежовины.

И еще... Как показала практика, LCD статичную картинку держат со значительно меньшим энергопотреблением. Жрут больше в момент изменения картинки. Потому можно рисовать по дефолту на экране только часы, минуты и календарь. А секунды - по нажатию например или еще как.

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

P.S. Про МК. Да - потребление сна тоже зависит от частоты, т.к. подразумевается потребление самого осциллятора. У меня же этот осциллятор генерит 32кГц и потому жрет очень мало... А родной RC генератор отключается на время сна, и система живет лишь на одном 32кГц. Ну сам МК вообще во время сна жрет невероятно мало по сравнению с дисплеем, так что им можно и пренебречь. Пока что.

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 08 дек 2014, 20:58 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5158
Откуда: п. Борок, Ярославская область
Сегодня стал искать в хламе разъемы, нашел туеву хучу всяких разных микро и не очень. Но ни один не подошел. То неудобная форма, то слишком нежный, то наоборот слишком туго втыкается, то контакты слишком мелкие... Кароч в итоге оказалось что банальный BLS-мама-штекер - самый удобный вариант. Его и забубенил. Он плоский, меньше 3мм, правда широкий оказался и 6 дырок подряд не уместилось. Сделал 4 и 2 в другой стороне. И отдельно еще воткнул разъем зарядки от Nokia - очень удобно вышло.

Еще убрал КЕМ мультивибратор. Пьез звуковой запаял напрямую к ноге TXD UART-а в надежде генерить сим модулем МК свистоперделки :-)

Вот теперь буду кроить фирмварь... это надолго, ибо времени очень мало свободного...

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 14 дек 2014, 01:03 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5158
Откуда: п. Борок, Ярославская область
Ночной труд над кодом не прошел даром.
Запилено:
1. Запилил интерфейс другого дисплея, правда пришлось пожертвовать функциональностью. Теперь свободного масштабирования нет. Есть либо обычное рисование символов, либо 2х по обоим координатам. Но мне другого и не надо.
2. Нахер секундомер! Запилил будильник! :-)
3. Теперь часы могут пердеть музыкально :-) Запилил фоновую игру музыки по нотам. 2 октавы (4-ю и 5-ю) играет вполне сносно, все что ниже - не может уже пьез достаточно громко пердеть, а выше - не может достаточно точно генерить USART (фальшивить начинает где-то с ля пятой октавы). Но музыка епт! Как на монтане прям :-)
4. Значок батарейки заменил на отображение напряжения в вольтах с точностью до десятых. Мне так удобнее. И за одно потренировал мозги в ассемблерной арифметике с фиксированной точкой.
5. Исправил баг с календарем.
6. Оптимизировал слегка код, разбил его по разным модулям для удобности

Не-запилено:
1. Хочу многоканальный таймер. Три-четыре независимых канала
2. Так же хочу многоканальный будильник по дням недели
3. Надо сделать настройку ЦНХ прям на часах, но боюсь уже флеши не хватит...
4. И с целью экономии флеши хочу запилить вместо шрифта 8х8 шрифт 8х5, но будет сложно, т.к. цифири в стиле 7-ми сегментного индикатора
рисуются именно из тайлов 8х8, и в тайл 8х5 уже не влезут (вернее будет говно уже). По этому придется как-то различать длину последовательности байт при рисовании - а это лишний код.
5. И в конце концов - КОРПУС! Как и из чего делать нихера не представляю. Часы и так жырные как тролль, но не тяжелые. В корпусе будут еще жырнее, и будут все задевать. Причем основная жырнота - это экран и аккумулятор, все остальное - тощее.. Ну кнопки еще, но их-то можно заменить на что нибудь низкопрофильное. А вот экран и аккумулятор не на что заменить.
Как-то так :-)

P.S. Еще обнаружился веселый баг. Дело в том, что кнопки забиты в матрицу 2х3, и опрашиваются динамически. Каждый столбец - это три кнопки и столбцы активируются по очереди для опроса. Так вот если нажать в двух разных столбцах кнопки из одной строки, то последняя нажатая начинает адово быстро срабатывать с интервалом переключения столбцов. Вот где этот глюк сидит - буду искать :-) Но весело было: дал сынуле часы по-кнопать, и слышу часы дурниной верещат... Ну думаю каюк, бета-тестер доигрался :-) А потом гляжу что он зажимает несколько кнопок одновременно и часы начинают адово обрабатывать нажатие :-)

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 14 дек 2014, 04:26 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2035
Супер круто для получения знаний (если они пригодятся будет мега круто)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 14 дек 2014, 13:55 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5158
Откуда: п. Борок, Ярославская область
Вчера вечером, как сынулю спать уложили, забубенил в часы "В траве сидел кузнечик" :-) Терь будильник и таймер могут играть музон :-) Сынуля терь в восторге :-)

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 14 дек 2014, 17:34 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5158
Откуда: п. Борок, Ярославская область
Обновил на Github.

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 15 дек 2014, 05:20 
Старожил

Зарегистрирован: 28 дек 2012, 07:17
Сообщения: 517
VivalzarD писал(а):
5. И в конце концов - КОРПУС! Как и из чего делать нихера не представляю. Часы и так жырные как тролль, но не тяжелые. В корпусе будут еще жырнее, и будут все задевать. Причем основная жырнота - это экран и аккумулятор, все остальное - тощее.. Ну кнопки еще, но их-то можно заменить на что нибудь низкопрофильное. А вот экран и аккумулятор не на что заменить.
Как-то так :-)

Корпус можно взять от какой-нибудь игрушки, можно склеить из пластика, спаять из текстолита, заказать на 3д принтере (самый дешевый - z-printer) или купить готовый :)
Изображение
Изображение

Насчет размера я бы вообще не парился. У меня есть навигатор типа такого
Изображение
вполне удобная вещь.
Ни за чего не задевает :)


Последний раз редактировалось Black Warrior 15 дек 2014, 05:31, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 15 дек 2014, 05:29 
Старожил

Зарегистрирован: 23 ноя 2010, 20:08
Сообщения: 1098
Откуда: тебя ебёт?
Тестировать ребёнками свежая мысль - взрослому человеку жизненный опыт и здравый смысл мешает синтезировать небанальные сценарии, бессмысленные, но возможные. А на банальных сценариях и тестировать нечего.

viewtopic.php?f=18&t=20719


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 15 дек 2014, 10:51 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5158
Откуда: п. Борок, Ярославская область
Спасиб за картинки, терь более-менее представляю какой корпус закрутить.

Еще вчера обнаружилась неудобная фича. Я носил в кармане эти часы несколько дней. Так вот кнопки достаточно чувствительные, чтобы нажаться от шевеления часов в кармане. А это не есть хорошо, по тому надо либо придумать возможность блокировки, либо механически как-то обезопасить кнопки от случайного нажатия. В обычных часах кнопки делают "дубовыми" чтоб нажимались туго. А тут-то не так...

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 15 дек 2014, 11:14 
Старожил

Зарегистрирован: 03 мар 2013, 11:01
Сообщения: 207
VivalzarD писал(а):
Спасиб за картинки, терь более-менее представляю какой корпус закрутить.

Еще вчера обнаружилась неудобная фича. Я носил в кармане эти часы несколько дней. Так вот кнопки достаточно чувствительные, чтобы нажаться от шевеления часов в кармане. А это не есть хорошо, по тому надо либо придумать возможность блокировки, либо механически как-то обезопасить кнопки от случайного нажатия. В обычных часах кнопки делают "дубовыми" чтоб нажимались туго. А тут-то не так...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 17 дек 2014, 15:35 
Заглядывает иногда

Зарегистрирован: 12 дек 2013, 22:40
Сообщения: 131
Народ вот аналог Интеграловский ЧН-01 сделал. На кортексе, а не на некроте какой-то ). В нормальном корпусе, с классическим дисплеем и большим временем жизни.
http://vk.com/electronika_cnp01


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наручные часы на ATMEGA
СообщениеДобавлено: 17 дек 2014, 15:53 
Старожил

Зарегистрирован: 28 дек 2012, 07:17
Сообщения: 517
k1801bm2a писал(а):
Народ вот аналог Интеграловский ЧН-01 сделал. На кортексе, а не на некроте какой-то ). В нормальном корпусе, с классическим дисплеем и большим временем жизни.
http://vk.com/electronika_cnp01

Ну народ то понятно. А вот ты походу только и можешь, что дебильные посты строчить.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 470 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 19  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB