Умею все, быстро обучаюсь. Поиск работы.
Ответить

Возьмусь за любой проектик на МК, мое хобби.

Пн авг 27, 2018 11:50:41

Деньги интересуют не существенно(скорее как стимул, обязательство довести до конца), хочется интересных проектов.
Пишу на ассемблере, для AVR, практически с детства(уже лет 15!)..
Создавал просто ЧУМОВЫЕ алгоритмы, что собственно меня и увлекает, не просто сделать чтоб работало, а чтоб потом смотреть и радаваться! (поэтому и ассемблер, там я вижу ВСЁ!).
..за простые и тривиальные проектики тоже возьмусь, делаются они легко и быстро, но особенно хочется с изысками. Силён в ситуациях когда требуется максимальное быстродействие, и абсолютная безотказность по программной части. Очень хорошо понимаю аппаратное устройство МК(т.е. как он работает, а не только знание команд). Сейчас взялся за язык "Python", так-что в скором может и более разумное сопряжение с компом/мобилкой, чем просто отправка цифер в программу-терминал.
...Выкладывал свои проекты мало, но кое-что есть. https://radiokot.ru/circuit/digital/home/59/
Последний раз редактировалось Faun Пн авг 27, 2018 11:59:47, всего редактировалось 1 раз.

Re: Возьмусь за любой проектик на МК, мое хобби.

Пн авг 27, 2018 11:59:12

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

Re: Возьмусь за любой проектик на МК, мое хобби.

Пн авг 27, 2018 12:06:16

