Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: tiny2313....непонятки
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Terapefft
подскажите пожалуста, у меня сложилась такая ситуация - прошил контролер, прога рабочая, все функционирует нормально. с помощью моей платы управления можна програмировать режимы работы для дозатора вязких продуктов. все вроде нормально програмируется и работает, но если нажать кнопку "прог" и подождать секунды 3-5 высвечивается какое то непонятное значение, никак не могу понять откуда оно берется. может кто с этим сталкивался уже???
VDG
Так задайте этот вопрос тому, кто написал эту программу.
Wild007
Цитата(Terapefft @ Oct 30 2006, 16:35) *
подскажите пожалуста, у меня сложилась такая ситуация - прошил контролер, прога рабочая, все функционирует нормально. с помощью моей платы управления можна програмировать режимы работы для дозатора вязких продуктов. все вроде нормально програмируется и работает, но если нажать кнопку "прог" и подождать секунды 3-5 высвечивается какое то непонятное значение, никак не могу понять откуда оно берется. может кто с этим сталкивался уже???


Судя по этому куску программы
pm31:
sbrc flag,1 ;
rjmp pm31 ; Возврат, если флаг времени не сброшен
cli
sbr flag,0b00000010 ; Вновь установить флаг времени

mov tmp1,key_o ; Проверка - нажата ли еще
sbrc tmp1,prog ; кнопка ПРОГ ?
rjmp pm1 ; Если нет, то выход.

subi TIML,1 ; Вычесть из счетчика
sbc TIMH,zero ;
sei
brcc pm31 ; Если не перенос, то возврат на ожидание

ser key_p ; Обработали нажатую кнопку
cli ;
ldi tmp1,0b10000001 ; индицировать ПРОГ и K(корректировка)
or r4,tmp1 ;

инициируется програмирование и корректировка, но разбирать чужую программу это неблагодарное дело.
Легче написать с нуля новую smile.gif
Terapefft
2 VDG
а вам не приходило в голову что если бы я нашел человека, который написал даное произведение, то наверно не задавал бы вопрос на форуме???
Wild007
2 Terapefft
А что, конкретно, появляется на индикаторе?
Terapefft
вобще когда включаешь питание на индикаторе загорается число "100", это так и должно быть, но когда жмешь кнопку "прог", по истечении некоторого промежутка времени загорается "08,00" или тоже самое с небольшими отклонениями, причем когда опять нажимаешь "прог" загорается "100", а потом опять "08,00"
Wild007
Цитата(Terapefft @ Nov 1 2006, 11:18) *
вобще когда включаешь питание на индикаторе загорается число "100", это так и должно быть, но когда жмешь кнопку "прог", по истечении некоторого промежутка времени загорается "08,00" или тоже самое с небольшими отклонениями, причем когда опять нажимаешь "прог" загорается "100", а потом опять "08,00"


Попробую разобраться, хотя это и не благодарное дело biggrin.gif копаться в чужих программах cheers.gif
Terapefft
буду очень признателен wink.gif))
Terapefft
кстати а на s1200 она работает нормально, ничего лишнего не высвечивается
Wild007
Цитата(Terapefft @ Nov 2 2006, 08:07) *
кстати а на s1200 она работает нормально, ничего лишнего не высвечивается

Этот риторический вопрос "Будет ли прошивкадля 1200 на 2313?" Вроде по выводам они одинаковые? Но у 1200 стек аппаратный, а у 2313 програмный. Кроме того , у них разное расположение векторов прерывания. Поэтомусложные программы для 1200 могут работать на 2313 с глюками. В тексте6 вашей програме встречается такое:
start:

ldi tmp1,low(RAMEND) ; определение начала
out SPL,tmp1 ; стэка в ОЗУ
cli
ldi tmp1,0b00000010 ;
out timsk,tmp1 ; ўЄ«озЁвм Timer/Counter0
ldi tmp1,0b00000010 ;
out tccr0,tmp1 ; tccr0=0b00000010=CK/8
ldi tmp1,125 ;
out tcnt0,tmp1 ;

ldi tmp1,0b00010001 ; ЏҐаўл¬ ᢥ⨬ ­г«Ґў®© ЎЁв
mov segon,tmp1 ;
как будто уже бала попытка пристроить программу от 1200 для 2313.
Terapefft
совершено верно, я ее переделывал под тини
Wild007
Выложите текст оригинальной программы под 1200. Сегодня закончу горящий проект и посморю. Два года назад перегонял свою программу с 1200 на 2313 и помню, что были проблемы.
Terapefft
щас провел эксперимент, прошил 1200 и поставил его, там тоже высвечивается это непонятное значение, только через гораздо больший промежуток времени. и еще когда на тини начинаешь изменять параметры, то индикация слишком быстро изменяется (значение слишком быстро изменяется)

