Перейти к содержанию
    

Помогите пожалуста никак не могу разобратся с прогой, она написана под 1200, мне надо ее под тини2313 переделать. вторую неделю ничего не получается.... посмотрите пожалуста. она вроде компилится, но когда прошиваешь мк и на плату устанавливаешь то нифига не работает, просто я совсем недавно начал этим заниматся.....или посоветуйте какую нить книгу где асемблеру уделяется большое внимание, потому что я прочитал Естифеева и еще какую то, но там основной уклон на архитектуру, поэтому я никак не могу разобратся со всеми тонкостями

dozator.txt

Изменено пользователем Terapefft

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос на эту тему поднимался неоднократно, но повторюсь в AT90S1200 аппаратный стек, а в ATTiny2313 нет, его надо при старте установить, используя следующие команды:

ldi tmp,low(RAMEND)

out SPL,tmp

Также надо проверить, что там твориться с прерываниями (не для всех прерываний At20s1200, совпадают вектора прерываний в ATTiny2313, плюс в ATTiny2313 их больше), хотя думаю можно сначала только выставить стек. Плюс посмотреть используется компаратор или нет (в ATTiny2313 по умолчанию он включен.) И напоследок самое интересное: правильно нужно выставить фуз биты в ATTiny2313 их очень много, у Евстигнеева они очень неплохо описаны. И напоследок почитайте документ AVR093 на сайте Atmel.

Изменено пользователем IgorKossak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Также надо проверить, что там твориться с прерываниями (не для всех прерываний At20s1200, совпадают вектора прерываний в ATTiny2313, плюс в ATTiny2313 их больше), хотя думаю можно сначала только выставить стек. Плюс посмотреть используется компаратор или нет (в ATTiny2313 по умолчанию он включен.) И напоследок самое интересное: правильно нужно выставить фуз биты в ATTiny2313 их очень много, у Евстигнеева они очень неплохо описаны. И напоследок почитайте документ AVR093 на сайте Atmel.

 

стэк уже выставлен давно и с фузами экспериментировал, прерывания вроде тож нормально, все равно на плате индикации либо ничего не высвечивается, либо частями

Изменено пользователем IgorKossak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Схему и код в студию тогда. По другому думаю проблему не ришить. Скорей всего Вы всеже гдето ошибаетесь.

Изменено пользователем IgorKossak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насчёт стека и вектора прерывания я ему неделю как подсказал. Это он исправил. Там ещё есть обращение к ЕЕПРОМ, и могут гнездиться грабли. Сейчас нет времени разбираться. А схему я у него в самом начале попросил. Не даёт. Партизан, блин. :) Начало истории - в ветке для чайников.

Изменено пользователем Alex_Pol

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а вот и схема платы индикации

Схема1.rar

Изменено пользователем IgorKossak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а вот и схема платы индикации

Данная схема не должна вызывать проблем с переносом, поэтому повторюсь Вы гдето ошибаетесь или у Вас неисправный чип. На всякий случай кладу руское описание на AT90S1200. Проверьте все регистры совподают по адресам с AtTiny2313

avr1200rdoc.rar

Изменено пользователем IgorKossak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а вот и схема платы индикации

 

Беглым взглядом по схеме, могу сказать: Невидно общей точки соединения цепи OV c общей шиной (точки соединения S1-S4, С1) ;) Есть она там или ее нет ?

Изменено пользователем IgorKossak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Беглым взглядом по схеме, могу сказать: Невидно общей точки соединения цепи OV c общей шиной (точки соединения S1-S4, С1) ;) Есть она там или ее нет ?

есть :)

Изменено пользователем IgorKossak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

редко встретишь ветку, где все сообщения отредактированы.

 

Программа - "ужос".

имена tmp1, tmp2, tmp3 не добавляют читабельности, также как и метки pm1, pm2, pm3, pm4, pme1 и т.л..

 

Позволю себе предположить, что программу писали не Вы. Может быть проще просто купить s1200 и зашить туда оригинал программы (при условии, что программа работала под s1200).

 

или посоветуйте какую нить книгу где асемблеру уделяется большое внимание, потому что я прочитал Естифеева и еще какую то, но там основной уклон на архитектуру, поэтому я никак не могу разобратся со всеми тонкостями

Весь ассемблер AVR помещается на двух листах - Instruction Set Summary. Спорные вопросы решаются с помощью документа AVR Instruction Set Reference. А вот программировать с помощью этого можно лишь только поняв архитектуру, о которой рассказывается в соответвующем даташите. Учитывая что Instruction Set Summary находится в даташите, то для программирования на ассемблере AVR необходимо и достаточно иметь в распоряжении только даташит на интересующий МК и help к ассемблеру (имеется AVR-Studio).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

редко встретишь ветку, где все сообщения отредактированы.

Надеюсь, хоть в этом случае научатся цитировать правильно, только то, на что отвечают, а не весь топик с самого начала со всеми вложенными цитатами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 terapefft попробуйте в это кусок:

EEWrite:

sbic EECR,EEWE ; if EEWE not clear

rjmp EEWrite ; wait more

out EEAR,zl ; output address

out EEDR,tmp3 ; output data

sbi EECR,EEMPE ; ВСТАВИТЬ ВОТ ЭТУ КОМАНДУ!!!

sbi EECR,EEWE ; set EEPROM Write strobe

inc zl

cpi zl,10

brne pme1

mov zl,tmp1

 

Это должно помочь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

sbi EECR,EEMPE ; ВСТАВИТЬ ВОТ ЭТУ КОМАНДУ!!!

sbi EECR,EEWE ; set EEPROM Write strobe

Это должно помочь.

и мои 5 копеек:

 

sbi EECR,EEMPE ; ВСТАВИТЬ ВОТ ЭТУ КОМАНДУ!!!

sbi EECR,EEPE ; set EEPROM Erase/Program strobe ; <-- поменять EEWE на EEPE

 

хоть сути это и не изменит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Alex_Pol попробовал так как вы сказали, все равно индикатор не загорается, только когда нажимаешь кнопки зажигаются отдельные сегменты. может там что нибудь надо в схеме переделать? я уже пробовал кварц подключать - никакого эфекта...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Alex_Pol попробовал так как вы сказали, все равно индикатор не загорается, только когда нажимаешь кнопки зажигаются отдельные сегменты. может там что нибудь надо в схеме переделать? я уже пробовал кварц подключать - никакого эфекта...

Загрузил Ваш код в AVR-Studio, но он отказался компилироваться. Для того чтобы программа скомпилировалась пришлость вставить следующий оператор: def T4H =r12. В отладчике после этого на первый взгляд программа заработала. Детально изучать код нехочиться (про стиль уже писали), но навсякий случай я бы еще вручную сделал бы так:

;вектора прерывания

S1: rjmp start

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp tim_0

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp ERR1

rjmp ERR1

 

 

start ldi tmp1,low(RAMEND) ; определение начала

out SPL,tmp1 ; стэка в ОЗУ

далее ВАШ код

Далее напишите простенький код по метки ERR1 который зажигал бы какой небудь светодиод. И Вам сразу станет ястно Выскакивает ли программа по какому небудь прерыванию не предусмотреную в Вашей программе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...