Вопросы по Line Tracer

Обсуждаем рождающиеся мысли и результаты экспериментов.

Вопросы по Line Tracer

Сообщение Term » 30 мар 2008, 22:17

Я тут собрался делать Line Tracer из статьи Майробота. Есть несколько вопросов: у меня программа для робота содрана с сайта. Я ее скопировал в CVAVR и он выдал мне, что там аж 4 ошибки. Вот какие они:
#include <avr/io.h>
И компилятор CVAVR пишет что здесь ошибка, "Cant open #include file: avr/io.h"
DDRD = 0x00; // все выводы порта D сконфигурировать как входы, пишет: "undefined simbol "DDRD""
ну и еще вот

PORTD = 0xff; // установить "1" на всех выводах порта D, пишет "undefined simbol "PORTD""
И еще:
if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D, пишет "undefined simbol "PIND""
РОсьба модерам: ПЛЗ НЕ ПЕРЕНОСИТЕ МОЮ ТЕМУ В СООТВЕТСТВУЮЩИЙ РАЗДЕЛ LINE TRACER, ТАМ ТЕМУ НИКТО НЕ ПРОЧТЕТ. :O:
ПОМОГИТЕ ХТО НИБУД :RTFM:
http://demidz.narod.ru - мой сайт-словарь для начинающих
Я ЧАЙНИК
Аватара пользователя
Term
 
Сообщения: 217
Зарегистрирован: 07 авг 2007, 22:42
Откуда: Королев

Re: Вопросы по Line Tracer

Сообщение Myp » 30 мар 2008, 23:35

если ругается на #include <avr/io.h>

значит этого файлика нет там где он нужен
короче в папке нету этого файла

поищи поиском файл io.h и положи туда куда надо
либо измени строку #include <avr/io.h> на #include <то место где лежит в реале у тебя этот файлик io.h>

остальные ошибки из за того нет этого хедера
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Вопросы по Line Tracer

Сообщение Vooon » 30 мар 2008, 23:45

это вопрос не про лайн-трейсер а про различия компиляторов.
программа написана для gcc, а ты ее cvavr'у без переделки пихаеш!
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Вопросы по Line Tracer

Сообщение Term » 30 мар 2008, 23:48

А чо за файл такой io.h ? :oops:

Добавлено спустя 1 минуту 38 секунд:
Ну и чо за переделка такая? Никогда не встречал. :oops:
http://demidz.narod.ru - мой сайт-словарь для начинающих
Я ЧАЙНИК
Аватара пользователя
Term
 
Сообщения: 217
Зарегистрирован: 07 авг 2007, 22:42
Откуда: Королев

Re: Вопросы по Line Tracer

Сообщение Сергей » 31 мар 2008, 00:01

Term, почитай книжки про программирование, тебе много станет ясно. Советую Керниган и Ритчи Язык Си почитать
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: Вопросы по Line Tracer

Сообщение Vooon » 31 мар 2008, 00:07

просто установи WinAVR (предвосхищая вопрос: "а где скачать", ответ - спроси у гугла как пройти в библиотеку :) )
далее найди папку include а в ней avr вот там и будет лежать io.h
открой и почитай, там все написано, если понятно не станет повтори изучение языка.

@ Myp если указавать адресс то так
Код: Выделить всё
#include "/full/path/to/file" // полный путь
#include "../file" // относительный путь
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Вопросы по Line Tracer

Сообщение Term » 31 мар 2008, 02:51

