реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> не запускается С-шная программа
Azat
сообщение Apr 30 2008, 14:31
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 18-04-08
Пользователь №: 36 883



Hex файл который скомпилирован на ассемблере без проблем шьет микро-лер, а hex файл скомпилированный на С не хочет. При попытке стартовать пишет:
the contents of the HEX file does not fit in the selected device

Может в коде надо какой нибудь файл сделать include ?
Go to the top of the page
 
+Quote Post
tazik
сообщение Apr 30 2008, 14:40
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



Цитата(Azat @ Apr 30 2008, 22:31) *
Hex файл который скомпилирован на ассемблере без проблем шьет микро-лер, а hex файл скомпилированный на С не хочет. При попытке стартовать пишет:
the contents of the HEX file does not fit in the selected device

Может в коде надо какой нибудь файл сделать include ?


В опциях компилятора или в make-файле необходимо задать соответствующий тип контроллера.
У Вас какой компилятор?
Go to the top of the page
 
+Quote Post
Azat
сообщение Apr 30 2008, 14:45
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 18-04-08
Пользователь №: 36 883



Цитата(tazik @ Apr 30 2008, 18:40) *
В опциях компилятора или в make-файле необходимо задать соответствующий тип контроллера.
У Вас какой компилятор?


Компилятор WinAvr. А МК ATmega8515. А как задать эти опции не подскажите?!
Go to the top of the page
 
+Quote Post
tazik
сообщение Apr 30 2008, 14:59
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



Цитата(Azat @ Apr 30 2008, 22:45) *
Компилятор WinAvr. А МК ATmega8515. А как задать эти опции не подскажите?!


Утилита MFile меню Makefile->MCU type
Или ручками в самом make-файле - секция # MCU name

Прошу прощения, возможно, немного Вам наврал и программа просто "не влазит" в МК.
Но сначала, желательно, убедиться, что тип соответствует

Поправьте, если что не так...

А что за попытка "стартовать"? Что именно стартует?

Сообщение отредактировал tazik - Apr 30 2008, 15:13
Go to the top of the page
 
+Quote Post
Azat
сообщение Apr 30 2008, 15:55
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 18-04-08
Пользователь №: 36 883



Все исправил. Спасибо!:) Теперь возникла другая проблема, программа которую я написал не работает. Не работает даже банальная программа - перемигивание светодиодов. А шить надо во флеш или в eeprom? В eeprom шью ноль эмоций (два светодиода постоянно горят). Во флеш шью программа странно работает. В чем разница зашить во флеш и зашить в eeprom, можно ли одновременно в оба?
Go to the top of the page
 
+Quote Post
tazik
сообщение Apr 30 2008, 16:04
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



Цитата(Azat @ Apr 30 2008, 23:55) *
Все исправил. Спасибо!:) Теперь возникла другая проблема, программа которую я написал не работает. Не работает даже банальная программа - перемигивание светодиодов. А шить надо во флеш или в eeprom? В eeprom шью ноль эмоций (два светодиода постоянно горят). Во флеш шью программа странно работает. В чем разница зашить во флеш и зашить в eeprom, можно ли одновременно в оба?


Пожалуйста smile.gif

Flash - память программ. Т.е. шить нужно в нее
Eeprom - энергонезависимая память для пользовательских данных (для каких-нибудь Ваших калибровочных констант, переменных счетчиков и т.п.)
SRAM - энергозависимая память для пользовательских данных.

сразу в оба не надо ))

Приведите текст программы, плиз

Сообщение отредактировал tazik - Apr 30 2008, 16:05
Go to the top of the page
 
+Quote Post
Azat
сообщение Apr 30 2008, 16:20
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 18-04-08
Пользователь №: 36 883



Пробовал только во флеш, все равно не работает...
Ну вот например такая программка:

#include <avr/io.h>
#include <avr/delay.h>

int main(void)
{
DDRB = 0;
DDRD = 0xFF;
int i;
i = 0x1;
PORTD = i;
while(1)
{
i = i*2;
if (i>255) i=0x1;
PORTD = i;
_delay_loop_2(1000);
}
}

или из книжки к STK500:

;программка должна при нажатии на кнопку высветить соответствующий светодиод
.include "m16def.inc"
.def Temp =r16 ; Регистр хранения временных данных
.def Delay =r17 ; Переменная 1 для генерации задержки
.def Delay2 =r18 ; Переменная 2 для генерации задержки
;***** Инициализация
RESET:
ser temp
out DDRB, temp ; Настройка порта В (PORTB) на вывод
;**** Тестирование ввода/вывода
LOOP:
out PORTB,temp ; Обновление состояния светодиодов
sbis PIND,0x00 ; Если PortD.0 = 0,
inc temp ; то уменьшение на 1 двоичного кода, формируемого свечением светодиодов
sbis PIND,0x01 ; Если PortD.1 = 0,
dec Temp ; то увеличение на 1 двоичного кода, формируемого свечением светодиодов
sbis PIND,0x02 ; Если PortD.2 = 0,
ror Temp ; то циклический сдвиг состояния светодиодов на 1 вправо
sbis PIND,0x03 ; Если PortD.3 = 0,
rol Temp ; то циклический сдвиг состояния светодиодов на 1 влево
sbis PIND,0x04 ; Если PortD.4 = 0,
com Temp ; то инверсия состояния всех светодиодов
sbis PIND,0x05 ; Если PortD.5 = 0,
neg Temp ; то инверсия состояния и прибавление 1
sbis PIND,0x06 ; Если PortD.6 = 0,
swap Temp ; то обмен тетрадами светодиодов
;**** Далее необходима задержка, чтобы сделать проделанные изменения видимыми
DLY:
dec Delay
brne DLY
dec Delay2
brne DLY
rjmp LOOP ; Повторение цикла заново
Go to the top of the page
 
