| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Возьмусь за любой проектик на МК, мое хобби. https://radiokot.ru/forum/viewtopic.php?f=54&t=157044 |
Страница 1 из 2 |
| Автор: | Faun [ Пн авг 27, 2018 11:50:41 ] |
| Заголовок сообщения: | Возьмусь за любой проектик на МК, мое хобби. |
Деньги интересуют не существенно(скорее как стимул, обязательство довести до конца), хочется интересных проектов. Пишу на ассемблере, для AVR, практически с детства(уже лет 15!).. Создавал просто ЧУМОВЫЕ алгоритмы, что собственно меня и увлекает, не просто сделать чтоб работало, а чтоб потом смотреть и радаваться! (поэтому и ассемблер, там я вижу ВСЁ!). ..за простые и тривиальные проектики тоже возьмусь, делаются они легко и быстро, но особенно хочется с изысками. Силён в ситуациях когда требуется максимальное быстродействие, и абсолютная безотказность по программной части. Очень хорошо понимаю аппаратное устройство МК(т.е. как он работает, а не только знание команд). Сейчас взялся за язык "Python", так-что в скором может и более разумное сопряжение с компом/мобилкой, чем просто отправка цифер в программу-терминал. ...Выкладывал свои проекты мало, но кое-что есть. https://radiokot.ru/circuit/digital/home/59/ |
|
| Автор: | ARV [ Пн авг 27, 2018 11:59:12 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
а нельзя ли как-то ознакомиться с чумовыми алгоритмами? ну, точнее, с проектами, где оные были реализованы? |
|
| Автор: | Faun [ Пн авг 27, 2018 12:06:16 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Все лежит на компе, в горах исходников (в основном недописанных) если-б цель, заработать денег была-б в приоритете, взялся-б портфолио собирать,. А так лень. По ссылочке один из них. т.с. подтверждение что это не сказки. |
|
| Автор: | ARV [ Пн авг 27, 2018 12:16:06 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
ну по ссылке, как бы, особой чумы не наблюдается... вот я и подумал, мож где-то в другом месте... |
|
| Автор: | Faun [ Пн авг 27, 2018 14:11:12 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Это снаружи он прост(такова была задумка), внутри доволе наворочен.. Но это далеко не самое чумовое, просто доделано и выложено.. Спойлер.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, чтобы по собственному движению понять направление). Магнитометр-же практически ни чего не потребляет.. и стороны света тебе покажет, и направление к своей точке, мгновенно!. .. Вобщем я раскурил магнитометр, ЖПС-модуль, написал программу.. Осталось все собрать, и тут как обычно пропал интерес, самое интересное и сложное уже сделано Последние пол года страдаю Устройством_Опережения_Зажигания. Простое магу за день написать, но мне-ж с изысками подавай!.. Вот это и есть моя слабая сторона, со временем понимаю, что меня захватывает именно ПРОЦЕСС!, а не конечный результат.. Вот это меня и склонило к мысли, что нужно обратиться к тем, у кого конкретная задача, РЕЗУЛЬТАТ!. Тут глядишь и копейка какая появится |
|
| Автор: | ARV [ Пн авг 27, 2018 14:32:41 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
если вам нужны проекты-головоломки, чтобы, как вы выразились, добиться чумового эффекта, могу предложить одну идею короче: добавьте в любой свой проект с индикатором на 7-сегментных светодиодах автоматическую регулировку яркости индикатора в зависимости от освещенности. только без любых дополнительных фоточувствительных компонентов: используйте тот факт, что светодиод является одновременно и фотодиодом, хоть и плохоньким. то есть заставьте один или несколько сегментов индикатора служить датчиком освещенности в моменты, когда эти сегменты не светятся. сумеете? |
|
| Автор: | korob [ Пн авг 27, 2018 15:09:05 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Простое магу за день написать, но мне-ж с изысками подавай!.. Вот это и есть моя слабая сторона, со временем понимаю, что меня захватывает именно ПРОЦЕСС!, а не конечный результат.. Вот это меня и склонило к мысли, что нужно обратиться к тем, у кого конкретная задача, РЕЗУЛЬТАТ!. Тут глядишь и копейка какая появится Есть у меня такая задача. ![]() Вознаграждение естественно гарантируется. |
|
| Автор: | Faun [ Пн авг 27, 2018 15:42:01 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
ARV Да, интересненькая идейка, мне такая в голову пака не приходила, как появится ей применение, вспомню ее и поразмыслю Кстати, из того-же разряда.. Например для таймера, я его как предельно простой позиционировал, и на схемке нарисовал один резистор для всего 7-сегментника(хоть и рекомендовал ставить как положено).. Короче можно было дописать прогу, чтобы слишком яркие(например "1") светились чуть меншее время, а например "8", подольше.. Это сгладило-бы эфект разной яркости. Правда косяк в том, что этот-же таймер как-бы очень неприхотлив к батарейкам, и когда они будут просаживаться, всеравно эфект начнет вылазить, но можно подобрать что-та средне.. Жаль что я об этом подумал уже когда марально поставил точку на проекте. ---------- Вспомнил свой проект, выключатель света для аквариума(растения там, им свет нужен), и он несколько лет без сбоев работал, пака аквариум не сплавил.. Там программа была не так уж сложнА, интересен алгоритм.. Всего одна кнопка, и светодиод. Логика работы такая, включаешь его в разетку в полночь. Ближе к вечеру(когда темнееет) нажимаеш кнопку, свет зажигается,.. и нажимаеш когда нужно выключить... МК считает ровно сутки, и повторяет этот цикл день за днем.. ...а если вдруг пропал свет, и время сбросилось, то смотриш на часы,.. например 17 часов.. Прижимаешь кнопку, и ждешь когда светодиод маргнет 17-ть раз.. Отпускаешь, и он настраивается как-будто 17:00, и он работает в нормальном режиме. А вот сейчас о том, в чем оказался интересный плюс этого выключателя!.. Чтобы знать что он правильно работает(настроен верно), светодиод маргает столько раз, сколько сейчас часов, потом пауза подольше. И это оказалось ароста суперско!.. Просыпаешься ночью, и думаешь, "а сколько-это мне еще спать, и на работу вставать?", смотришь на потолок(а в темноте маргание хорошо видно), и быстро вьезжаеш, 2, 4 или 5 часов сейчас.. Это оказалось реально клево и полезно! ---------- korob, пишите в личку |
|
| Автор: | ARV [ Пн авг 27, 2018 20:14:46 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Хм... Говорят, у дураков мысли сходятся... Ваш вариант с одним резисторов на разряд семисегментника был мною применен на несколько лет раньше, но с яркостью проблем не было, т.к. я использовал посегментную динамическую индикацию, а не поразрядную. Таймер по вашему принципу я тоже делал, и ещё раньше, чем посегментную индикацию. Ещё на AT89C2051... И, признаться, впервые с тех пор встречаю человека, которому интересен нестандартный подход к простым вещам. |
|
| Автор: | Faun [ Пн авг 27, 2018 21:47:00 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Такие люди перевелись с "потребительством", (думать не нада, просто найди что тебе наужно). Прогресс дает все решения, и цена вопроса пара копеек. Я наверное был-бы "интрошечником", родись покаление раньше... Наверное вы видели визуально-потрясающие ролики, созданные из 256 килобайт кода?. Сейчас это не удивит ни кого, т.к. килобайты уже не имеют значения... Возьми микруху в 20! раз мощнее (а по цене в полтора дороже), и эти фокусы просто пшик Вот и ишу свое место в жизни, когда задачу нужно решать методом баллистика, каждый такт, решение! ..Но после таких задач, тривиальные решаются на раз! |
|
| Автор: | ARV [ Пн авг 27, 2018 22:25:38 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Я видел потрясающие "ролики" всего в 64 килобайта |
|
| Автор: | Faun [ Вт авг 28, 2018 14:01:24 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Раньше проводились конкурсы, и были различные номинации, для разных килобайт и под разное железо. На сайтах лежали десятки и сотни таких творений в каждой папке..(правда большинство не запускаются, или убоги(на фоне прочих), но победители в отдельных папках, хватало и без них). Жаль что это вымерло,.. отношение к программированию как к искусству, стремление к совершенству. Вот, сходу нашел один из них 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 Заодно проверите как комп тянет "Хэло ворд" обычно весит больше |
|
| Автор: | Reflector [ Вт авг 28, 2018 15:35:49 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Раньше проводились конкурсы, и были различные номинации, для разных килобайт и под разное железо. На сайтах лежали десятки и сотни таких творений в каждой папке..(правда большинство не запускаются, или убоги(на фоне прочих), но победители в отдельных папках, хватало и без них). Жаль что это вымерло,.. отношение к программированию как к искусству, стремление к совершенству. Ничего никуда не делось, только на одной "Revision 2017" demoparty было 93 демки, для разных платформ, от 4К. |
|
| Автор: | ARV [ Вт авг 28, 2018 15:54:46 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Ага... Было. Только в 2017 году в демке на 4к на самом деле задействован графический движок из системы, а в нем весу несколько десятков мегабайт, если не больше. Нечестное сравнение. |
|
| Автор: | Reflector [ Вт авг 28, 2018 17:42:04 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Ага... Было. Только в 2017 году в демке на 4к на самом деле задействован графический движок из системы, а в нем весу несколько десятков мегабайт, если не больше. Нечестное сравнение. С таким подходом только на тиньках и остается писать, потому что вполне возможно даже для создания пустого окна уже потребуется загрузить dll-ок на мегабайты |
|
| Автор: | ARV [ Вт авг 28, 2018 19:55:15 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Именно так. Демки изначально затачивались под DOS, где о графике и графическом драйвере даже думать никто не мог. И тем интереснее было видеть, как из каждого байта выжимается максимум, например, как текстуры одновременно были и мелодиями и скриптами движения. А сейчас уже совсем не то. Скоро демкой будут звать питоновскую строчку, запускающую плейер... |
|
| Автор: | pvit [ Вт авг 28, 2018 22:06:09 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Все лежит на компе, в горах исходников (в основном недописанных) если-б цель, заработать денег была-б в приоритете, взялся-б портфолио собирать,. А так лень. По ссылочке один из них. т.с. подтверждение что это не сказки. Выкладывайте на гитхабе. Это снимает кучу вопросов, и дает бонусные ачивки к квалификации У меня пока не дошли руки до этой задачи https://radiokot.ru/forum/viewtopic.php?f=53&t=155360. Был бы рад если бы кто-нибудь присоединился. Правда не AVR и не ассемблер, но будет не стыдно тыкать пальцем, указывая в достижениях. |
|
| Автор: | Faun [ Ср авг 29, 2018 12:23:52 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
pvit писал(а): У меня пока не дошли руки до этой задачи https://radiokot.ru/forum/viewtopic.php?f=53&t=155360. Был бы рад если бы кто-нибудь присоединился. Почитал, очень непонятно пишите(возможно для того, кого вы ищите все понятно).. ...Так-что просто поделюсь своим опытом размышлений на эту тему... Последний мой проект. был круто-нафаршированный Устройство_Опережения_Зажигания(УОЗ). Хотелось добавить туда ВСЁ, на все случаи жизни... Например у любого зажигания по разному расположены датчики, (ориентируясь на которые УОЗ определяет время искры, могут быть доролниетельные устройства, датчики разряжения на входе в карбюратор, положения заслонки,.. датчики температуры и может что-та еще.. Сперва писал программу так, что это ВСЁ сразу было включено, но выставляя переменную, которая определяте, какие функции программа будет использовать, а какие нет.. В результате получился жуткий фарш (НО и ЕСЛИ).. ..Тогда решил писать программу в другом стиле.. Все наверное помнят приставки Дэнди и пр. к ним продавались картриджи, и на некоторых было по ТЫСЯЧЕ игр.. По детской наивности казалось что это МЕГА-картридж, но на поверку оказывалось, что все игры внутри, это просто разные вариации нескольких разных. Короче програмисты писали функции из которых по сути на 98% состаит игра, а потом писали в основной функции ссылались на дополнительные. Получается, чтобы написать другую игру, нужен час, и пара десятков килобайт, и можно проделать такой трюк, как "1000 игр!" В общем я думаю сл. версию УОЗ делать по такому принципу, некая переменная будет определять, на какой код перепрыгнет при включении программа, В каждой из них будет ВСЁ ТОЛЬКО ОСНОВНОЕ!.. а функции можно просто сложить в общую стопкоу. Впрочем ни чего нового, так все и должно быть. ... Это такая большая присказка, а сказка,.. Раз уж оно такое универсальное, значит управлять этим "много(безо)/бразием" нужно как-то удобнее. Решил что лучше всего это будет мобилка, т.к. в ней есть все безпроводные интерфейсы, мне по душе именно блютуз.. Начал ковырять, с помощью чего можно легко сделать прогу для мобилки. Оказалось что "Pithon" самое оно!. Во первых он задуман как максимально простой(не сравнить с Си), и является интерпретируемым(т.е. не код на выходе формируется, а блок используемых в программе функций, а сама программ преобразуется в просто более компактный набор байт, который просто дублирует текстовый вариант). Фишка оказалась в том, что из-за растущей популярности, и заложенной "крос-платформенности", сейчас наделали стООлька библиотек, модулей и инструментов облегчения создания программ. что пиши под что хочеш!, даже что хочеш(вплоть трёх-дэшных игр). ..от программирования мне нужно по сути не много, сделать окошко(есть модуль, в котором просто мышкой рисуеш окно какое тебе нравится), выводить графики(есть библиотеки, бери и пользуй, учить ничего не нада).. Вводить в поля свои цифры(в первом уроке о переменных, просто пишеш input, и переменной присваивается значение), и кое-какие манипуляции, +-/*... Сохранить в файл, было в 4-ом уроке, команда "оpen" присваивает переменной содержимое файла, (и в ковычках, "w(т.е. открыть как сохраняемый)"), чтобы при закрытии файла содержимое переменной сохранилось в файл,.. ну не красота-ли?! .....Мне еще предстоит найти библиотеку, которая открывает блютуз... Но теперь я ТОЧНО знаю, что там все будет примерно так-же "открыть, включить, отправить.." Я когда-то пытался раскурить макросы в терминале, чтобы сделать простейшую обработку полученых от МК цифр.. Наверное освоить питона, и написать свой терминал не многим сложнее, А приятный бонус, потом можно создавать все что угодно, под любые платформы, и все заточено чтобы любой чайник мог сразу всё!. Так-что рекомендую не проходить мимо, если хотите расширить возможности своих творений на МК. Конечно-же С++ много круче, но осваивать его для простеньких прог для связи с компом, серавно что покупать промышленный пневмо-молоток, когда нужно просто забить гвоздь. |
|
| Автор: | linuxdude [ Ср авг 29, 2018 12:57:25 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
Конечно-же С++ много круче, но осваивать его для простеньких прог для связи с компом, серавно что покупать промышленный пневмо-молоток, когда нужно просто забить гвоздь. За это мне и нравится си - можно и прошивку микроконтроллера писать, и программу для компа (по крайней мере, консольные - на раз). Что-нибудь чисто-алгоритмическое при правильном подходе даже можно отладить на компе собирая под x86 а потом перенести на процессор. Я правда с STM32 развлекаюсь и под Linux. |
|
| Автор: | Faun [ Ср авг 29, 2018 13:20:42 ] |
| Заголовок сообщения: | Re: Возьмусь за любой проектик на МК, мое хобби. |
И для SMT питоны есть. ..поговаривают что и для AVR-ок. Нужно взвешивать свои потребности, и возможности.. Как-бы не скатилось в извечный спор, какоя язык самый лучший |
|
| Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|



