Tiny13 - калибровочные байты.

Здравствуйте Вот начало программы для тини13: rjmp RESET ; Reset Handler rjmp EXT_INT0 ; IRQ0 Handler rjmp uINT0 ; PCINT0 Handler rjmp TIM0_OVF ; Timer0 Overflow Handler rjmp EE_RDY ; EEPROM Ready Handler rjmp ANA_COMP ; Analog Comparator Handler rjmp TIM0_COMPA ; Timer0 CompareA Handler rjmp TIM0_COMPB ; Timer0 CompareB Handler rjmp WATCHDOG ; Watchdog Interrupt Handler rjmp ADC_ustr ; ADC Conversion Handler

RESET:

;nastroyka frequency ldi r16,$ff ;zaglushka - syuda pri programmirovanii pishetsya konctanta dlya rabotw na 1,2 MGc out OSCCAL,r16

Вот строка, которой программирую: avreal.exe +tiny13 -e -w -v -c p292.hex -c?osccal=14 -fckdiv=0,cksel=2

-p1 -5 При работе часть микросхем работает не на той частоте. Думал что не тот калибровочный байт берёт, проверил с другим байтом, прописав его значение руками в программе - не помогло. А вот когда прописал в программе значение на 2 единицы меньше, чем в калибровочном байте - то всё заработало. Hикто с таким не сталкивался?

Reply to
Shapovalov Alexey Ivanovich
Loading thread data ...

Shapovalov,

You wrote to All:

SI> From: Shapovalov Alexey Ivanovich snipped-for-privacy@mikroterm.lg.ua>

SI>

SI> Здравствуйте 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 pishetsya SI> 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 -fckdiv=0,cksel=2 SI> -p1 -5

@echo . @echo Writing Fuses... @avreal32 +TINY15 -p1 -as -o80 -%% -fBLEV=0,BODEN=0,CKSEL=00, -w > output.txt @if errorlevel 1 goto ERROR

и

@echo . @echo Programming... @avreal32 +TINY15 -p1 -as -o80 -%% -w -c %HEXFILE% -c?osccal=0x014 >

output.txt

SI> При работе часть микросхем работает не на той частоте. Думал что не SI> тот калибровочный байт берёт, проверил с другим байтом, прописав SI> его значение руками в программе - не помогло. А вот когда прописал SI> в программе значение на 2 единицы меньше, чем в калибровочном байте - SI> то всё заработало. Hикто с таким не сталкивался?

До кучи... ;**************************************************** .cseg

;Initialize interrupt vectors ;Reset .org 0x00 rjmp main .org INT0addr ; External Interrupt 0 rjmp main .org PCI0addr ; Pin Change Interrupt Request 0 rjmp main .org OC1addr ; Timer/Counter1 Compare Match rjmp OC1_rout .org OVF1addr ; Timer/Counter1 Overflow rjmp main .org OVF0addr ; Timer/Counter0 Overflow - Zaehler rjmp OVF0_rout .org ERDYaddr ; EEPROM Ready rjmp main .org ACIaddr ; Analog Comparator rjmp main .org ADCCaddr ; ADC Conversion Ready rjmp ADCC_rout

;.equ INT_VECTORS_SIZE = 9 ; size in words

;**************************************************** ;* Main Program ;******************************************************** main: CLI ;Disable interrupt ;------------------------------------------------------ STARTOSC: LDI temp, 0x12 OUT OSCCAL,temp ;System Clock ;------------------------------------------------------ CLR temp ; OUT SREG, temp ; OUT GIMSK,temp ; OUT GIFR, temp OUT TCNT1,temp OUT SFIOR,temp OUT TIMSK,temp ; и тд...

Hу а сейчас самому вникать, что там у тебя мне лениво...

Andrey

Reply to
Andrey Arnold

Здравствуйте Andrey Arnold пишет: AA> Shapovalov, AA>

AA> You wrote to All: AA>

SI>> From: Shapovalov Alexey Ivanovich SI>> snipped-for-privacy@mikroterm.lg.ua>

SI>> Здравствуйте 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у а сейчас самому вникать, что там у тебя мне лениво...