Все лежит на компе, в горах исходников (в основном недописанных) :(.
если-б цель, заработать денег была-б в приоритете, взялся-б портфолио собирать,. А так лень.
По ссылочке один из них. т.с. подтверждение что это не сказки.

Re: Возьмусь за любой проектик на МК, мое хобби.

Пн авг 27, 2018 12:16:06

ну по ссылке, как бы, особой чумы не наблюдается... вот я и подумал, мож где-то в другом месте...

Re: Возьмусь за любой проектик на МК, мое хобби.

Пн авг 27, 2018 14:11:12

Это снаружи он прост(такова была задумка), внутри доволе наворочен.. Но это далеко не самое чумовое, просто доделано и выложено..
Спойлер.Include "2313def.inc"
;===
.equ OCR1BL = 0x28
.equ OCR1BH = 0x29 ;В инклуднике их пачемуто небыло :(
.equ TCCR0B = 0x33 ; Позже люди ругались, что это устаревший инклудник, увы, другова у меня нет
;===


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


.def reg=R16 .def Temp1=R16
.def reg_1=R17 .def Temp2=R17
.def reg_2=R18 .def Temp3=R18
.def slot_L=R19
.def slot_H=R20
.def flajki=R21
.def Nolik=R22
.def obraz_L=R23
.def obraz_H=R24
.def Temp=R25
.def Temp4=R26




.CSEG
.org 0
rjmp RESET ; Reset Handler
rjmp intt_0 ; External Interrupt0 Handler
rjmp intt_1 ; External Interrupt1 Handler
rjmp TIM1_CAPT ; Timer1 Capture Handler
rjmp TIM1_COMPA ; Timer1 CompareA Handler
rjmp TIM1_OVF ; Timer1 Overflow Handler
rjmp TIM0_OVF ; Timer0 Overflow Handler
rjmp USART0_RXC ; USART0 RX Complete Handler
rjmp USART0_DRE ; USART0,UDR Empty Handler
rjmp USART0_TXC ; USART0 TX Complete Handler
rjmp ANA_COMP ; Analog Comparator Handler
rjmp PCINT ; Pin Change Interrupt
rjmp TIMER1_COMPB ; Timer1 Compare B Handler
rjmp TIMER0_COMPA ; Timer0 Compare A Handler
rjmp TIMER0_COMPB ; Timer0 Compare B Handler
rjmp USI_START ; USI Start Handler
rjmp USI_OVERFLOW ; USI Overflow Handler
rjmp EE_READY ; EEPROM Ready Handler
rjmp WDT_OVERFLOW ; Watchdog Overflow Handler


; RESET: ; Reset Handler
; intt_0: ; External Interrupt0 Handler
; intt_1: ; External Interrupt1 Handler
TIM1_CAPT: ; Timer1 Capture Handler
; TIM1_COMPA: ; Timer1 CompareA Handler
TIM1_OVF: ; Timer1 Overflow Handler
TIM0_OVF: ; Timer0 Overflow Handler
USART0_RXC: ; USART0 RX Complete Handler
USART0_DRE: ; USART0,UDR Empty Handler
USART0_TXC: ; USART0 TX Complete Handler
ANA_COMP: ; Analog Comparator Handler
PCINT: ; Pin Change Interrupt
; TIMER1_COMPB: ; Timer1 Compare B Handler
; TIMER0_COMPA: ; Timer0 Compare A Handler
TIMER0_COMPB: ; Timer0 Compare B Handler
USI_START: ; USI Start Handler
USI_OVERFLOW: ; USI Overflow Handler
EE_READY: ; EEPROM Ready Handler
WDT_OVERFLOW: ; Watchdog Overflow Handler
reti

;жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
; -настройка-
;жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж

RESET: cli
clr reg pauzaee: dec reg brne pauzaee ;Пауза от дребезга.


;-------- СТЁК
ldi reg,RamEnd ;установка указателя стека
out SPL,reg


;-------- ЛАПКИ
ldi reg,0b11111111 ;Индикатор (Бит 7-Розетка. )
out ddrB,reg
ldi reg,0b01110010 ;(0 колесо_вх)
out ddrD,reg ;(1 свет_в_Фотопару) (2 ONN-OFF(INT_подтянут))
;(3 колесо(INT)
;((4 6 Цифры Ш и Л.) (5 пищелка)



ldi reg,0b01010110 ;-----Кажись 4 и 6 нафик нинада (но пусть, раз работает)
out portD,reg ;подтянул он/офф(при киданьи на минус сработает)
;... (включил напругу ИК-светику)(и цифры, чтоб кра)
;-------- ПЕРЕМЕННЫЕ
ldi Nolik,0
cbr flajki,0b11111011 ;7- (СОН) ;6- (визг серены) ;5- (Щелчёк) ;4- (Секундомер) ;3- (мелодия)
;2- (0 или 99) ;1-(звон гимна)


;-------- СОН в режиме @повер довн@.
ldi reg,0b00110000
out MCUCR,reg
;-------- индикатор
rcall TIM_0A_INDICAT

sei;=====================

;-------- Два минусика на экран
ldi obraz_H,0b00111111 ldi obraz_L,0b00111111
ldi reg,255 rcall PAUZA_65536 ;пауза

;-------- Загрузить текушее НУЛЕВОЕ время
ldi slot_L,0 rcall load_cifer_L
ldi slot_H,10 rcall load_cifer_H

;-------- а патом уж можна считать что включенО(калесо и кнопка) :)
ldi reg,0b11100000
out GIMSK,reg
;жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
; -прога-
;жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж

CIKL:
;rjmp muzz_on
sbrc flajki,6
rcall VIZG_SERENI ;визг серены
sbrc flajki,5
rcall s4el4ek ;
sbrc flajki,3
rcall muzz_on
rjmp CIKL




;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;|||||||||||||||||||||||||||| ЗВУК |||||||||||||||||||||||||||||||||
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

;--- Пермонентный визг серены
VIZG_SERENI: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ тон ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
sbi portD,5
ldi reg,30 pauza_cikl_1: dec reg brne pauza_cikl_1 ;
cbi portD,5
ldi reg,30 pauza_cikl_11: dec reg brne pauza_cikl_11 ;
ret ;===================


;--- Счелчек
s4el4ek: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
cbr flajki,0b00100000
ldi reg_1,24 ;-каличество колебаний
p_2:
ldi reg,15 ;продолжительность off
p_1: dec reg brne p_1 ;пауза полупериуда одного колебания динамика
sbi portD,5
ldi reg,2 ;продолжительность onn
p_1_: dec reg brne p_1_ ;пауза полупериуда одного колебания динамика
cbi portD,5
dec reg_1
brne p_2 ;Цикл для 256-ти колебаний
ret ;===================

muzz_on: ;шшшшшшшшш http://radiokot.ru/lab/controller/02/
;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/
;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/
;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/

rcall SHIM

;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/
Partiture:
clr YL clr YH ;YX, счётчик.. последовательный адрес в мелодии
Play:
rcall HymnUSS ;Загрузка ноты в Temp3
cpi Temp3,0xff
brne PartitureEnd_ ;Проверка на конец пестни
rjmp PartitureEnd ;!!??? Чёта ругалось, паэтаму тут перепрыгиваю... какая-то страшная карявость :(
PartitureEnd_:
rcall Note ;Загрузить чтота в Temp2 и Temp1 последовательно (адрес в "нотеплее" соответствующи Temp3)
;и далее погнать в функцию плея(каторая на 3 перемножает и в первы кампаратор загоняет)...
rcall HymnUSS_1

rcall Wait

rjmp Play
;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/


HymnUSS: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
ldi ZH,High(HymnUSSR*2)
ldi ZL,Low(HymnUSSR*2)
add ZL,YL
adc ZH,YH ;в Z паследовательно загружается весь гимн
lpm
mov Temp3,r0
adiw YL,1 ;штоб не матлялась внутри проги, серавно кажды раз увеличивать
ret ;===================

HymnUSS_1: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
ldi ZH,High(HymnUSSR*2)
ldi ZL,Low(HymnUSSR*2)
add ZL,YL
adc ZH,YH ;в Z паследовательно загружается весь гимн
lpm mov Temp3,r0
adiw YL,1 ;штоб не матлялась внутри проги, серавно кажды раз увеличивать
ret ;===================

Note: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
ldi ZH,High(Notelist*2) ldi ZL,Low(Notelist*2)

clr Temp1
lsl Temp3 rol Temp1 ;эта умножелось на два, так понимаю...

add ZL,Temp3 adc ZH,Temp1

lpm mov Temp2,r0
ldi reg,0b00010010 out 0x30,reg
cpi Temp2,0xFF
brne hffhhfhf
out 0x30,Nolik ; tccr0a
hffhhfhf:
adiw ZL,1
lpm mov Temp1,r0
mov r0,Temp2 mov r1,Temp1
lsr Temp2 ror Temp1 ;Поделить на два (или умножить на 0.5)
lsr Temp2 ror Temp1 ;Поделить на два (или умножить на 0.5)
add Temp1,r1 adc Temp2,r0
lsr Temp2 ror Temp1

out 0x36,Temp1
ret ;===================

Wait: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ

dddd1:
ldi reg,12
rcall PAUZA_65536
dec Temp3 brne dddd1
sbrs flajki,3
rcall CIKL
ret ;===================

PartitureEnd:
cbr flajki,0b00001000 ;Перестать "мелодировать", Вкл. звук серены 1Б..

rcall TIM_0A_INDICAT ; вернуть Индикатор

ret ;===================


;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/
;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/
;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/
;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;|||||||||||||||||||||||||||| ВРЕМЯ |||||||||||||||||||||||||||||||||
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



;--- 65536-пауза
PAUZA_65536: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
clr reg_1
EXT_PAUZA: dec reg_1
brne EXT_PAUZA
dec reg
brne EXT_PAUZA
ret ;===================




;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;|||||||||||||||||||||||||||| Cекундомер ||||||||||||||||||||||||||||
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++




ZAPUSK_OTS4ETA: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
rcall TIM_1A_TIME ;ВКЛ и настройка таймера
;--- вЫкл музыку, сирену и т.п.
cbr flajki,0b01001000
sbr flajki,0b00100000 ;выйдя из прерывания красиво счЁлкнет.

sbi portB,7 ; РОЗЕТКА!
ret ;===================



STOP_OTS4ETA: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
;--- вЫключение счета времени. 1A (на всякий и Б тоже)
in reg,TIMSK cbr reg,0b01100000 out TIMSK,reg

cbi portB,7 ; РОЗЕТКА-выкл!
ret ;===================



;-------- Отсчёт 240-> 0 (цифры "-" )
TIMER: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ Отсчёт 240-ка
;Есть адна загвоздина, когда я накрутил калёсиком 1, то отсчитав 240 отсчёт устанавливается
;в ноль, и срабатывает серена...
;Но если я нажал секундомер, то до еденицы ано просчитает 240, А в обратную сторану получается ТУТ-ЖЕ
;и обнулится(минута пропадёт безвозвратно, а если ее не набежало, то счёт провалится в 99).
;ПосемуЮ задействую флаг, обозначающий, до 99, или до нуля считать!
;----------


lds reg,TIK_TAK
dec reg
brne TIK_TAK_NOTzero;(флаги НОНЕ)
ldi reg,240;(флаги НОНЕ) ;крутить по кругу 240
TIK_TAK_NOTzero:;(флаги НОНЕ)
sts TIK_TAK,reg;(флаги НОНЕ)
brne Ne_vremia_dikrimenta ;(!!!!ФЛАГИ ПРЕЖНИЕ!!!!) ;пара-ли декремировать..

rcall V_MINUS ;отсчетнуть в обратную,.. МИНУТА! :)

;---------- Проверка на ноль таймера
;--- Из таймера пошли на РЕ.? (тогда отсчёт до 99)
sbrc flajki,2
rjmp PROVERKA_NA_99 ;Ага, до 99
cpi slot_H,10
brne PRODOLJ_OTS4ET
cpi slot_L,0
brne PRODOLJ_OTS4ET
rjmp SERENU

PROVERKA_NA_99:
cpi slot_H,9
brne PRODOLJ_OTS4ET
cpi slot_L,9
brne PRODOLJ_OTS4ET

;---------- Запуск сирены
SERENU:
;--- Картинку *00 на экран!
ldi obraz_H,0b01000000 ldi obraz_L,0b01000000
rcall TIM_1B_SERENU
sbr flajki,0b00001000 ;Включить "плей" музыки(уйдёт туда из основного цыкла)
cbi portB,7 ; вЫключить розетку

Ne_vremia_dikrimenta:
PRODOLJ_OTS4ET:
ret ;===================



;-------- Отсчёт 0-> 240 (цифры "+" )
SEKUNDOMER: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
lds reg,TIK_TAK
inc reg cpi reg,240
brne TIK_TAK_NOT_240;(флаги НОНЕ)
clr reg;(флаги НОНЕ) ;крутить по кругу, с нуля до 240
TIK_TAK_NOT_240:;(флаги НОНЕ)
sts TIK_TAK,reg sts POSLEDNIY_TIK_TAK,reg;(флаги НОНЕ) ;Сохраняю патомкам(...для RE)
brne Ne_vremia_INkrimenta;(!!!!ФЛАГИ ПРЕЖНИЕ!!!!) ;пара-ли декремировать..
;----------!
rcall V_PLIUS ;Прибавить,.. МИНУТА! :)
;---------- минуты!
sts POSLEDNIY_slot_L,slot_L
sts POSLEDNIY_slot_H,slot_H ; Сейвить значение таймера для перезапуска

;---------- Проверка на 99
cpi slot_H,9
brne PRODOLJ_OTS4ET_SEK
cpi slot_L,9
brne PRODOLJ_OTS4ET_SEK

;---------- (ПЕРЕПОЛНЕНИЕ!!!)Запуск сирены
;--- Картинку *00 на экран!
ldi obraz_H,0b01000000 ldi obraz_L,0b01000000
rcall TIM_1B_SERENU
sbr flajki,0b00001000 ;Включить "плей" музыки(уйдёт туда из основного цыкла)
cbi portB,7 ; вЫключить розетку
Ne_vremia_INkrimenta:
PRODOLJ_OTS4ET_SEK:
ret ;===================

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;||||||||||||||||||||||||| ИНДИКАТОР ||||||||||||||||||||||||||||||||
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

;---Загрузка 7-мисегментного образа цифры.
load_cifer_L: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
ldi ZL,Low(CIFRKA*2)
ldi ZH,High(CIFRKA*2)
add ZL,slot_L
adc ZH,Nolik
lpm mov obraz_L,R0
ret ;===================

load_cifer_H: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
ldi ZL,Low(CIFRKA*2)
ldi ZH,High(CIFRKA*2)
add ZL,slot_H
adc ZH,Nolik
lpm mov obraz_H,R0
ret ;===================


;---<<<--обратный отсчёт
V_MINUS: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
dec slot_L
cpi slot_L,0b11111111
brne END_MINUS
ldi slot_L,9
;----------
cpi slot_H,10
brne X_dsddfadfasax
ldi slot_H,0
X_dsddfadfasax:
dec slot_H
cpi slot_H,0b11111111
brne END_MINUS
ldi slot_H,9
;----------
END_MINUS:
cpi slot_H,0
brne END_MINUS_
ldi slot_H,10
END_MINUS_:
rcall load_cifer_H
rcall load_cifer_L
ret;===================



;--->>>--прямой отсчёт
V_PLIUS: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
inc slot_L
cpi slot_L,10
brne END_PLUS
clr slot_L
;----------
cpi slot_H,10
brne X_dsddfadfad
clr slot_H
X_dsddfadfad:
inc slot_H
cpi slot_H,10
brne END_PLUS
END_PLUS:
rcall load_cifer_H
rcall load_cifer_L
ret;===================



;--- Cчёт времени.
TIM_1A_TIME: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
;--- СК/8
ldi reg,0b00000010 out tccr1B,reg
;--- Компоратор (по четверть секунды(это чтоб красиво тикать!!!))
ldi reg,0b00111101 out OCR1aH,reg ;H-00111101 L-00001001
ldi reg,0b00001001 out OCR1aL,reg ;Четверть_секунд (в минуте 240) (500.000*60)/240/8=15625 (в итоге минута! %).)
;--- ВКЛ прерыв
in reg,TIMSK sbr reg,0b01000000 cbr reg,0b00100000 out TIMSK,reg
out TCNT1H,Nolik out TCNT1L,Nolik
ret;===================

;--- Сирену.
TIM_1B_SERENU: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
;--- вЫключить 1A, В_ключить 1B
in reg,TIMSK cbr reg,0b01000000 sbr reg,0b00100000 out TIMSK,reg
;--- Компоратор (Как и А, но вдвое больше)
ldi reg,0b01111010 out OCR1bH,reg
ldi reg,0b00010010 out OCR1bL,reg ;
ret;===================




;--- Динамическая индикация.
TIM_0A_INDICAT: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
;--- Обрубить ШИМ
out 0x30,Nolik ; tccr0a
;--- CK/8
ldi reg,0b00000010 out TCCR0b,reg
;--- ВКЛ прерыв
in reg,TIMSK sbr reg,0b00000001 out TIMSK,reg ;включить динамическую индикацию

ret;===================

;--- ШИМ.
SHIM: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
;--- вЫключить свет экрана
in reg,TIMSK cbr reg,0b00000001 out TIMSK,reg ;прерывание вырубить
cbi portD,4 cbi portD,6 ;Свет...
;--- CK/0
ldi reg,0b00000010 out TCCR0b,reg
;--- ;грЁбаная комбинация СОМ-а и ВГМ-а, над каторой я ДЕНЬ парился! :-/ (в даташите-ж написали "резерв", а ано исправна работае!)
ldi reg,0b00010010 out 0x30,reg ; tccr0a
ret;===================




;-- Выведение цифры на экран, динамическое!
;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
TIMER0_COMPA: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ Динамич. индикац. ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
push reg ;I
in reg,SREG;I
push reg ;I
;============+
in reg,portB
bst reg,7 ; !Бит розетки сбереч!

sbic portD,4
rjmp PIATIY
rjmp CHETVERTIY
CHETVERTIY: sbi portD,4 cbi portD,6 bld obraz_L,7 out portB,obraz_L rjmp END_PEREKID_
PIATIY: cbi portD,4 sbi portD,6 bld obraz_H,7 out portB,obraz_H
END_PEREKID_:
;============+
pop reg ;I
out SREG,reg;I
pop reg ;I
reti;----------




;-- Выявляет в которую сторану его крутнули(цифру крутит), запускает
;обратны отсчёт ВСЕГДА, а патом красиво счёлкнуть ;)
;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
intt_1: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ колёсеко ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
push reg ;I
in reg,SREG;I
push reg ;I
push reg_1 ;I
push reg_2 ;I
;============+
rcall TIM_0A_INDICAT
cbr flajki,0b01001000 ;--- прервать визжание(и гимн)
;--- Проверка состояния бита направления колеса
sbic pinD,0 ;
rjmp X_V_PLIUS
rjmp X_V_MINUS
X_V_PLIUS: rcall V_PLIUS rjmp X_V_end
X_V_MINUS: rcall V_MINUS
X_V_end:

