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

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

16. mihail - 31 Октября, 2010 - 15:17:56 - перейти к сообщению
ilnur888 пишет:
в чем дело?
В программе!!! Но, Вы упорно не хотите ее исправлять рёв в три ручья Надеюсь разберетесь в том, что и почему я изменил!

/****************************************************************
ПРИМЕР 4 :: ПРОСТЕЙШИЙ АЛГОРИТМ СЛЕДОВАНИЯ ПО ЛИНИИ :: MYROBOT.RU
*****************************************************************/

#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
// -------------------------------- ---------------------
}

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

} // закрывающая скобка основной программы
17. cjA - 31 Октября, 2010 - 16:27:29 - перейти к сообщению
Хе-хе Улыбка
А вы говорили hex плохой.
Вот абсалютно уверен что по алгоритму mihail все получится Улыбка (у вас там забавно напяно, но ... раз работает Улыбка )


Но просьба остается актуальной, хочется без макефайл, очень много текста.
18. nest - 31 Октября, 2010 - 18:20:19 - перейти к сообщению
mihail пишет:
Если работает, то это хорошо. Хотя, по моему, не должно

А что было то? Улыбка В симуляторе вроде всё ОК...

ilnur888, вам обязательно необходим тут редуктор, так "Слежение за линией" у вас не получится.
19. mihail - 31 Октября, 2010 - 19:02:02 - перейти к сообщению
nest пишет:
А что было то?
Алгоритм немного другой. Робот с ним по линии ехать не должен был. А так, программа должна компилироваться и в симуляторе нормально работать.
cjA пишет:
по алгоритму mihail
Алгоритм не мой. Я его позаимствовал из другой статьи myROBOT (робот с логической микросхемой http://myrobot.ru/stepbystep/el_...bot_for_line.php ) Смущение
cjA пишет:
все получится
Не факт. Там, моторчики надо правильно подключить Голливудская улыбка
20. cjA - 31 Октября, 2010 - 19:19:19 - перейти к сообщению
у него есть возможность программного ШИМа,
поедет, куда денется.
(можно и без редукторов)
(я уже запутался в чем трабла- в проге или механике? или в makefile?)
21. nest - 31 Октября, 2010 - 21:20:51 - перейти к сообщению
cjA пишет:
у него есть возможность программного ШИМа,
поедет, куда денется.
(можно и без редукторов)

Вы, видимо, ни разу не пробовали моторчики на мало-заполненном Шим-е запускать ...
22. ilnur888 - 31 Октября, 2010 - 21:22:44 - перейти к сообщению
cjA пишет:
у него есть возможность программного ШИМа,
поедет, куда денется.
(можно и без редукторов)
(я уже запутался в чем трабла- в проге или механике? или в makefile?)




теперь и сам не знаю! я его с makefile никак не разберусь! Ребята всем СПАСИБО за то что отвечаете мне!

Завтра попробую прошить и испытать, результаты отпишу...
Всем пока!
(Добавление)
Кто-нибудь, помогите создать hex-файл по алгоритму mihail (см. выше) ! Ну не получается у меня! Жалуется на makefile!!!

Пожалуйстаааа-ааа!



\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Все-таки сделал hex! Через Codevision AVR, тот жаловался конечно, пришлось там названия портов подправить, компиляция прошла без ошибок.

Вот, смотрите сами (код от mihail):
CODE:
#include <mega8.h>
#include <stdio.h>


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

{



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

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



PORTD = 0xff; // установить "1" на всех выводах порта D,

// включаем подтягивающие резисторы



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

{



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



if( !(PIND & (1<<PIND.1)) ) // проверить "0" на линии 1 порта D

{

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

PORTC.1=1; // установить "1" на линии 1 порта C

PORTC.2=0; // установить "0" на линии 2 порта C

PORTC.3=1; // установить "1" на линии 3 порта C

PORTC.4=1; // установить "1" на линии 4 порта C

// -------------------------------- ---------------------

}

else

{

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

PORTC.1=1; // установить "1" на линии 1 порта C

PORTC.2=1; // установить "1" на линии 2 порта C

PORTC.3=1; // установить "1" на линии 3 порта C

PORTC.4=0; // установить "0" на линии 4 порта C

// -------------------------------- ---------------------

}



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



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



вот хекс:
CODE:

:0200000020C01E
:10000200FECFFDCFFCCFFBCFFACFF9CFF8CFF7CFA2
:10001200F6CFF5CFF4CFF3CFF2CFF1CFF0CFEFCFD2
:10002200EECFEDCF1027E80364000A0001000010B4
:100032000001100001000000020060013800000011
:10004200F894EE27ECBBF1E0FBBFEBBFE5BFF8E1B4
:10005200F1BDE1BD8DE0A2E0BB27ED938A95E9F702
:1000620080E094E0A0E6ED930197E9F7EAE3F0E09F
:1000720085919591009761F0A591B59105901590A4
:10008200BF01F00105900D920197E1F7FB01F0CF5E
:10009200EFE5EDBFE4E0EEBFC0E6D1E000C0EFEF78
:1000A200E4BBE0E0E1BBEFEFE2BB10B2E0E081993C
:1000B200E1E0A1E017D0E12129F4A99AAA98AB9A2C
:1000C200AC9A04C0A99AAA9AAB9AAC98EECFFFCF89
:1000D2005F9BFECFECB108955D9BFECFE881ECB94A
:1000E20021960895EE230E2EEA2F19F0EE0F0A94B0
:1000F200E9F708955A934A933A932A931A930A93E3
:1001020008955D814C813B812A811981088108957E
:00000001FF


Завтра прошью и отпишу! Всем пока!
23. cjA - 01 Ноября, 2010 - 02:18:36 - перейти к сообщению
вот я и говорю что в make.exe от gcc уже лет пятнадцать какойто ляп тянедся Грустный
24. ilnur888 - 01 Ноября, 2010 - 20:06:49 - перейти к сообщению
Всем добрый вечер!
Как обещал, отписываюсь. Значит так, в проге ошибку понял в чем, в предыдущем варианте он вращал колесами вперед или назад, а не следовал за линией, я почему-то комментариям в программе доверился и не проверял ничего (ну и ДУРАК Я!), так что Огромное СПАСИБО mihail'у за исправление!

Как я писал выше, раньше при включении робота оба моторчика вращались в одну сторону не реагируя ни на белое, ни на черное...
А теперь, крутится только один моторчик, а второй стоит, опять таки на белое или черное реакции НИКАКОЙ!!!

Вообщем, буду искать ошибку в схеме, думаю, может нанозамыкание???
25. mihail - 02 Ноября, 2010 - 17:14:00 - перейти к сообщению
Проверьте работу схемы с помощью вольтметра. Минусовой щуп вольтметра соедините с GND, а плюсовой с PD1. В зависимости от того освещен фотосенсор или нет напряжение должно меняться от 0В (или около того) до 5В (или около того). Это если от источника тока на схему подается 5В.
26. ilnur888 - 14 Ноября, 2010 - 13:16:16 - перейти к сообщению
mihail пишет:
Проверьте работу схемы с помощью вольтметра. Минусовой щуп вольтметра соедините с GND, а плюсовой с PD1. В зависимости от того освещен фотосенсор или нет напряжение должно меняться от 0В (или около того) до 5В (или около того). Это если от источника тока на схему подается 5В.


Добрый день!
mihail , как вы мне и написали - проверил:

• ик-диод над белой бумагой = 1.11В
• ик-диод над черной бумагой = 1.77В
Я правильно понимаю что должно быть 0В, когда робот находится над белой бумагой???
27. mihail - 14 Ноября, 2010 - 17:06:15 - перейти к сообщению
ilnur888 пишет:
Я правильно понимаю что должно быть 0В, когда робот находится над белой бумагой?
Точнее, около нуля. Может быть чуть больше.

Сколько вольт подается на микроконтроллер?

http://easyelectronics.ru/fotodatchik.html Фотосенсор подключен так как сказано в этой статье?
28. ilnur888 - 14 Ноября, 2010 - 18:43:51 - перейти к сообщению
mihail пишет:
ilnur888 пишет:
Я правильно понимаю что должно быть 0В, когда робот находится над белой бумагой?
Точнее, около нуля. Может быть чуть больше.

Сколько вольт подается на микроконтроллер?

http://easyelectronics.ru/fotodatchik.html Фотосенсор подключен так как сказано в этой статье?


Так, подается от 4.8 до прибл. 5.2. вольт.

Подключен ли так, мгм, непонял я картинку на сайте.
Если вы имеете ввиду правильно ли подключен у него эмиттер/коллектор, то я соблюдал + и -. ТОгда бы о светодиод на роботе не загорался бы...
Даже незнаю что делать, к кому идти...
29. mihail - 14 Ноября, 2010 - 21:48:46 - перейти к сообщению
Какой фотосенсор используете? Если фотодиод, то подключите его наоборот.
30. ilnur888 - 14 Ноября, 2010 - 22:39:40 - перейти к сообщению
mihail пишет:
Какой фотосенсор используете? Если фотодиод, то подключите его наоборот.


А с чего так????
Ну ради интереса - сейчас попробую!
Голливудская улыбка Одобряю
(Добавление)
0 реакции, все так же.
(Добавление)
кстати, используется фотодиод