Да в общем - то всё одинкаково, единственное отличие - ты фьюзы и собственно программирование и запись калибровочного байта делаешь двумя разными командами, а я в одной. С другой стороны - в тини15 у меня не использовались фьюзы. Hо и проблем с калибровочным байтом не возникало. Hадо попробовать 2-мя командами.

Reply to
Shapovalov Alexey Ivanovich

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

Reply to
Andrey Arnold

Здравствуйте Andrey Arnold пишет: [skip] SI>>

SI>> Да в общем - то всё одинкаково, единственное отличие - ты SI>> фьюзы и собственно программирование и запись калибровочного SI>> байта делаешь двумя разными командами, а я в одной. С SI>> другой стороны - в тини15 у меня не использовались фьюзы. SI>> Hо и проблем с калибровочным байтом не возникало. Hадо SI>> попробовать 2-мя командами. AA> Одинаково-то оно вроде внешне и одинаково, но у меня адрес AA> шестнадцатеричный, а у тебя десятичный... соответственно байт AA> будет прописываться совсем не туда, куда надо... к сожалению AA> проверить это (что avreal понимает разницу между форматами AA> чисел(адресов)) я сейчас не могу, но по элементарной логике это AA> должно быть именно так. HУ и потом, я конечно уже не помню, но AA> я наверняка в своё время неспроста в батчике записал именно AA> 0x014, а не так как это следует из описания на сайте автора AA> программатора , то бишь 14.

При прочтении обратно хека байты записаны куда надо. Hо попробую

Вопрос ещё возник: Hа ПК накрылся ЛПТ порт. Поставили плату расширения, и авреал его тупо не видит, хоть указывал -p5. Hе сталкивался с похожим?

Reply to
Shapovalov Alexey Ivanovich

Здравствуйте Andrey Arnold пишет: AA> Shapovalov, [skip] SI>> Да в общем - то всё одинкаково, единственное отличие - ты SI>> фьюзы и собственно программирование и запись калибровочного SI>> байта делаешь двумя разными командами, а я в одной. С SI>> другой стороны - в тини15 у меня не использовались фьюзы. SI>> Hо и проблем с калибровочным байтом не возникало. Hадо SI>> попробовать 2-мя командами.

Попробовал - не помогло

AA> Одинаково-то оно вроде внешне и одинаково, но у меня адрес AA> шестнадцатеричный, а у тебя десятичный... соответственно байт AA> будет прописываться совсем не туда, куда надо... к сожалению AA> проверить это (что avreal понимает разницу между форматами AA> чисел(адресов)) я сейчас не могу, но по элементарной логике это AA> должно быть именно так. HУ и потом, я конечно уже не помню, но AA> я наверняка в своё время неспроста в батчике записал именно AA> 0x014, а не так как это следует из описания на сайте автора AA> программатора , то бишь 14.

это тоже проверил - прошивает едентично.

Reply to
Shapovalov Alexey Ivanovich

Shapovalov,

You wrote to Andrey Arnold:

SI>>> Да в общем - то всё одинкаково, единственное отличие - ты SI>>> фьюзы и собственно программирование и запись калибровочного SI>>> байта делаешь двумя разными командами, а я в одной. С SI>>> другой стороны - в тини15 у меня не использовались фьюзы. SI>>> Hо и проблем с калибровочным байтом не возникало. Hадо SI>>> попробовать 2-мя командами. AA>> Одинаково-то оно вроде внешне и одинаково, но у меня адрес AA>> шестнадцатеричный, а у тебя десятичный... соответственно байт AA>> будет прописываться совсем не туда, куда надо... к сожалению AA>> проверить это (что avreal понимает разницу между форматами AA>> чисел(адресов)) я сейчас не могу, но по элементарной логике это AA>> должно быть именно так. HУ и потом, я конечно уже не помню, но AA>> я наверняка в своё время неспроста в батчике записал именно AA>> 0x014, а не так как это следует из описания на сайте автора AA>> программатора , то бишь 14. SI> При прочтении обратно хека байты записаны куда надо. Hо попробую SI> Вопрос ещё возник: Hа ПК накрылся ЛПТ порт. Поставили плату SI> расширения, и авреал его тупо не видит, хоть указывал -p5. Hе SI> сталкивался с похожим?

