Страница 1 из 1

Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 13:33:08
Vova777
Я прошил микроконтроллер ATmega8L-8PU программой (.hex), которая должна сделать, чтобы светодиоды моргали (программа в Proteus проходит нормально, там все мигает). Прошивается все без проблем, светодиоды горят так, как задано в программе (0b10011001), но они не мигают! Бегущая дорожка тоже не получается. Что у меня не так? Кварц 4 МГц и 2 конденсатора 22 пФ стоят. Фьюзы не трогал, стоят по-умолчанию. Программа в приложении, писал в AVR Studio 5, компилируется без ошибок, шил через PonyProg, все прошилось нормально (Write Succesful), но они не мигают.

тут мой программатор

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 13:38:07
Engineer_Keen
Стек проинициализировать? Не... не слышал. :dont_know: :facepalm:

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 13:41:12
Vova777
Engineer_Keen писал(а):Стек проинициализировать? Не... не слышал. :dont_know: :facepalm:
Вроде бы в пятой студии инициализируется автоматически по-умолчанию :dont_know:

; ================
; Инициализация стека (в AVR Studio 5 инициализируется по умолчанию)
; ldi temp,Ramend ; определение
; out SPL, temp ; верхушки стека
; ================

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 14:17:48
ChipKiller
Vova777 писал(а):Вроде бы в пятой студии инициализируется автоматически по-умолчанию......
.......Я прошил микроконтроллер ATmega8L-8PU
во первых у ATmega8 есть не только SPL, но и SPН
во вторых - все что находится за символом ';' - комментарий
ну и в третьих - конечно скидка на то, что Вы новичок в программировании есть, однако прежде чем задавать вопросы на элементарные вещи - прочитайте книжку .....

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 14:34:07
Vova777
Не могли бы вы переделать мою программу так, как надо, чтобы я мог потом посмотреть и понять в чем дело. Прошу вас первый и последний раз что-то сделать за меня.
Я уже читаю книжку

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 14:50:58
ChipKiller
2 Vova777 в принципе Engineer_Keen все уже Вам сказал - нет инициализации стека, поэтому после первого-же call программа "умирает"
теперь об исправлениях - добавьте в начало программы макрос

Код: Выделить всё

.macro  outi
	ldi	r16,@1
   .if(@0 > 0x3F)
   sts @0,r16
   .else
   out @0,r16
   .endif
.endm
а сразу после метки Start: напишите

Код: Выделить всё

outi SPL,low(RAMEND)	; init stack
outi SPH,high(RAMEND)

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 14:57:52
Vova777
у меня в программе нет слова Start

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 15:00:14
Аlex
у меня в программе нет слова Start
Аффтар, жжёшь ! Давай исчо ! :))) :))) :)))

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 15:01:23
Vova777
Аlex писал(а):Аффтар, жжёшь ! Давай исчо ! :))) :))) :)))
ну если я только начал с этим работать, конечно мои вопросы могут показаться тупыми

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 15:02:40
Аlex
конечно мои вопросы могут показаться тупыми
А причём тут вопрос ? Вы даже не знаете что у Вас в программе находится. :)

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 15:03:05
Vova777
Аlex писал(а):
конечно мои вопросы могут показаться тупыми
А причём тут вопрос ? Вы даже не знаете что у Вас в программе находится. :)
программа не моя, это пример

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 15:09:09
Vova777
ChipKiller писал(а):2 Vova777 в принципе Engineer_Keen все уже Вам сказал - нет инициализации стека, поэтому после первого-же call программа "умирает"
теперь об исправлениях - добавьте в начало программы макрос

Код: Выделить всё

.macro  outi
	ldi	r16,@1
   .if(@0 > 0x3F)
   sts @0,r16
   .else
   out @0,r16
   .endif
.endm
а сразу после метки Start: напишите

Код: Выделить всё

outi SPL,low(RAMEND)	; init stack
outi SPH,high(RAMEND)
Спасибо, все заработало! :idea: Обещаю больше не задавать тупых вопросов, простите :cry:

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 21:54:30
ChipKiller
Vova777 советую привыкать использовать макросы и именованные константы, иначе, когда программа перерастет за сотню строк, разобраться в ней будет непросто.....

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 21:59:34
Vova777
ChipKiller писал(а):Vova777 советую привыкать использовать макросы и именованные константы, иначе, когда программа перерастет за сотню строк, разобраться в ней будет непросто.....
я думаю, что в книге, которую я читаю, будет информация по макросам, просто до нее я еще не дошел.

Re: Проблема, по видимому, с прерываниями в программе.

Добавлено: Сб июн 09, 2012 22:06:32
ChipKiller
лучшую информацию по макросам можно почерпнуть из справки по AVR Studio