+Quote Post
tazik
сообщение Apr 30 2008, 16:33
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



Код
#include <avr/io.h>  
#include <avr/delay.h>    

int main(void)  {  
DDRB = 0;  
DDRD = 0xFF;  
int i;  
i = 0x1;  
PORTD = i;  
while(1)  {  
   i = i*2;  
   if (i>255) i=0x1;  
   PORTD = i;  
   _delay_loop_2(1000);  
   }  
}


Ну так а какая именно программа работает "не так"? В чем именно заключается эта "нетаковость"?

Проверьте, соответствует ли частота работы МК, указанная в make-файле, реальному кварцу.

Бегущий огонь? Ничего не перепутал? Все светодиоды светятся?
Go to the top of the page
 
+Quote Post
Azat
сообщение Apr 30 2008, 16:50
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 18-04-08
Пользователь №: 36 883



Не работают обе программы! После включения платы постоянно горят два правых светодиода. И все! А что частоты должны обязательно совпадать? Какую частоту нужно ставить?

Вы правильно заметили это бегущий огонь.. должен был быть smile.gif
Go to the top of the page
 
+Quote Post
tazik
сообщение Apr 30 2008, 17:05
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



Цитата(Azat @ May 1 2008, 00:50) *
Не работают обе программы! После включения платы постоянно горят два правых светодиода. И все! А что частоты должны обязательно совпадать? Какую частоту нужно ставить?

Вы правильно заметили это бегущий огонь.. должен был быть smile.gif


Частота, для которой компилируется программа (указанная в makefile) должна соответствовать частоте кварца, установленного на Вашей плате. Т.к. она используется, например, при "расчете" компилятором необходимого времени задержки.

В общем, есть подозрение, что 1-ая программа-то у Вас работает. Только слишком быстро - и на глаз этого не видно.

По поводу второй программы. У Вас применяется контроллер mega16?

Сообщение отредактировал tazik - Apr 30 2008, 17:43
Go to the top of the page
 
+Quote Post
fpmoleg
сообщение Apr 30 2008, 17:51
Сообщение #11


Участник
*

Группа: Новичок
Сообщений: 33
Регистрация: 13-08-07
Пользователь №: 29 751



По умолчанию winAVR ставит частоту кварца 8 МГц (F_CPU = 8000000 - это в makefile-e).
Есть вариант что у тебя программа "виснет" - не инициализирован сторожевой таймер.

DDRB = 0;
DDRD = 0xFF;
int i;

Если пишешь на С то в начале инициализация переменных, а потом операции с ними.

Какой у тебя кварц стоит ?
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 30 2008, 21:39
Сообщение #12


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Проверьте FUSE, правильно ли они стоят?


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Azat
сообщение May 1 2008, 12:34
Сообщение #13


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 18-04-08
Пользователь №: 36 883



Цитата(fpmoleg @ Apr 30 2008, 21:51) *
По умолчанию winAVR ставит частоту кварца 8 МГц (F_CPU = 8000000 - это в makefile-e).
Есть вариант что у тебя программа "виснет" - не инициализирован сторожевой таймер.

DDRB = 0;
DDRD = 0xFF;
int i;

Если пишешь на С то в начале инициализация переменных, а потом операции с ними.

Какой у тебя кварц стоит ?


А как инициализировать сторожевой таймер? Я объявляю i а потом использую ее, что не так? Кварц вижу а частоту нет. Написано 737*8 звездочка это непонятный символ я не разобрал )

Цитата(mdmitry @ May 1 2008, 01:39) *
Проверьте FUSE, правильно ли они стоят?


Не подскажите как должно быть правильно
Go to the top of the page
 
+Quote Post
tazik
сообщение May 1 2008, 12:51
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



Цитата(Azat @ May 1 2008, 20:34) *
А как инициализировать сторожевой таймер? Я объявляю i а потом использую ее, что не так? Кварц вижу а частоту нет. Написано 737*8 звездочка это непонятный символ я не разобрал )
Не подскажите как должно быть правильно


Так а железо у Вас какое? STK500? Может быть не 737*8, а 32768?

Сообщение отредактировал tazik - May 1 2008, 12:57
Go to the top of the page
 
+Quote Post
Azat
сообщение May 2 2008, 16:37
Сообщение #15


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 18-04-08
Пользователь №: 36 883



Цитата(tazik @ May 1 2008, 16:51) *
Так а железо у Вас какое? STK500? Может быть не 737*8, а 32768?


Нет. Точно начинается с этих цифр. Но возможно то что я имел ввиду под кварцем вовсе не кварц. Просто других похожих нет
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 15:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01498 секунд с 7
ELECTRONIX ©2004-2016