roboforum.ru

Технический форум по робототехнике.

 

Робот-Пылесос

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

Re: Робот-Пылесос

Сообщение trofim » 01 ноя 2007, 15:32

2 Strijar
А то звуки сожрали 14кб из 16 доступных
А можно ли поподробней ???
trofim
 
Сообщения: 10
Зарегистрирован: 22 апр 2005, 13:08
Откуда: Белоруссия

Re: Робот-Пылесос

Сообщение Strijar » 01 ноя 2007, 20:11

А что именно? Звук 8 бит, частота 8кц, хранятся в массивах (ну типа wav). При наступлении определеных события выводятся на динамик через ШИМ.

Код: Выделить всёРазвернуть
#include <avr/pgmspace.h>
#include <avr/interrupt.h>

unsigned int    sound = 0;
unsigned char   *data;

#define DIV_0           ((0 << CS22) | (0 << CS21) | (1 << CS20))
#define DIV_8           ((0 << CS22) | (1 << CS21) | (0 << CS20))
#define DIV_64          ((0 << CS22) | (1 << CS21) | (1 << CS20))
#define DIV_256         ((1 << CS22) | (0 << CS21) | (0 << CS20))
#define DIV_1024        ((1 << CS22) | (0 << CS21) | (1 << CS20))

ISR(SIG_OUTPUT_COMPARE3A) {
    sei();

    if (sound) {
        if (sound--) {
            OCR1B = pgm_read_byte(data++);
        } else {
            TCCR1A = 0;
            TCCR1B = 0;
            TCCR3B = 0;
            DDRE &= ~(1 << PE2);
        }
    }
    TCNT3 = 0;
}

void SoundPlay(unsigned char* wave, unsigned int wave_size) {
    if (!sound) {
        data = wave;
        sound = wave_size;

        /* PWM 8bit, 32kHz */

        DDRE |= (1 << PE2);
        TCCR1A = (1 << WGM10) | (1 << COM1B1);
        TCCR1B = (1 << WGM12) | DIV_0;

        /* Change samples timer - 8kHz */

        TCCR3A = 0;
        TCCR3B = DIV_8;
        OCR3A = 125;
        ETIMSK |= (1 << OCIE3A);
        TCNT3 = 0;
    }
}
Аватара пользователя
Strijar
 
Сообщения: 587
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, Dao, Lua, VHDL, Verilog
ФИО: Олег Белоусов

Re: Робот-Пылесос

Сообщение loid » 02 ноя 2007, 08:29

Вернусь к шасси. Оно у меня на ходу, осталось сделать передний бампер и боковые датчики наличия стены. Для позиционирования робота сначала хотел поставить на каждой стороне по одному датчику от мыши, но почитав о том как его прикрутить к AVR - передумал. Для начала хочу следать на старой доброй опто-механики. Взять пару колёс с прорезями от мыши и считать ими прошедшее расстояние. Вопрос в следующем: как в программе правильно опрашивать эти датчики? Их подключать через прерывания или просто читать данные с порта? При чтении не будут ли отклонения.
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Робот-Пылесос

Сообщение Master » 02 ноя 2007, 08:42

Взять пару колёс с прорезями от мыши и считать ими прошедшее расстояние.

Можно диск разукрасить полосками, мишиные датчики работают и на отражение тоже.
Вопрос в следующем: как в программе правильно опрашивать эти датчики? Их подключать через прерывания или просто читать данные с порта?

Это дело вкуса. Можно и так и так.
При чтении не будут ли отклонения.

Если чтение не будет попадать на выполнение прерывания, то нет. Будет больше погрешность в проскальзывании колес, чем при ошибках чтения.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Робот-Пылесос

Сообщение loid » 02 ноя 2007, 09:16

Я понимаю что микроконтроллер достаточно быстрый, но помимо опроса датчиков, он еще будет выполнять программу. Думаю для позиционирования нужно поставить отдельный контроллер например atmega8.
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Робот-Пылесос

Сообщение Master » 02 ноя 2007, 09:47

