Shapovalov,
You wrote to Andrey Arnold:
SI>>> Вот начало программы для тини13: SI>>> rjmp RESET ; Reset Handler SI>>> rjmp EXT_INT0 ; IRQ0 Handler SI>>> rjmp uINT0 ; PCINT0 Handler SI>>> rjmp TIM0_OVF ; Timer0 Overflow Handler SI>>> rjmp EE_RDY ; EEPROM Ready Handler SI>>> rjmp ANA_COMP ; Analog Comparator Handler SI>>> rjmp TIM0_COMPA ; Timer0 CompareA Handler SI>>> rjmp TIM0_COMPB ; Timer0 CompareB Handler SI>>> rjmp WATCHDOG ; Watchdog Interrupt Handler SI>>> rjmp ADC_ustr ; ADC Conversion Handler SI>>>
SI>>> RESET: SI>>>
SI>>> ;nastroyka frequency SI>>> ldi r16,$ff ;zaglushka - syuda pri programmirovanii SI>>> pishetsya konctanta dlya rabotw na 1,2 MGc SI>>> out OSCCAL,r16 SI>>>
SI>>> Вот строка, которой программирую: SI>>> avreal.exe +tiny13 -e -w -v -c p292.hex -c?osccal=14 SI>>> -fckdiv=0,cksel=2 -p1 -5 AA>>
AA>> @echo . AA>> @echo Writing Fuses... AA>> @avreal32 +TINY15 -p1 -as -o80 -%% -fBLEV=0,BODEN=0,CKSEL=00, AA>> -w > output.txt @if errorlevel 1 goto ERROR AA>>
AA>> и AA>>
AA>> @echo . AA>> @echo Programming... AA>> @avreal32 +TINY15 -p1 -as -o80 -%% -w -c %HEXFILE% AA>> -c?osccal=0x014 > output.txt AA>>
SI>>> При работе часть микросхем работает не на той частоте. SI>>> Думал что не тот калибровочный байт берёт, проверил с SI>>> другим байтом, прописав его значение руками в программе - SI>>> не помогло. А вот когда прописал в программе значение на 2 SI>>> единицы меньше, чем в калибровочном байте - то всё SI>>> заработало. Hикто с таким не сталкивался? AA>>
AA>> До кучи... AA>> ??;**************************************************** AA>> ..cseg AA>>
AA>> ??;Initialize interrupt vectors AA>> ??;Reset AA>> ..org 0x00 AA>> rjmp main AA>> ..org INT0addr ; External Interrupt 0 AA>> rjmp main AA>> ..org PCI0addr ; Pin Change Interrupt Request 0 AA>> rjmp main AA>> ..org OC1addr ; Timer/Counter1 Compare Match AA>> rjmp OC1_rout AA>> ..org OVF1addr ; Timer/Counter1 Overflow AA>> rjmp main AA>> ..org OVF0addr ; Timer/Counter0 Overflow - Zaehler AA>> rjmp OVF0_rout AA>> ..org ERDYaddr ; EEPROM Ready AA>> rjmp main AA>> ..org ACIaddr ; Analog Comparator AA>> rjmp main AA>> ..org ADCCaddr ; ADC Conversion Ready AA>> rjmp ADCC_rout AA>>
AA>> ??;.equ INT_VECTORS_SIZE = 9 ; size in words AA>>
AA>> ??;**************************************************** AA>> ??;* Main Program AA>> ??;******************************************************** AA>> main: AA>> CLI ;Disable interrupt AA>> ??;------------------------------------------------------ AA>> STARTOSC: AA>> LDI temp, 0x12 AA>> OUT OSCCAL,temp ;System Clock AA>> ??;------------------------------------------------------ AA>> CLR temp ; AA>> OUT SREG, temp ; AA>> OUT GIMSK,temp ; AA>> OUT GIFR, temp AA>> OUT TCNT1,temp AA>> OUT SFIOR,temp AA>> OUT TIMSK,temp ; AA>> и тд... AA>>
AA>> Hу а сейчас самому вникать, что там у тебя мне лениво... SI>
SI> Да в общем - то всё одинкаково, единственное отличие - ты фьюзы и SI> собственно программирование и запись калибровочного байта делаешь SI> двумя разными командами, а я в одной. С другой стороны - в тини15 у SI> меня не использовались фьюзы. Hо и проблем с калибровочным байтом не SI> возникало. Hадо попробовать 2-мя командами.
Одинаково-то оно вроде внешне и одинаково, но у меня адрес шестнадцатеричный, а у тебя десятичный... соответственно байт будет прописываться совсем не туда, куда надо... к сожалению проверить это (что avreal понимает разницу между форматами чисел(адресов)) я сейчас не могу, но по элементарной логике это должно быть именно так.
HУ и потом, я конечно уже не помню, но я наверняка в своё время неспроста в батчике записал именно 0x014, а не так как это следует из описания на сайте автора программатора , то бишь 14.
Andrey