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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Вымогатель припоя
Сообщения: 507
Зарегистрирован: Чт июн 16, 2011 15:06:10
Откуда: электрощитовая

Сообщение Vova777 »

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

тут мой программатор
Вложения
программа.txt
(2.29 КБ) 326 скачиваний
даешь высокое напряжение
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Стек проинициализировать? Не... не слышал. :dont_know: :facepalm:
Реклама
Вымогатель припоя
Сообщения: 507
Зарегистрирован: Чт июн 16, 2011 15:06:10
Откуда: электрощитовая

Сообщение Vova777 »

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

; ================
; Инициализация стека (в AVR Studio 5 инициализируется по умолчанию)
; ldi temp,Ramend ; определение
; out SPL, temp ; верхушки стека
; ================
даешь высокое напряжение
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

Vova777 писал(а):Вроде бы в пятой студии инициализируется автоматически по-умолчанию......
.......Я прошил микроконтроллер ATmega8L-8PU
во первых у ATmega8 есть не только SPL, но и SPН
во вторых - все что находится за символом ';' - комментарий
ну и в третьих - конечно скидка на то, что Вы новичок в программировании есть, однако прежде чем задавать вопросы на элементарные вещи - прочитайте книжку .....
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Сообщения: 507
Зарегистрирован: Чт июн 16, 2011 15:06:10
Откуда: электрощитовая

Сообщение Vova777 »

Не могли бы вы переделать мою программу так, как надо, чтобы я мог потом посмотреть и понять в чем дело. Прошу вас первый и последний раз что-то сделать за меня.
Я уже читаю книжку
даешь высокое напряжение
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение 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)
Реклама
Вымогатель припоя
Сообщения: 507
Зарегистрирован: Чт июн 16, 2011 15:06:10
Откуда: электрощитовая

Сообщение Vova777 »

у меня в программе нет слова Start
даешь высокое напряжение
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

у меня в программе нет слова Start
Аффтар, жжёшь ! Давай исчо ! :))) :))) :)))
Вымогатель припоя
Сообщения: 507
Зарегистрирован: Чт июн 16, 2011 15:06:10
Откуда: электрощитовая

Сообщение Vova777 »

Аlex писал(а):Аффтар, жжёшь ! Давай исчо ! :))) :))) :)))
ну если я только начал с этим работать, конечно мои вопросы могут показаться тупыми
даешь высокое напряжение
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

конечно мои вопросы могут показаться тупыми
А причём тут вопрос ? Вы даже не знаете что у Вас в программе находится. :)
Вымогатель припоя
Сообщения: 507
Зарегистрирован: Чт июн 16, 2011 15:06:10
Откуда: электрощитовая

Сообщение Vova777 »

Аlex писал(а):
конечно мои вопросы могут показаться тупыми
А причём тут вопрос ? Вы даже не знаете что у Вас в программе находится. :)
программа не моя, это пример
даешь высокое напряжение
Вымогатель припоя
Сообщения: 507
Зарегистрирован: Чт июн 16, 2011 15:06:10
Откуда: электрощитовая

Сообщение 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:
даешь высокое напряжение
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

Vova777 советую привыкать использовать макросы и именованные константы, иначе, когда программа перерастет за сотню строк, разобраться в ней будет непросто.....
Вымогатель припоя
Сообщения: 507
Зарегистрирован: Чт июн 16, 2011 15:06:10
Откуда: электрощитовая

Сообщение Vova777 »

ChipKiller писал(а):Vova777 советую привыкать использовать макросы и именованные константы, иначе, когда программа перерастет за сотню строк, разобраться в ней будет непросто.....
я думаю, что в книге, которую я читаю, будет информация по макросам, просто до нее я еще не дошел.
даешь высокое напряжение
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

лучшую информацию по макросам можно почерпнуть из справки по AVR Studio
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»