Форум myROBOT.ru » Шаг за шагом » С чего начать? » Прошу помощи в создании hex-файла

Страниц (6): [1] 2 3 4 5 6 »
 

1. ilnur888 - 30 Октября, 2010 - 22:58:04 - перейти к сообщению
Всем привет!
Пожалуйста помогите!
Не получается создать hex-файл для робота, при компиляции WinAVR выходят ошибки. Если надо, могу скопировать на форум...
Все собирал по схеме: http://myrobot.ru/downloads/pdf/...obot_scheme2.pdf
Так вот, нужен hex-файл, пожалуйста, помогите сделать!
Если что:
1. МК MEGA8-16PI
2. кварцевый резонатор на 8 МГц (как видно на схеме)
я их прописывал в makefile, думаю мог я ошибиться там где указывают частоту для МК...

Заранее спасибо!

вот созданный мною hex-файл (нерабочий):
:1000000012C019C018C017C016C015C014C013C044
:1000100012C011C010C00FC00EC00DC00CC00BC06C
:100020000AC009C008C011241FBECFE5D4E0DEBF5E
:10003000CDBF02D011C0E4CF8FEF84BB11BA82BB19
:10004000819905C0A99AAA98AB9AAC98F9CFA998BA
:0C005000AA9AAB98AC9AF4CFF894FFCFBA
:00000001FF
2. nest - 30 Октября, 2010 - 23:50:13 - перейти к сообщению
ilnur888 пишет:
вот созданный мною hex-файл (нерабочий):
а с чего вы взяли, что он нерабочий?
3. cjA - 31 Октября, 2010 - 00:21:11 - перейти к сообщению
какой то он махонький, пустой main в hex выдает 14 строчек.
ilnur888 а что за ошибки? Пути к библиотекам не прописали? (Схема тут непричем, компилятор про нее ничего не знает.)
4. mihail - 31 Октября, 2010 - 02:27:25 - перейти к сообщению
ilnur888
HEX является результатом компиляции написанной Вами программы. Какова программа - таков и HEX. Правда, возможны проблемы вызванные оптимизацией программы компилятором, но здесь не этот случай.

Подозреваю, что Вы просто воспользовались написанной кем то программой и не вникали в ее суть. Если бы Вы попытались разобраться в логике работы программы, то легко нашли бы все ошибки. Вы очень невнимательны! Грустный

cjA пишет:
Схема тут непричем
Схема и программа взаимосвязаны. Рассматривать схему без программы и программу без схемы - непросто.
5. cjA - 31 Октября, 2010 - 02:46:34 - перейти к сообщению
mihail
когда она уже прошита в МК- не спорю. (или эмуляторах)
А ilnur888 пишет что WinAVR ошибки выдает. До схемы еще далеко.
6. ilnur888 - 31 Октября, 2010 - 08:30:52 - перейти к сообщению
nest пишет:
ilnur888 пишет:
вот созданный мною hex-файл (нерабочий):
а с чего вы взяли, что он нерабочий?


Nest, я зашивал его в МК, результата никакого. Понимаете, я подозреваю что я вставил и то что надо и то что не надо...
http://myrobot.ru/stepbystep/r_firstbot2.php
- пример №4
я скомпилировал весь текст с комментариями, и даже там где звездочки... потому и грешу на то, что сделал hex файл неправильный, отсюда и схемка не работает...
компиляция проходила без ошибок, а теперь постоянно жалуется на ошибку в makefile!
makefile-шаблон пробовал и с этого сайта скачивать и переделывать -- не помогло, ошибок стало больше...
Вот посмотрите пример №4, для него делал, ничего в программе не изменял.
7. ilnur888 - 31 Октября, 2010 - 08:52:03 - перейти к сообщению
cjA пишет:
какой то он махонький, пустой main в hex выдает 14 строчек.
ilnur888 а что за ошибки? Пути к библиотекам не прописали? (Схема тут непричем, компилятор про нее ничего не знает.)


cjA про пути к библиотекам ничего не слышал, я делал все так, как написано здесь:
http://myrobot.ru/stepbystep/mc_makefile.php
что за библиотеки???

Файл makefile и rob.c находятся в одной отдельной папке, пути к ним без пробелов и без русского языка, так что в этом все норм.

вот текст makefile:
http://ifolder.ru/20036013 ОН ПРИЛОЖЕН НИЖЕ И К СООБЩЕНИЮ
там в архиве папка с makefile и rob.c, посмотрите пожалуйста, может у вас получиться что-то сделать. Здесь выложить не могу, слишком оно длинное.

файл программы "rob.c":
CODE:

#include <avr/io.h>