;--- Флажок штоб считало до 0 при тайминге
cbr flajki,0b00000100

;--- Фитча с проверкой на ноль(ато не нравится что считает когда накрутил зеро)
cpi slot_H,10
brne NE_V_NULE
cpi slot_L,0
brne NE_V_NULE
rcall STOP_OTS4ETA

;--- Чтоб при попытке RE не считало от 99, а скручивало дулю, и серенило!
sts POSLEDNIY_slot_L,slot_L sts POSLEDNIY_slot_H,slot_H ldi reg,1 sts POSLEDNIY_TIK_TAK,reg
rjmp NE_PROKRUTILI

NE_V_NULE:
;--- Сейвить последнее значение таймера для перезапуска (вроде это здесь от глюков, при отсчёте обратном тоже сейвит-же)
sts POSLEDNIY_slot_L,slot_L sts POSLEDNIY_slot_H,slot_H
ldi reg,240 sts POSLEDNIY_TIK_TAK,reg sts TIK_TAK,reg ;Сохранить для (на случай RE)
rcall ZAPUSK_OTS4ETA

;--- удерживать от самонакручивания(ато выскочит из прерывания, и пайдёт кружить ...)
NE_PROKRUTILI: sbis pinD,3
rjmp NE_PROKRUTILI ; Тут нада какта по другому(ато стапарится если калесо астановится на тени)