loid писал(а):Я понимаю что микроконтроллер достаточно быстрый, но помимо опроса датчиков, он еще будет выполнять программу. Думаю для позиционирования нужно поставить отдельный контроллер например atmega8.

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

Re: Робот-Пылесос

Сообщение loid » 08 ноя 2007, 05:03

Как я говорил раньше - программировал в БЕЙСИКЕ. Там все программы однопоточные. Слышал легенду что с СИ возможно делать многопоточные программы. Применимо ли это к AVR?
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Робот-Пылесос

Сообщение EdGull » 08 ноя 2007, 08:46

loid писал(а):Как я говорил раньше - программировал в БЕЙСИКЕ. Там все программы однопоточные. Слышал легенду что с СИ возможно делать многопоточные программы. Применимо ли это к AVR?

На бейские тоже никто не запрещает написать много поточность. В Bascom есть даже исходники операционки. Только если она аппаратно не поддерживается, то это называется псевдомногопоточность. А у AVR нет аппаратной многопоточности.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Робот-Пылесос

Сообщение loid » 09 ноя 2007, 07:48

Собрал датчик движения на основе опто-механической мыши. Выглядит он так: на ось колёсика с прорезями насадил scroll, если кому интересно выложу фото. Прошу совет по поводу обработки информации поступающего с датчика. Он тоже взят из мыши - это сдвоенный фото-транзистор (или диод, кому как нравиться). При прокручивании колёсика вперёд - изменение сигналов с фото-датчика происходит в такой последовательности: 0-0 1-0 0-1 0-0 1-0 0-1 0-0 и т.д. При прокручивании в обратном направлении: 0-0 0-1 1-0 0-0 0-1 1-0 0-0. От этих датчиклв нужно получать значение: направление прокручивания и значение, на сколько единиц колёсико прокрутилось в ту или другую сторону. Может у кого был опыт с этим делом. Так же мучает вопрос как опрашивать их в программе. Я думаю что всё-таки на опрос нужно ставить отдельный чип, например ATtyny25.
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Робот-Пылесос

Сообщение loid » 12 ноя 2007, 10:00

Помогите разобраться со входами МК. По каким правилам подавать сиглалы в МК? Почитав на сайте avr123.nm.ru, понял что сигналы могут подаваться от 0 до напряжения питания (5 вольт), но так же написано что сила тока не должна привышать 20 мВ. Как с этим быть? К atmrga16 допаются сигналы от датчиков мыши вот через такую схемку. Оцените.

Поделитесь опытом кто как опрашивал ( или считывал данные ) с энкодеров.
Вложения
scrill.JPG
scrill.JPG (12.92 КиБ) Просмотров: 877
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Робот-Пылесос

Сообщение Strijar » 12 ноя 2007, 18:33

Аватара пользователя
Strijar
 
Сообщения: 587
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, Dao, Lua, VHDL, Verilog
ФИО: Олег Белоусов

Re: Робот-Пылесос

Сообщение loid » 16 ноя 2007, 15:42

Так я и думал что для работы датчика движения нужно либо прерывание либо отдельный контроллер. Не могу разобраться с прерываниями на atmega16 где можно почитать про это азбуку?
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Робот-Пылесос

Сообщение Digit » 16 ноя 2007, 16:30

Авр сейчас видимо расслабился, поэтому я скажу :) Там: avr123.nm.ru - Краткий курс AVR
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Робот-Пылесос

Сообщение loid » 17 ноя 2007, 08:28

Я там читал, но что то не допёр :cry:
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Робот-Пылесос

Сообщение Digit » 17 ноя 2007, 18:35

А на http://www.gaw.ru смотрел? Там много документации и примеров на русском языке...

Добавлено спустя 1 минуту 50 секунд:
И если смотрел, то что именно не понятно с прерываниями? Что именно не получается? Рассказывай по шагам, что хочешь сделать и как именно делаешь. Тогда скажем, где ошибся.
А написать за тебя программку - это конечно быстрый выход, но педагогически не правильный :wink:
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Пред.След.

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

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

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

Mail.ru counter