int main(void) // начало основной программы
{

DDRC = 0xff; // все выводы порта C сконфигурировать как выходы
DDRD = 0x00; // все выводы порта D сконфигурировать как входы


PORTD = 0xff; // установить "1" на всех выводах порта D,
// включаем подтягивающие резисторы

while (1) { // Бесконечный цикл

// ПРОВЕРЯЕМ СИГНАЛ НИЗКОГО УРОНЯ ОТ ФОТОДАТЧИКА

if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D
{
// ---- включаем левый мотор, останавливаем правый -----

PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
PORTC |= _BV(PC3); // установить "1" на линии 3 порта C
PORTC &= ~_BV(PC4); // установить "1" на линии 4 порта C

// -----------------------------------------------------
}
else
{
// ---- останавливаем левый мотор, включаем правый -----

PORTC &= ~_BV(PC1); // установить "1" на линии 1 порта C
PORTC |= _BV(PC2); // установить "1" на линии 2 порта C
PORTC &= ~_BV(PC3); // установить "1" на линии 3 порта C
PORTC |= _BV(PC4); // установить "0" на линии 4 порта C

// -----------------------------------------------------
}


} // закрывающая скобка бесконечного цикла

} // закрывающая скобка основной программы


(Добавление)
mihail пишет:
ilnur888
HEX является результатом компиляции написанной Вами программы. Какова программа - таков и HEX. Правда, возможны проблемы вызванные оптимизацией программы компилятором, но здесь не этот случай.

Подозреваю, что Вы просто воспользовались написанной кем то программой и не вникали в ее суть. Если бы Вы попытались разобраться в логике работы программы, то легко нашли бы все ошибки. Вы очень невнимательны! Грустный

cjA пишет:
Схема тут непричем
Схема и программа взаимосвязаны. Рассматривать схему без программы и программу без схемы - непросто.


Да, я это понимаю, потому и хотел hex-то переделать, и вот здесь ошибкииии...
Воспользовался кем-то написанной? Ну да, я ж сначала уже написал откуда схема,
текст программы отсюда
http://myrobot.ru/stepbystep/r_firstbot2.php
- пример №4

Программа-то простая, вроде все понятно, ничего не изменял.
Насчет проблем с оптимизацией, это я тоже подозреваю, по схеме (см. выше) на схеме стоит кварц на 8МГц, а когда провожу через makefile, то прописал частооту такую: 1000000
вот, да еще и галочки узнал что надо ставить для того чтобы МК установить на частоту тактирования кварца. НО! В программе не используются никакие таймеры и др., отсюда МК всет равно должен по сути работать...

Если что не так поправьте, отругайте, отошлите, но хоть как-нибудь помогите пожалуйста

Заранее благодарен!
8. cjA - 31 Октября, 2010 - 10:18:27 - перейти к сообщению
Научите обходиться без makefile!
все время маке на него ругается, чуть одну букву поменяешь.
не смотрите что у меня перерыв в программинге был лет шесть, на маке я в обиде уже лет 15...

(со стандартным, без изменения, макеfile у меня скомпилировалось тоже без ошибок...)
9. ilnur888 - 31 Октября, 2010 - 10:24:09 - перейти к сообщению
cjA пишет:
Научите обходиться без makefile!
все время маке на него ругается, чуть одну букву поменяешь.
не смотрите что у меня перерыв в программинге был лет шесть, на маке я в обиде уже лет 15...

(со стандартным, без изменения, макеfile у меня скомпилировалось тоже без ошибок...)



А как это, без makefile???
10. cjA - 31 Октября, 2010 - 10:47:16 - перейти к сообщению
ручками
вначале предпроцессор
потом компилятор
потом линковщик
потом сборщик
потом транслятор
потом программатор
потом ...
Это все должен делать маке. но не делает, елки-палки!!!
(Добавление)
например тип и частоту я могу задать в программе, так?
11. ilnur888 - 31 Октября, 2010 - 10:53:40 - перейти к сообщению
cjA пишет:
ручками
вначале предпроцессор
потом компилятор
потом линковщик
потом сборщик
потом транслятор
потом программатор
потом ...
Это все должен делать маке. но не делает, елки-палки!!!
(Добавление)
например тип и частоту я могу задать в программе, так?


РУЧКАМИ???
cjA,
(Добавление)
Не я конечно может и тупой в этом деле, ручками!!! вот это объяснение!!!
(Добавление)
cjA пишет:

(Добавление)
например тип и частоту я могу задать в программе, так?