;============+
pop reg_2 ;I
pop reg_1 ;I
pop reg ;I
out SREG,reg;I
pop reg ;I
reti;----------





;-- Сам механизм тайминга(по четвертьсекунды)
;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
TIM1_COMPA: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ Отсчёт ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
out TCNT1L,Nolik out TCNT1H,Nolik ; не влияет на флаги, патаму и вынес вперёд
;----------
push reg ;I
in reg,SREG;I
push reg ;I
push reg_1 ;I
push reg_2 ;I
;============+
;--- Направление отсчёта определить
sbrc flajki,4
rcall SEKUNDOMER ;Когда еденичка, тогда секундомер считает
sbrs flajki,4
rcall TIMER ;Если нолик, таймер

sbr flajki,0b00100000 ;выйдя из прерывания красиво счЁлкнет
;============+
pop reg_2 ;I
pop reg_1 ;I
pop reg ;I
out SREG,reg;I
pop reg ;I
reti;----------






;-- Визг из серены должен быть пи-п, пи-п, пи-п, пи-п, (его продолжительность здесь(пепрекидывая флажком))
;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
TIMER1_COMPB: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ Серена ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
out TCNT1L,Nolik out TCNT1H,Nolik
;------Пака мелодия не отзвучит, не серенить!
sbrc flajki,3
rjmp PI__end
;-------- инвертация флажка ВКЛ-непрерывного визка
sbrc flajki,6
rjmp PIS4IT
rjmp MOL4IT
PIS4IT: cbr flajki,0b01000000 ldi obraz_H,0b01000000 ldi obraz_L,0b01000000 rjmp PI__end ;*00 на экран вывести*
MOL4IT: sbr flajki,0b01000000 ldi obraz_H,0b01111111 ldi obraz_L,0b01111111 PI__end: ;* на экран вывести*
reti;----------





;-- Перед уходом в сон выключает перефирию а с выходом, перебрасывает на ресет
;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
intt_0: ;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ sleep (И ПРОЧИЕ РЕЖИМЫ) ЖЖЖЖЖЖЖЖЖЖЖЖ
;ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ
push reg ;I
in reg,SREG;I
push reg ;I
push reg_1 ;I
push reg_2 ;I
;============+
;>>>>>>>>---------- ;включить динамическую индикацию
rcall TIM_0A_INDICAT
cbr flajki,0b01001000 ;--- прервать визжание(и гимн)
;---------- Выключить прерывание кнопки (чтоб sei-индикация продолжалась)
in reg,GIMSK cbr reg,0b01000000 out GIMSK,reg
sei

;>>>>>>>>---------- из сна методом ресета!
sbrs flajki,7 ;ПЕРЕЗАПУСК?(по флагу)
rjmp NE_IZ_ZSNA
rjmp RESET
NE_IZ_ZSNA:

;>>>>>>>>----------;определение нужды продцедуры останова секундомера
sbrs flajki,4 ;определение нужды продцедуры останова секундомера (по флагу)
rjmp NE_PAUZA
;--- иначе останавить/запустить секундомер
in reg,TIMSK sbrs reg,6 ;Прям по состоянию бита TIM1_COMPA определяю, вкл. или выкл. секундомера.
rjmp START
rjmp STOP
START: rcall ZAPUSK_OTS4ETA rjmp ST__end
STOP: rcall STOP_OTS4ETA
ST__end:
;----------, просто затем, чтоб не пащло перебирать режимы что далее по списку
ldi reg_2,4 ;каличество пееропрашиваний
X_STSTOP_PAUZA_1: ldi reg,64 rcall PAUZA_65536
sbic pinD,2
rjmp NU_VSIO_UJE
dec reg_2 brne X_STSTOP_PAUZA_1 ;
;>>>>>>>>----- ---------;----------

NE_PAUZA:
in reg,TIMSK cbr reg,0b01100000 out TIMSK,reg ;Вырубить таймер 1А-1В. дальше установятся, а тут нахер ненада
rcall STOP_OTS4ETA ;это на всякий случай(дп и палюбому, начнётся чтота новае)
PO_KRUGU:
;===================Пауза "ОФФ".
rcall s4el4ek ;Щёлкнуть для наглядности
ldi obraz_H,0b01000000 ldi obraz_L,0b00001110 ;"ОФФ"
ldi reg_2,7 ;каличество пееропрашиваний
X_SON_PAUZA_1: ldi reg,64 rcall PAUZA_65536
sbic pinD,2
rjmp V_SON
;----------
dec reg_2 brne X_SON_PAUZA_1 ;Х5 Палучится ВДВЕ секунды!
;===================Пауза в 2сек, ***РЕ***
rcall s4el4ek ;Щёлкнуть для наглядности
ldi obraz_H,0b00001100 ldi obraz_L,0b00000110 ;*РЕ*
ldi reg_2,7 ;каличество пееропрашиваний
X_RE_PAUZA_1: ldi reg,64 rcall PAUZA_65536
sbic pinD,2
rjmp V_RE
;----------
dec reg_2 brne X_RE_PAUZA_1 ;Х5 Палучится ВДВЕ секунды!
;===================Пауза в 2сек, ***СЕкундамер***
rcall s4el4ek ;Щёлкнуть для наглядности
ldi obraz_H,0b01000110 ldi obraz_L,0b00000110 ;СЕ
ldi reg_2,7 ;каличество пееропрашиваний
X_CE_PAUZA_1: ldi reg,64 rcall PAUZA_65536
sbic pinD,2
rjmp V_CE
;----------
dec reg_2 brne X_CE_PAUZA_1 ;Х5 Палучится ВДВЕ секунды!
rjmp PO_KRUGU ;================


V_CE: cli ;========Секундомер
sbr flajki,0b00010100 ;СЕККУНДОМЕР,.. Задать направление отсчёта (флагом)
;Флажок штоб считало 2-1-0-99-стоп!! при тайминге
;--- обнуление для РЕ с нуля
ldi slot_L,0 sts POSLEDNIY_slot_L,slot_L rcall load_cifer_L
ldi slot_H,10 sts POSLEDNIY_slot_H,slot_H rcall load_cifer_H
ldi reg,1 sts TIK_TAK,reg sts POSLEDNIY_TIK_TAK,reg ;обнулить секунды(точнее обьеденичивание, от греха..)
;--- вЫключить калёсика(ано тепер незачем)
in reg,GIMSK cbr reg,0b10000000 out GIMSK,reg
rjmp NU_VSIO_UJE ;-;-;-;-;-;-


V_RE: cli ;========ПЕРЕЗАПУСК ТАЙМЕРА
cbr flajki,0b00010000 ; поменял направление отсчёта на ТАЙМЕРное (бит 2 трогать нельзя!, ато вдруг после секундамера???)
;--- Загрузить,.. и на экран последнее значение..
lds slot_L,POSLEDNIY_slot_L lds slot_H,POSLEDNIY_slot_H
rcall load_cifer_L rcall load_cifer_H
;--- Загрузить последнее значение секунд в секундосчётчик
lds reg,POSLEDNIY_TIK_TAK sts TIK_TAK,reg ;(востановить минутные доли)
rcall ZAPUSK_OTS4ETA
rjmp NU_VSIO_UJE ;-;-;-;-;-;-


V_SON: cli ;========СОН(подготовка)
out ddrB,Nolik out portB,Nolik ;(погасить) Индикатор, розетка,
out ddrD,Nolik ;-вся перефирия
ldi reg,0b00000100 out portD,reg ;кнопку оставить подтянутой(ей-же включать!!)
;--- ;Изалировать прерывание колёсика(чтоб не глюкноло ва сне(мот и нинада)) ((((кнопку включить, я-ж ее отрубал уходя в прерывание!))))
in reg,GIMSK sbr reg,0b01000000 cbr reg,0b10000000 out GIMSK,reg
sbr flajki,0b10000000 ;Уйдёт в сон зная что следующее нажатие кнопы, вызавит RESET!(он праписан в самам верху прерывания)
sei ;-ато ведь и не сможет выйти из сна!
sleep ;-;-;-;-;-;-;-;-




NU_VSIO_UJE: sei
ldi reg,125 rcall PAUZA_65536 ;Пауза от дребезга.
cli ;В прерывании ведь дефолтам стаит запрет прерываний :) (паэтаму нада вернуть как и було, чтоб ано благапалучно завершило сваи дела)
in reg,GIMSK sbr reg,0b01000000 out GIMSK,reg ;В_ключить прерывание кнопки

;============+
pop reg_2 ;I
pop reg_1 ;I
pop reg ;I
out SREG,reg;I
pop reg ;I
reti;----------

;жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
; -данные(в ОПЕРАТИВКЕ)-
;жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж

CIFRKA:
.db 0b01000000,0b01111001 ;0 1
.db 0b00100100,0b00110000 ;2 3
.db 0b00011001,0b00010010 ;4 5
.db 0b00000010,0b01111000 ;6 7
.db 0b00000000,0b00010000 ;8 9
.db 0b01111111,0b01111111 ; zero

;жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж



;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/
HymnUSSR: .db 19,24,24,32 ;союз
.db 19,24,21,8,23,32 ;неруши
.db 16,12,254,4,16,16,21,32 ;мый респу
.db 19,24,17,8,19,32 ;блик свобо
.db 12,12,254,4,12,16,14,32 ;дных сплоти
.db 14,16,16,16,17,32 ;ла наве
.db 17,16,19,16,21,32 ;ки вели
.db 23,24,24,8,26,16 ;кая Русь
.db 19,4,254,2,19,4,254,2,16,16,254,2 ;та-та-тааа
.db 19,16,28,32 ;да здра
.db 26,24,24,8,26,32 ;вствует со
.db 23,16,19,16,24,32 ;зданный во
.db 23,24,21,8,23,32 ;лей наро
.db 19,16,16,16,21,32 ;да вели
.db 19,16,17,16,19,32 ;кий могу
.db 14,16,12,16,24,32 ;чий Сове
.db 23,16,21,16,19,16 ;тский Союз
.db 19,4,254,2,19,4,254,2,21,16,23,16 ;та-та-тааа
.db 28,64,26,16,24,16,23,16,24,16,26,16 ;Сла-а-а-а вься-а-а-а-те
.db 254,2,19,4,254,2,19,4,254,2,19,12 ;та-та-та че
.db 254,4,18,12,254,4,19,12,254,4 ;ство тата
.db 19,16,21,16,23,16 ;ти-та
.db 24,64,23,16,21,16,19,16,21,16,23,16 ;На-а-а-а ше-е сва-а-бо
.db 254,2,16,4,254,2,16,4,254,2,16,12 ;та-та-та дно
.db 254,4,16,12,254,4,16,12,254,4 ;е-е-е тата
.db 16,16,17,16,19,16 ;ти-та
.db 21,32,17,16,19,16,21,32 ;дружбы наро
.db 17,24,19,8,21,32 ;дов надё
.db 17,16,21,16,26,64 ;жный оплот
.db 29,64,28,16,26,16,24,16,26,16,28,48 ;Па-а-а-а рти-и-я-а Ле
.db 24,12,254,4,24,64 ;нина-а-а-а
.db 26,64,24,16,23,16,21,16,23,16,24,48 ;Си-и-и-и ла-а на-а-ро
.db 21,12,254,4,21,16,19,16,21,16,23,16 ;дная-а-а-а
.db 24,32,23,24,21,8,19,32 ;нас к торжеству
.db 14,8,254,8,12,16,24,32 ;коммуни-и
.db 23,16,21,16,19,12,254,4,17,8,254,4,255,0 ;зма ведёт!

; до(263) до#(285) ре(297) ре#(316) ми(330) фа(351) фа#(375) соль(395) соль#(422)ля(440) ля#(474) си(494)
; 0 1 2 3 4 5 6 7 8 9 10 11
; 12 13 14 15 16 17 18 19 20 21 22 23
; 24 25 26 27 28 29 30 31 32 33 34 35

; до(263) до#(285) ре(297) ре#(316) ми(330) фа(351) фа#(375) соль(395) соль#(422)ля(440) ля#(474) си(494)
; 0 1 2 3 4 5 6 7 8 9 10 11
Notelist: .db 0x02,0x50,0x02,0x24,0x02,0x0e,0x01,0xed,0x01,0xd9,0x01,0xbc,0x01,0xa0,0x01,0x8b,0x01,0x72,0x01,0x63,0x01,0x49,0x01,0x3c;сред. октава
; 12 13 14 15 16 17 18 19 20 21 22 23
.db 0x01,0x28,0x01,0x12,0x01,0x07,0x00,0xf6,0x00,0xec,0x00,0xde,0x00,0xd0,0x00,0xc5,0x00,0xb9,0x00,0xb1,0x00,0xa4,0x00,0x9e;бол. октава
; 24 25 26 27 28 29 30 31 32 33 34 35
.db 0x00,0x94,0x00,0x89,0x00,0x83,0x00,0x7b,0x00,0x76,0x00,0x6f,0x00,0x68,0x00,0x62,0x00,0x5c,0x00,0x58,0x00,0x52,0x00,0x4f;1 октава
;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/




.DSEG
TIK_TAK: .BYTE 1 ; здесь 240 четвертьсекунд на декреминацию



POSLEDNIY_slot_L: .BYTE 1 ;
POSLEDNIY_slot_H: .BYTE 1 ;Память последнего значения
POSLEDNIY_TIK_TAK: .BYTE 1 ; четвертьсекунды


;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/
MelAddL: .byte 1
MelAddH: .byte 1

MemTemp1: .byte 1
MemTemp2: .byte 1 ; Память затем чтоб на 3 перемножить(там где несходится изза разных мегагерцОв)

;portD: .byte 1
;шшшшшшшшшшшшшшшшшш http://radiokot.ru/lab/controller/02/


Наверное самым чумовым был проект с GPS-компасом для грибников... Там пришлось городить двоичную тригонометрию, учитывать разные там склонения и прочую муть, короче описать как я там изгалялся, сложно..
А логика работы должна была быть такой, ставишь точку, и идешь собирать грибы.. МК будит GPS по своему алгоритму, чем дальше ты от точки, тем реже, а когда приближаешся, чаще, вплоть до непрерывной работы..
Магнитометр дает такое преимущество, не нужно включать GPS и ждать поиск спутников(или носить с собой горсть батареек, и держать его всегда включенным), не нужно быстро двигаться, чтобы понять, где какое направление(сейчас в телефоны магнитометр встроен, но кто помнит прежние времена,. нужно было пройтись метров 10, чтобы по собственному движению понять направление).
Магнитометр-же практически ни чего не потребляет.. и стороны света тебе покажет, и направление к своей точке, мгновенно!.
.. Вобщем я раскурил магнитометр, ЖПС-модуль, написал программу.. Осталось все собрать, и тут как обычно пропал интерес, самое интересное и сложное уже сделано :(.
Последние пол года страдаю Устройством_Опережения_Зажигания. Простое магу за день написать, но мне-ж с изысками подавай!.. Вот это и есть моя слабая сторона, со временем понимаю, что меня захватывает именно ПРОЦЕСС!, а не конечный результат.. Вот это меня и склонило к мысли, что нужно обратиться к тем, у кого конкретная задача, РЕЗУЛЬТАТ!. Тут глядишь и копейка какая появится :), все-ж радость! Надоело заниматься программированием ради самого программирования.

Re: Возьмусь за любой проектик на МК, мое хобби.

Пн авг 27, 2018 14:32:41

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

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

