BOB51 писал(а):Прицепи внешний МК
Вывод на символьный дисплей - столь медленный процесс, что его СПОКОЙНО можно сделать фоновым и не мешающим основному, либо вообще оставить в суперлупе...
BOB51 писал(а):Прицепи внешний МК
По мне, решается одним таймером Т1, у которого разрешены прерывания CAPT_T1 и OVER_T1.xkp писал(а):сначала надо мне научится считать время между импульсами, а уже потом думать в какой МК влезет программа.
... Может и придется вешать внешний МК. Но это решим потом. Хотелось бы значало все таки посчитать это время на макетке...
Можно.xkp писал(а): КРАМ, а можно поподробнее?
Это не важно. Полный цикл регенерации такого дисплея при статических изображениях типа вывода числовых величин достаточно проводить с частотой не выше 2...4 Гц.xkp писал(а): КРАМ, дисплей не символьный а графический.
Вопрос на засыпку: какой интервал между импульсами у частоты 1Гц?измерять нужно не частоту а время между импульсами.
А разрешение и точность будут разные...Alexeyslav писал(а):В наихудшем случае прибор будет измерять 1 секунду - какой смысл в более быстрых измерениях если он такой интервал терпит?
Код: Выделить всё
.INCLUDE "m8DEF.INC"
.def tmp=r16
.def tmp0=r17
.cseg
;INTERRUPT VECTORS
rjmp reset ; Reset Handler
reti; rjmp EXT_INT0 ; IRQ0 Handler
reti ; rjmp EXT_INT1 ; IRQ1 Handler
reti ;rjmp TIM2_COMP ; Timer2 Compare Handler
reti ;rjmp TIM2_OVF ; Timer2 Overflow Handler
rjmp TIM1_CAPT ;Timer1 Capture Handler
reti ;rjmp TIM1_COMPA ; Timer1 CompareA Handler
reti ;rjmp TIM1_COMPB ; Timer1 CompareB Handler
reti ;rjmp TIMPINC 4 191_OVF ;Timer1 Overflow Handler
reti; rjmp look ;tim0_ovf ; Timer0 Overflow Handler
reti ;rjmp SPI_STC ; SPI Transfer Complete Handler
reti ;rjmp USART_RXC ; USART RX Complete Handler
reti ;rjmp USART_UDRE ; UDR Empty Handler
reti ;rjmp USART_TXC ; USART TX Complete Handler
reti ;rjmp ADC_inc ; ADC Conversion Complete Handler
reti ;rjmp EE_RDY ; EEPROM Ready Handler
reti ;rjmp ANA_COMP ; Analog Comparator Handler
reti ;rjmp TWSI ; Two-wire Serial Interface Handler
reti ;rjmp SPM_RDY ; Store Program Memory Ready Handler
RESET:
ldi tmp,low(RAMEND)
out spl,tmp
ldi tmp,high(RAMEND)
out sph,tmp
ldi tmp,(1<<ticie1)
out timsk,tmp
ldi tmp,(0<<icnc1)|(1<<ices1)
out tccr1b,tmp
ldi tmp,0b00000000
out ddrb,tmp
ldi tmp,0b00000000
out portb,tmp
sei
main:
rjmp main
TIM1_CAPT:
push tmp ;сохраняем данные
push tmp0 ;которые можем потерять
in tmp,sreg ;tmp, tmp0,
push tmp ;sreg
pop tmp ;восстанавливаем ранее
out sreg,tmp ;сохранённые данные
pop tmp0 ;в обратном порядке
pop tmp ;sreg,tmp,tmp0
reti
.exit
Потому что это не обычный регистр из которого читается то, что туда было записано.Vicont писал(а):Но у мя ни как не укладывается в голове:
- Почему флаги прерываний очищаются записью лог.1 (!!!), а не лог. 0 ???![]()
- Ведь если программно установить флаг в лог 1, разве не должен быть автоматический переход к соответствующему вектору?
Спасибо. В даташитах таких подробностей не пишут.Kavka писал(а): Потому что это не обычный регистр из которого читается то, что туда было записано.
Запись обрабатывается специальным образом на чипе.
Разработчики так захотели
Читаете сначала ICR1L, потом ICR1H? Иначе результат непредсказуем.xkp писал(а):Но регистр ICR1 (ICR1H:ICR1L) остается пустым...