Ну так да, смотря в какой программе и где в ней задавать тип и частоту. Вот я и хотел бы чтобы кто-нибудь мне помог сделать hex-файл в какой-нить проге, НО! На сайте myROBOT там не указано какие галочки при прошивке отмечать, какую частоту выставлять - всего этого нет, а я в этом деле новичок
12. nest - 31 Октября, 2010 - 11:43:53 - перейти к сообщению
ilnur888 пишет:
nest пишет:
ilnur888 пишет:
вот созданный мною hex-файл (нерабочий):
а с чего вы взяли, что он нерабочий?

Nest, я зашивал его в МК, результата никакого.

А вот симулятор с вами категорически не согласен Смущение
Всё работает как положено.

Собарнную схему покажите.
Похоже вы что то где то не так соединили.
13. ilnur888 - 31 Октября, 2010 - 12:05:36 - перейти к сообщению
Сейчас попробую выложить фото
(Добавление)















(Добавление)
Вообще как, как только я его включаю 2 моторчика начинают сразу же вращаться, и ни на что не реагируют. L293D немного становиться тепленьким от работы, но не перегревается, а вот МК холодный как лед понимаю конечно что так работоспособность проверяется, но вот так.
(Добавление)
вид сверху:

(Добавление)
Вот, чтобы понятнее было:

14. mihail - 31 Октября, 2010 - 13:08:25 - перейти к сообщению
nest пишет:
Всё работает как положено.
Если работает, то это хорошо. Хотя, по моему, не должно Замешательство

ilnur888
В Makefile указывается частота на которой работает микроконтроллер. У Вас установлен 1 MHz. И это правильно. На эту частоту МК настроен производителем. Подключение кварцевого резонатора не приводит к немедленному изменению тактовой частоты МК. Частоту микроконтроллера изменяют с помощью Fuse Bits. Про них читайте в datasheet и в Wiki myROBOT. Не трогайте их пока.

Программа должна работать примерно так: когда фотосенсор освещен, моторы крутятся в одну сторону, а когда фотосенсор не освещен, то в другую. Проверьте. Если все так, то схема в порядке.

Фотосенсор у Вас не очень хороший (ИМХО). И он расположен слишком далеко от поверхности. Он должен быть в нескольких миллиметрах от линии. Может он еще и подключен наоборот.
15. ilnur888 - 31 Октября, 2010 - 13:19:59 - перейти к сообщению
mihail пишет:
nest пишет:
Всё работает как положено.
Если работает, то это хорошо. Хотя, по моему, не должно Замешательство

ilnur888
В Makefile указывается частота на которой работает микроконтроллер. У Вас установлен 1 MHz. И это правильно. На эту частоту МК настроен производителем. Подключение кварцевого резонатора не приводит к немедленному изменению тактовой частоты МК. Частоту микроконтроллера изменяют с помощью Fuse Bits. Про них читайте в datasheet и в Wiki myROBOT. Не трогайте их пока.

Программа должна работать примерно так: когда фотосенсор освещен, моторы крутятся в одну сторону, а когда фотосенсор не освещен, то в другую. Проверьте. Если все так, то схема в порядке.

Фотосенсор у Вас не очень хороший (ИМХО). И он расположен слишком далеко от поверхности. Он должен быть в нескольких миллиметрах от линии. Может он еще и подключен наоборот.


Фотосенсор инфракрасный и оба они настроены на работу с одинаковыми длинами волн.
Видите на 5-ой фотке ручку, а на конце дырка, в дырке зеленый светодиод? Так вот я с ним проверял работают они или нет. Если поставить машинку над черной поверхностью то светодиод потухнет, если же над белой - засветиться.
Я тоже думал в этом дело, но потом вот параллельно подкл светодиод и проверил - ик-диод и ик-фоторезистор работают.
(Добавление)
mihail пишет:
nest пишет:
Всё работает как положено.
Если работает, то это хорошо. Хотя, по моему, не должно Замешательство

ilnur888
Программа должна работать примерно так: когда фотосенсор освещен, моторы крутятся в одну сторону, а когда фотосенсор не освещен, то в другую. Проверьте. Если все так, то схема в порядке.

Фотосенсор у Вас не очень хороший (ИМХО). И он расположен слишком далеко от поверхности. Он должен быть в нескольких миллиметрах от линии. Может он еще и подключен наоборот.


Когда я его включаю, то моторы (оба и сразу) начинают вращаться в одну сторону, а должно быть: один вращается в одну сторону, а второй стоит и наоборот в зависимости от нахождния робота на белой или черной линии.
Нет, нет при подключении я соблюдал полярности, смотрел где эмиттер, где коллектор(кажись так зовут).

Вот и незнаю, что же делать, в чем дело?