Re: Возьмусь за любой проектик на МК, мое хобби.

Пн авг 27, 2018 15:09:05

Простое магу за день написать, но мне-ж с изысками подавай!.. Вот это и есть моя слабая сторона, со временем понимаю, что меня захватывает именно ПРОЦЕСС!, а не конечный результат.. Вот это меня и склонило к мысли, что нужно обратиться к тем, у кого конкретная задача, РЕЗУЛЬТАТ!. Тут глядишь и копейка какая появится :), все-ж радость! Надоело заниматься программированием ради самого программирования.
Есть у меня такая задача. :) Сам в написании программ для МК не силён, поэтому несколько раз обращался сюда за помощью в написании простейших программ. Обращаться со сложной программой всё не хватало смелости, а тут Вы сами просите посложнее. :))) :beer:
Вознаграждение естественно гарантируется. :)

Re: Возьмусь за любой проектик на МК, мое хобби.

Пн авг 27, 2018 15:42:01

ARV Да, интересненькая идейка, мне такая в голову пака не приходила, как появится ей применение, вспомню ее и поразмыслю ;).. С переключением ног в разные режимы, то вовсе не задача, там скорей с электроникой..
Кстати, из того-же разряда.. Например для таймера, я его как предельно простой позиционировал, и на схемке нарисовал один резистор для всего 7-сегментника(хоть и рекомендовал ставить как положено).. Короче можно было дописать прогу, чтобы слишком яркие(например "1") светились чуть меншее время, а например "8", подольше.. Это сгладило-бы эфект разной яркости. Правда косяк в том, что этот-же таймер как-бы очень неприхотлив к батарейкам, и когда они будут просаживаться, всеравно эфект начнет вылазить, но можно подобрать что-та средне.. Жаль что я об этом подумал уже когда марально поставил точку на проекте.
----------
Вспомнил свой проект, выключатель света для аквариума(растения там, им свет нужен), и он несколько лет без сбоев работал, пака аквариум не сплавил..
Там программа была не так уж сложнА, интересен алгоритм.. Всего одна кнопка, и светодиод.
Логика работы такая, включаешь его в разетку в полночь. Ближе к вечеру(когда темнееет) нажимаеш кнопку, свет зажигается,.. и нажимаеш когда нужно выключить... МК считает ровно сутки, и повторяет этот цикл день за днем..
...а если вдруг пропал свет, и время сбросилось, то смотриш на часы,.. например 17 часов.. Прижимаешь кнопку, и ждешь когда светодиод маргнет 17-ть раз.. Отпускаешь, и он настраивается как-будто 17:00, и он работает в нормальном режиме.
А вот сейчас о том, в чем оказался интересный плюс этого выключателя!.. Чтобы знать что он правильно работает(настроен верно), светодиод маргает столько раз, сколько сейчас часов, потом пауза подольше. И это оказалось ароста суперско!.. Просыпаешься ночью, и думаешь, "а сколько-это мне еще спать, и на работу вставать?", смотришь на потолок(а в темноте маргание хорошо видно), и быстро вьезжаеш, 2, 4 или 5 часов сейчас.. Это оказалось реально клево и полезно! :)
----------
korob, пишите в личку :).

Re: Возьмусь за любой проектик на МК, мое хобби.

Пн авг 27, 2018 20:14:46

Хм... Говорят, у дураков мысли сходятся...
Ваш вариант с одним резисторов на разряд семисегментника был мною применен на несколько лет раньше, но с яркостью проблем не было, т.к. я использовал посегментную динамическую индикацию, а не поразрядную.
Таймер по вашему принципу я тоже делал, и ещё раньше, чем посегментную индикацию. Ещё на AT89C2051...
И, признаться, впервые с тех пор встречаю человека, которому интересен нестандартный подход к простым вещам.

Re: Возьмусь за любой проектик на МК, мое хобби.

Пн авг 27, 2018 21:47:00

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

Re: Возьмусь за любой проектик на МК, мое хобби.

Пн авг 27, 2018 22:25:38

Я видел потрясающие "ролики" всего в 64 килобайта :)))

Re: Возьмусь за любой проектик на МК, мое хобби.

Вт авг 28, 2018 14:01:24

Раньше проводились конкурсы, и были различные номинации, для разных килобайт и под разное железо. На сайтах лежали десятки и сотни таких творений в каждой папке..(правда большинство не запускаются, или убоги(на фоне прочих), но победители в отдельных папках, хватало и без них).
Жаль что это вымерло,.. отношение к программированию как к искусству, стремление к совершенству.
Вот, сходу нашел один из них http://chaostheory.conspiracy.hu/downloads.php или если комп не тянет(у меня видюха дохлая), можно на ютубе посмотреть.. https://www.youtube.com/watch?v=ZfuierUvx1A
Вот здесь https://www.youtube.com/channel/UC96JVq ... AkIkKp1_6w лежит МНОГО видюшек, можно позалипать.. И не ленитесь читать, сколько килобайт ЭТО весит :)
А это кажись был моим любимым 117 кб. https://www.youtube.com/watch?v=mxfmxi- ... m0QuM1CAy3 Целый город отгрохали(а потом угрохали)!
Качнуть можно здесь,.. https://files.scene.org/view/parties/20 ... debris.zip Заодно проверите как комп тянет :). Создавалось в 2007-ом
"Хэло ворд" обычно весит больше ;)

Re: Возьмусь за любой проектик на МК, мое хобби.

Вт авг 28, 2018 15:35:49

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

Ничего никуда не делось, только на одной "Revision 2017" demoparty было 93 демки, для разных платформ, от 4К.

Re: Возьмусь за любой проектик на МК, мое хобби.

Вт авг 28, 2018 15:54:46

Ага... Было. Только в 2017 году в демке на 4к на самом деле задействован графический движок из системы, а в нем весу несколько десятков мегабайт, если не больше. Нечестное сравнение.

Re: Возьмусь за любой проектик на МК, мое хобби.

Вт авг 28, 2018 17:42:04

Ага... Было. Только в 2017 году в демке на 4к на самом деле задействован графический движок из системы, а в нем весу несколько десятков мегабайт, если не больше. Нечестное сравнение.

С таким подходом только на тиньках и остается писать, потому что вполне возможно даже для создания пустого окна уже потребуется загрузить dll-ок на мегабайты :)

Re: Возьмусь за любой проектик на МК, мое хобби.