вот исходник под 1200
Alex_Pol
Если "гораздо больший промежуток" - в 8 раз, скорее всего фузами не выставлен делитель на 8. Проверь. А что за хрень выводится - это второй вопрос. Может, это не баг, а фича? smile.gif
Terapefft
когда в режим програмирования входишь (жмешь "прог"), если не трогать кнопки некоторый промежуток времени, то высвечивается "08,00" или тоже самое с небольшим отклонением (при мне еще высвечивалось "08,53" ). причем у тини это происходит гораздо быстрее
Wild007
Первое, что бросилось в глаза -- это неправильное расположение настройки таймера на прерывания:
start:
ldi tmp1,low(RAMEND) ;
out SPL,tmp1 ;
cli
ldi tmp1,0b00000010 ;
out timsk,tmp1 ; включить Timer/Counter0
ldi tmp1,0b00000010 ;
out tccr0,tmp1 ; tccr0=0b00000010=CK/8
ldi tmp1,125 ;
out tcnt0,tmp1 ;
далее в програме идет, то разрешение, то запрет прерываний
clr r0 ;
clr r1 ;
clr r2 ;
clr r3 ;
clr r4 ;

ldi TIMH,0 ; Пауза
ldi TIML,50 ; на 0.5с для задержки
rcall pausa ; в ПП pausa есть SEI
cli ;
любая инициализация переферии и внутренних регистров должна проводиться без прерываний, а настраивать необходимые прерывания надо перед выходом в основной цикл. В данном случае перед меткой begin:
Второе: С помощью какого ассемблера проводилось ассемблирование? AVR Studio, при ассемблировании, ругается на оба файла.
Третье: Как заметил Alex_Pol установка фузов у тины сложнее чем для S1200 smile.gif . Если временные задержки просчитывались для определенного кварца (для S1200), то и фузы надо перешить правильно под конкретную частоту.

Програма написана "влет" без тщателной отладки, поэтому советую найти серьезного програмиста заплатить ему "немного" мани и избавиться от "гемороя" smile.gif .
Terapefft
Прога в AVR studio 4.12 нормально компилится. Кварц не используется, тактируется внутреним RC генератором. Я уже переделывал штуки 3 проги под тини, они работают нормально, а вот эта.... Недумаю что начальнику понравится вариант найти програмиста sad.gif.

Так контролер свои функции выполняет нормально, вот тока эта хрень вылазивает...
Wild007
Цитата(Terapefft @ Nov 3 2006, 12:05) *
Прога в AVR studio 4.12 нормально компилится. Кварц не используется, тактируется внутреним RC генератором. Я уже переделывал штуки 3 проги под тини, они работают нормально, а вот эта.... Недумаю что начальнику понравится вариант найти програмиста sad.gif.

Так контролер свои функции выполняет нормально, вот тока эта хрень вылазивает...


В ПП "pausa" применяется RJMP pausa1, а такой метки нет:
sbrc flag,1 ;
rjmp pausa1 ; Возврат, если флаг времени не сброшен
sbr flag,0b00000010 ; Вновь установить флаг времени
subi TIML,1 ; Вычесть из счетчика
А по поводу прошивки определенных экземпляров м/с видел и не такие глюки smile.gif
Alex_Pol
Опять та же морока - нет соответствие исходника прошитой программе. Не компилируется она. Студия ругается на неопределённую метку "pausa1".
"F:\Dozator\doz.asm(686): error: Undefined symbol: pausa1
F:\Dozator\doz.asm(690): error: Undefined symbol: pausa1
F:\Dozator\doz.asm(690): error: Relative branch out of reach"
И, как следствие, ясный пень:
"Assembly failed, 3 errors, 19 warnings"Не могли вы скомпилировать этот исходник. Никак. Колитесь, где настоящий исходник? smile.gif
Terapefft
Цитата(Alex_Pol @ Nov 4 2006, 16:56) *
Опять та же морока - нет соответствие исходника прошитой программе. Не компилируется она. Студия ругается на неопределённую метку "pausa1".
"F:\Dozator\doz.asm(686): error: Undefined symbol: pausa1
F:\Dozator\doz.asm(690): error: Undefined symbol: pausa1
F:\Dozator\doz.asm(690): error: Relative branch out of reach"
И, как следствие, ясный пень:
"Assembly failed, 3 errors, 19 warnings"Не могли вы скомпилировать этот исходник. Никак. Колитесь, где настоящий исходник? smile.gif

Насколько я понимаю так он ругается когда встречает в проге необъявленные константы, а pausa1 это же метка. И не знаю почему но у меня и этот исходник и который я под тини переделывал нормально компилится (AVR studio 4.12). Может hex выложить? (как это сделать? просто у меня пишет "Ошибка загрузки. У Вас нет прав для загрузки файла с таким расширением.")
Alex_Pol
Цитата
Может hex выложить? (как это сделать? просто у меня пишет "Ошибка загрузки. У Вас нет прав для загрузки файла с таким расширением.")
Матерь божья. Поменяй расширение hex на txt.
Terapefft
вот hex, который получается
Terapefft
все я все переделал, компилится нормально, хрень не выскакивает и вроде даже работает smile.gif)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.