Сделал как Мур сказал - 1 ошибка исправлена и осталось ещё 4. Ктонибудь киньте мне WinAVR одним архивом. Адрес : demid-z@yandex.ru
Мне учиться нужно конвертировать а то на Майроботе все помешаны на WinAVR. Ну если кидать никто не собираеться то хотябы напишите, как конвертировать. А то не двигается дело нифига. :(
http://demidz.narod.ru - мой сайт-словарь для начинающих
Я ЧАЙНИК
Аватара пользователя
Term
 
Сообщения: 217
Зарегистрирован: 07 авг 2007, 22:42
Откуда: Королев

Re: Вопросы по Line Tracer

Сообщение rig » 31 мар 2008, 06:15

нужно в начале программы вставить такую строчку
#include <tiny2313.h>
МК должен соответствать используемому.
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Вопросы по Line Tracer

Сообщение loid » 31 мар 2008, 08:21

Демаю строку #include <io.h> можно заменить на #include <stdio.h>
Всё должоно работать
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Вопросы по Line Tracer

Сообщение Term » 31 мар 2008, 09:44

rig писал(а):нужно в начале программы вставить такую строчку
#include <tiny2313.h>
МК должен соответствать используемому.

Да я Мегу 8 юзаю. На счет того файла про который говорил Loid там есть и файл io.h и файл stdio.h . Ладно, приду из школы попробую.
http://demidz.narod.ru - мой сайт-словарь для начинающих
Я ЧАЙНИК
Аватара пользователя
Term
 
Сообщения: 217
Зарегистрирован: 07 авг 2007, 22:42
Откуда: Королев

Re: Вопросы по Line Tracer

Сообщение Myp » 31 мар 2008, 10:50

а я чото и не глянул подо что там исходник выложен... :oops:


кстати
ктонить мне объяснит гениальность вот этой строки:
Код: Выделить всё
if (!(PIND & (1<<PIND.1))) // проверить "0" на линии 1 порта D

ато я своим скудным мозгом написал бы
Код: Выделить всё
if PIND.1 == 0 // проверить "0" на линии 1 порта D


Добавлено спустя 8 минут 37 секунд:
далее

открываем ссылку http://myrobot.ru/stepbystep/pr_mcports.php и читаем
Например, команда

PORTD |= 1<<3;

установит "1" (сигнал высокого уровня) на выводе PD3, если вывод сконфигурирован как выход.

Команда

PORTD &= ~(1<<4);

установит "0" (сигнал низкого уровня) на выводе PD4, если вывод сконфигурирован как выход.

В AVR GCC сдвиг можно осуществлять и с помощью функции _BV(), что даже предпочтительней, так как в этом случае компилятор сам выполняет поразрядный сдвиг и вставляет результат в компилируемый код. Это обеспечивает отсутствие затрат времени во время непосредственного выполнения кода в микроконтроллере.

В случае использования функции _BV() две предыдущие команды будут выглядеть следующим образом.

PORTD |= _BV(PD3); // установить "1" на линии 3 порта D

PORTD &= ~_BV(PD4); // установить "0" на линии 4 порта D


тоесть чтоб небыло ошибок нуно переделать без использования функции _BV()

Добавлено спустя 2 минуты 13 секунд:
короче вот что вышло у меня

Код: Выделить всё
#include <mega8.h>

// Declare your global variables here

void 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 &= ~(1<<2);       // установить "0" на линии 2 порта C
                  PORTC |= 1<<3;          // установить "1" на линии 3 порта C
                  PORTC &= 1<<4;          // установить "1" на линии 4 порта C

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

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

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


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


но я хз правильно или нет потому как не проверял )
но компилитсо в кодевижене :crazy:
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Вопросы по Line Tracer

Сообщение Master » 31 мар 2008, 12:25

Код: Выделить всё
if (!(PIND & (1<<PIND.1))) // проверить "0" на линии 1 порта D

Меня тоже убивает такая формулировка, но это аргументируют тем что якобы эта строчка понятна любому МК. Хотя кому нужен такой МК который не понимает нормльного языка, тоже вопрос.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Вопросы по Line Tracer

Сообщение Myp » 31 мар 2008, 12:37

всё равно же компилятор скомпилирует в 100% понятный код для МК
зачем огород городить?...
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Вопросы по Line Tracer

Сообщение Term » 31 мар 2008, 13:24

Пасиба бальшое, через 3 часа вернусь домой и программу в комп загружу. Щас буду компоненты по Инету заказывать пока есть промежуток 45мин между уроками. :)
http://demidz.narod.ru - мой сайт-словарь для начинающих
Я ЧАЙНИК
Аватара пользователя
Term
 
Сообщения: 217
Зарегистрирован: 07 авг 2007, 22:42
Откуда: Королев

Re: Вопросы по Line Tracer

Сообщение Term » 31 мар 2008, 23:10

У меня WMlab не симулирует почему то и пишет что 192 ошибки. Чо делать?
http://demidz.narod.ru - мой сайт-словарь для начинающих
Я ЧАЙНИК
Аватара пользователя
Term
 
Сообщения: 217
Зарегистрирован: 07 авг 2007, 22:42
Откуда: Королев

След.

Вернуться в Идеи

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10