Вт авг 28, 2018 19:55:15

Именно так. Демки изначально затачивались под DOS, где о графике и графическом драйвере даже думать никто не мог. И тем интереснее было видеть, как из каждого байта выжимается максимум, например, как текстуры одновременно были и мелодиями и скриптами движения.
А сейчас уже совсем не то. Скоро демкой будут звать питоновскую строчку, запускающую плейер...

Re: Возьмусь за любой проектик на МК, мое хобби.

Вт авг 28, 2018 22:06:09

Все лежит на компе, в горах исходников (в основном недописанных) :(.
если-б цель, заработать денег была-б в приоритете, взялся-б портфолио собирать,. А так лень.
По ссылочке один из них. т.с. подтверждение что это не сказки.

Выкладывайте на гитхабе. Это снимает кучу вопросов, и дает бонусные ачивки к квалификации :)

У меня пока не дошли руки до этой задачи https://radiokot.ru/forum/viewtopic.php?f=53&t=155360. Был бы рад если бы кто-нибудь присоединился. Правда не AVR и не ассемблер, но будет не стыдно тыкать пальцем, указывая в достижениях.

Re: Возьмусь за любой проектик на МК, мое хобби.

Ср авг 29, 2018 12:23:52

pvit писал(а):У меня пока не дошли руки до этой задачи https://radiokot.ru/forum/viewtopic.php?f=53&t=155360. Был бы рад если бы кто-нибудь присоединился.

Почитал, очень непонятно пишите(возможно для того, кого вы ищите все понятно)..
...Так-что просто поделюсь своим опытом размышлений на эту тему...
Последний мой проект. был круто-нафаршированный Устройство_Опережения_Зажигания(УОЗ). Хотелось добавить туда ВСЁ, на все случаи жизни... Например у любого зажигания по разному расположены датчики, (ориентируясь на которые УОЗ определяет время искры, могут быть доролниетельные устройства, датчики разряжения на входе в карбюратор, положения заслонки,.. датчики температуры и может что-та еще.. Сперва писал программу так, что это ВСЁ сразу было включено, но выставляя переменную, которая определяте, какие функции программа будет использовать, а какие нет.. В результате получился жуткий фарш (НО и ЕСЛИ)..
..Тогда решил писать программу в другом стиле.. Все наверное помнят приставки Дэнди и пр. к ним продавались картриджи, и на некоторых было по ТЫСЯЧЕ игр.. По детской наивности казалось что это МЕГА-картридж, но на поверку оказывалось, что все игры внутри, это просто разные вариации нескольких разных.
Короче програмисты писали функции из которых по сути на 98% состаит игра, а потом писали в основной функции ссылались на дополнительные. Получается, чтобы написать другую игру, нужен час, и пара десятков килобайт, и можно проделать такой трюк, как "1000 игр!"
В общем я думаю сл. версию УОЗ делать по такому принципу, некая переменная будет определять, на какой код перепрыгнет при включении программа, В каждой из них будет ВСЁ ТОЛЬКО ОСНОВНОЕ!.. а функции можно просто сложить в общую стопкоу. Впрочем ни чего нового, так все и должно быть.
... Это такая большая присказка, а сказка,.. Раз уж оно такое универсальное, значит управлять этим "много(безо)/бразием" нужно как-то удобнее. Решил что лучше всего это будет мобилка, т.к. в ней есть все безпроводные интерфейсы, мне по душе именно блютуз.. Начал ковырять, с помощью чего можно легко сделать прогу для мобилки. Оказалось что "Pithon" самое оно!. Во первых он задуман как максимально простой(не сравнить с Си), и является интерпретируемым(т.е. не код на выходе формируется, а блок используемых в программе функций, а сама программ преобразуется в просто более компактный набор байт, который просто дублирует текстовый вариант). Фишка оказалась в том, что из-за растущей популярности, и заложенной "крос-платформенности", сейчас наделали стООлька библиотек, модулей и инструментов облегчения создания программ. что пиши под что хочеш!, даже что хочеш(вплоть трёх-дэшных игр).
..от программирования мне нужно по сути не много, сделать окошко(есть модуль, в котором просто мышкой рисуеш окно какое тебе нравится), выводить графики(есть библиотеки, бери и пользуй, учить ничего не нада).. Вводить в поля свои цифры(в первом уроке о переменных, просто пишеш input, и переменной присваивается значение), и кое-какие манипуляции, +-/*... Сохранить в файл, было в 4-ом уроке, команда "оpen" присваивает переменной содержимое файла, (и в ковычках, "w(т.е. открыть как сохраняемый)"), чтобы при закрытии файла содержимое переменной сохранилось в файл,.. ну не красота-ли?! :).
.....Мне еще предстоит найти библиотеку, которая открывает блютуз... Но теперь я ТОЧНО знаю, что там все будет примерно так-же "открыть, включить, отправить.." :).
Я когда-то пытался раскурить макросы в терминале, чтобы сделать простейшую обработку полученых от МК цифр.. Наверное освоить питона, и написать свой терминал не многим сложнее, А приятный бонус, потом можно создавать все что угодно, под любые платформы, и все заточено чтобы любой чайник мог сразу всё!. Так-что рекомендую не проходить мимо, если хотите расширить возможности своих творений на МК. :).
Конечно-же С++ много круче, но осваивать его для простеньких прог для связи с компом, серавно что покупать промышленный пневмо-молоток, когда нужно просто забить гвоздь.

Re: Возьмусь за любой проектик на МК, мое хобби.

Ср авг 29, 2018 12:57:25

Конечно-же С++ много круче, но осваивать его для простеньких прог для связи с компом, серавно что покупать промышленный пневмо-молоток, когда нужно просто забить гвоздь.

За это мне и нравится си - можно и прошивку микроконтроллера писать, и программу для компа (по крайней мере, консольные - на раз). Что-нибудь чисто-алгоритмическое при правильном подходе даже можно отладить на компе собирая под x86 а потом перенести на процессор. Я правда с STM32 развлекаюсь и под Linux.

Re: Возьмусь за любой проектик на МК, мое хобби.

Ср авг 29, 2018 13:20:42

И для SMT питоны есть. ..поговаривают что и для AVR-ок.
Нужно взвешивать свои потребности, и возможности.. Как-бы не скатилось в извечный спор, какоя язык самый лучший ;)
Ответить