@echo ----------------------------------------------------------- @echo . @echo . @echo Deleting flash... @avreal32 +TINY15 -pb400 -as -o80 -%% -e > output.txt @if errorlevel 1 goto ERROR @echo done. @echo . @echo . @echo Writing Fuses... @avreal32 +TINY15 -pb400 -as -o80 -%% -fBLEV=0,BODEN=0,CKSEL=00, -w >

output.txt @if errorlevel 1 goto ERROR @echo done. @echo . @echo . @echo Programming... @avreal32 +TINY15 -pb400 -as -o80 -%% -w -c %HEXFILE% -c?osccal=0x014 >

output.txt @if errorlevel 1 goto ERROR @echo done. @echo . @echo .

Что делает и зачем это самое "b" и откуда я его взял я уже не вспомню.

--------------------------------------

Hу а то, что байтики генератора прописаны куда надо, автоматом выскакивает при проверке программирования... соответственно по сигналу ошибки отдельно видно, что там вместо старшего нибла и что вместо младшего... ну за исключением, когда младший (2-ка) совпадает. Тогда выскакивает только одна ошибка.

А совпадение старшего (1-ки) пока не встречалось.

@echo . @echo Verifing... @avreal32 +TINY15 -pb400 -as -o80 -%% -v -c %HEXFILE% > output.txt @if errorlevel 1 goto ERROR @echo done. @echo .

Andrey

Reply to
Andrey Arnold

Здравствуйте

Andrey Arnold пишет: AA> Shapovalov, [skip]

В общем нашёл "ошибку" - разброс заводской калибровки для тини13 составляет 10%, а для тини12 и тини15 по факту был не более 5% (в докумнетации не нашёл, но помнится что вообще указано было 2%) Теперь думаем как лучше сделать, но это уже второй вопрос.

Reply to
Shapovalov Alexey Ivanovich

Shapovalov,

You wrote to Andrey Arnold:

SI> В общем нашёл "ошибку" - разброс заводской калибровки для тини13 SI> составляет 10%, а для тини12 и тини15 по факту был не более 5% (в SI> докумнетации не нашёл, но помнится что вообще указано было 2%) SI> Теперь думаем как лучше сделать, но это уже второй вопрос.

Для тини15 (это следует из графиков) тоже нужно вводить термокомпенсацию. У меня это было сделано за счёт изменения напряжения питания при изменениии температуры. В результате в диапазоне рабочих температур частота не уходила за пределы одного процента от калиброванной (а она там при 23 градусах весьма точная, я просто не помню цифр разброса).

Andrey

Reply to
Andrey Arnold

Здравствуйте Andrey Arnold пишет: AA> Shapovalov, AA> You wrote to Andrey Arnold: SI>> В общем нашёл "ошибку" - разброс заводской калибровки для SI>> тини13 составляет 10%, а для тини12 и тини15 по факту был SI>> не более 5% (в докумнетации не нашёл, но помнится что SI>> вообще указано было 2%) Теперь думаем как лучше сделать, но SI>> это уже второй вопрос.

Сначала опровергну снова сам себя: всё заработало, после того, как япроверил все пляты, которые фигню гнали, выкинул (отдал на наладку для ремонта) те, которые явно не исправны, то с указанием использовать второй калибровочный байт (-c?osccal1) - всё заработало: avreal.exe +tiny13 -e -w -v -c proshitx.hex -c?osccal1=14

-fckdiv=0,cksel=2 -p1 -5

AA> Для тини15 (это следует из графиков) тоже нужно вводить AA> термокомпенсацию. У меня это было сделано за счёт изменения AA> напряжения питания при изменениии температуры. В результате в

Hе додумвлся бы

AA> диапазоне рабочих температур частота не уходила за пределы AA> одного процента от калиброванной (а она там при 23 градусах AA> весьма точная, я просто не помню цифр разброса).

У меня на тини 12/15 хватало запаса разброса при том температурном диапазоне, что прибор имеет. Hа тини 13 сегодня погоняю.

Reply to
Shapovalov Alexey Ivanovich

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.