роботы робототехника микроконтроллеры


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

> Описание: Не могу понять=)
beam Post Id



Главнокомандующий


Сообщений всего: 278
Дата рег-ции: Дек. 2009  



Ладно...мне нужно подключить к МК (к любому фирмы Атмел) флэшку и динамик...и заставить это все играть какую нибудь мелодию....в формате wav,я так понимаю,колонки мне надо подсоеденять к двум потам ШИМ да?,но вот я не знаю где они находятся у мк,так же ,куда подсоеденять флэшку я тож незнаю)...кто может,помогите,...Заране спасибо)
Хочу сделать чтото типа мигалки со звуком
 
 Top
ОЛЕГ Супермодератор Post Id



Супермодератор


Сообщений всего: 1732
Дата рег-ции: Нояб. 2008  



Это не подошло?

Сирену на каком-нибудь пьезоизлучателе (какжется, так они называются, поправьте, если не прав) можно сделать и без флешки. И с любой ножки МК. Через транзисторный ключ.
Нужно выводить сигнал, скажем, от 500 до 5000 Гц. Сделать это можно циклом, где от переменной, определяющей время паузы/ сигнала, сначала будет отниматься единица, а по достижении частоты 500 Гц- добавляться.

Вы знаете, что такое звук и как его сделать?

Можете записать звук сирены на диктофон, открыть его в любом редакторе в виде синусоиды, посмотреть временные интервалы и, описанным мной способом, вывести точно такой же звук на любую из ножек МК.
 
 Top
beam Post Id



Главнокомандующий


Сообщений всего: 278
Дата рег-ции: Дек. 2009  



ОЛЕГ пишет: Вы знаете, что такое звук и как его сделать?
Честно сказать нет,незнаю,если можете обьясните)
 
 Top
ОЛЕГ Супермодератор Post Id



Супермодератор


Сообщений всего: 1732
Дата рег-ции: Нояб. 2008  



Посмотрите это. Этого должно быть достаточно для понимания.
 
 Top
beam Post Id



Главнокомандующий


Сообщений всего: 278
Дата рег-ции: Дек. 2009  



А на обычной колонке от детских игрушек и тд,можно добится звука,?
 
 Top
ОЛЕГ Супермодератор Post Id



Супермодератор


Сообщений всего: 1732
Дата рег-ции: Нояб. 2008  



Да.
Чтобы получить звук определенной частоты из колонки нужно подать на ее входы электрический сигнал такой же частоты.
 
 Top
beam Post Id



Главнокомандующий


Сообщений всего: 278
Дата рег-ции: Дек. 2009  



Обьясните как привести в действие сдвиговой регистр 74HC164 .....подсоеденил его к МК(правильно подсоеденил),но не доходит как подавать на него ток от мк,...читал вот тут,но всеравно по нолям))) http://easyelectronics.ru/sdvigovyj-registr.html
(Добавление)
инными словами .....как его наполнить
(Добавление)
Я использую МК Атмега8,PD2-Reset...,PD1-Data...,PD0-тактовый,....если можете,то программно как записать,для наполнения регистра.
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



beam, схему покажите (в PNG или GIF формате).
 
 Top
beam Post Id



Главнокомандующий


Сообщений всего: 278
Дата рег-ции: Дек. 2009  



да схема у меня только в Спринт лайоуте (лэй,бак.....форматы),...вы просто если знаете,обьясните как наполнить регистр...
(Добавление)
а сделал точно так как показано тут,..http://easyelectronics.ru/sdvigovyj-registr.html
(Добавление)
......Вот из статьи.....

Наполнять регистр просто:
1) Поднимаем и держим RESET в 1
2) Выдаем первый (старший) бит на Data.
3) Опускаем в 0 и поднимаем в 1 тактовый выход. На восходящем фронте происходит занос в регистр и сдвиг всей цепочки на один шаг.
4) Повторить со второго пункта пока все биты не выдадим.

А для сброса достаточно уронить Reset в ноль на пару микросекунд.
Все просто Улыбка



вот что мне не понятно из вышенаписанного
.......1)подаю на ресет ..1..
2)это понять немогу(какой старший бит?=)
3)подаю на тактовый вход ..1..потом ..0..
(Добавление)
МК Атмега8,PD2-Reset...,PD1-Data...,PD0-тактовый,....если,несложно,напишите хоть немного программы,без обьявлений и тд,только главное...Заранее благодарен
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



beam пишет:
схема у меня только в Спринт лайоуте
не вижу преграды. сделайте скриншот, обрежте и вставте тут.
в след раз нет схемы - не будет бубликов. :confused:

Описание работы D-триггера.



(на этой картинки входы R и S не показаны)
При переходе с низкого лог. уровня на высокий ("фронт" сигнала) логическое состояние со входа D передаётся на выход Q. В остальных случаях лог. состояние на входе D не имеет значения.
Можно сказать, что D-триггер работает как "защёлка". При фронте на входе C сигнал со входа C защёлкивается на выход Q. Среди электронщиков название "защёлка" применяется часто. (существует ещё и "прозрачная защёлка").



Описание строения 74хх164.



Сдвиговой регистр 74хх164 состоит из цепочки D-триггеров. Каждый выход триггера не только выведен наружу, но и соединён с информационным входом D (D- от Data) последующего. Вход первого триггера выведен наружу.
Все тактовые входа триггеров соединены вместе и тоже выведены наружу.
Все вроды сброса R (R - от Reset) соединены вместе и выведены наружу.
(работа выведеных наружу сигналов, какой фронт или какое лог. состояние является активным - описана в даташите.)

Описание алгоритма "заполнения" регистра 74хх164.
Вместо термина "заполение" говорят "вдвинуть" (иногда "задвинуть". Напр: "вдвинуть" байт в регистр). Так как дело имеем с регистром "сдвига", то байт мы в него вдвигаем снаружи.
Вход и А1 и А2 (они объеденены внутри по 2-И) соединяем с выходом Data.
Вход CLOCK соединяем с выходом тактового сигнала.

Внутри МК (програмный метод):
заводим переменную f и делаем её равной 7
а) -- на выход D выводим первый бит вашего байта.
б) -- на выходе такта С делаем спад (переход с высокого лог. состояния в низкое. ... или с "1" в "0")
в) -- пару микросекунд ждём (если частота работы МК меньше 10-20 МГц то ждать не надо) и возвращаем ногу С в состояние "1".
г) -- сдвигаем наш байт вправо (делим на два)
д) -- уменьшаем на один переменную f
е) -- если переменная f не стала нулём, то...
... переходим опять на пункт а)

в г) можно сдвигать влево (умножать на два), тогда на выходах 74хх164 порядок наших битов будет обратный



beam пишет:
2) Выдаем первый (старший) бит на Data.
2)это понять немогу. какой старший бит?=)

:) мне тоже эти названия не очень нравятся, но такова судьба :)
старший - это самый большой, самый старый, самый толстый по значению - седьмой бит.
младший - самый маленький, самый хлипкий, самый незаметный по значению - нулевой бит.
 
 Top
beam Post Id



Главнокомандующий


Сообщений всего: 278
Дата рег-ции: Дек. 2009  



Самый старший бит-как его подать?просто даем..1..?
вот схемка,но плата у меня двухстороняя,так што схемка перевернута.
(Добавление)
мега в смд корпусе
Прикреплено изображение
Безымянный.png

 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



вроде бы договаривались, что б было в PNG/GIF...
 
 Top
beam Post Id



Главнокомандующий


Сообщений всего: 278
Дата рег-ции: Дек. 2009  



И nest всетаки можете начать программу?,ато у меня невыходит ничего=)
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



beam пишет:
Самый старший бит-как его подать?просто даем..1..?
я не знаю, на чём вы пишите, но на асм можно так:
CODE:

sbrs our_byte,7 ; если бит 7 в нашем байте установлен...
sbi PORTx,0 ; ... то устанавливаем и ногу PORTx.0
sbrc our_byte,7 ; если бит 7 в нашем байте сброшен...
cbi PORTx,0 ; ... то сбрасываем и ногу PORTx.0


а как там в других языках так называемого "высокого (гы-гы) уровня" вывести один бит на одну ногу - это уж ... сами.

но вы бы лучше всё аппаратно организовали через SPI.
У атмела специально для этого есть код и объяснения .
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



nest пишет:
а как там в других языках так называемого "высокого (гы-гы) уровня" вывести один бит на одну ногу - это уж ... сами


CODE:

/***************************************************************

Реализация алгоритма "заполнения" регистра 74HC164 для WinAVR

Частота работы МК меньше 10 МГц

***************************************************************/

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

int main(void) /* основная программа */
{

char var_1 = 0b11111111; /* переменная определяет содержимое регистра */

int k; /* переменная для цикла */

DDRD |= (1<<0); /* PD0 сконфигурировать как выход, тактовый выход */
DDRD |= (1<<1); /* PD1 сконфигурировать как выход, Data выход */
DDRD |= (1<<2); /* PD2 сконфигурировать как выход, RESET выход */

PORTD |= (1<<0); /* установить "1" на линии 0 порта D */
PORTD &= (~(1<<1)); /* установить "0" на линии 1 порта D */
PORTD &= (~(1<<2)); /* установить "0" на линии 2 порта D */

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


PORTD |= (1<<2); /* поднимаем и держим RESET в 1 */


for(k=7; k>=0; k--)
{

if( var_1 & (1<<k) )
{
PORTD |= (1<<1); /* установить "1" на линии 1 порта D */
}
else
{
PORTD &= (~(1<<1)); /* установить "0" на линии 1 порта D */
}

PORTD &= (~(1<<0)); /* опускаем в 0 тактовый выход */
PORTD |= (1<<0); /* поднимаем в 1 тактовый выход */

}


_delay_ms(1000); /* задержка 1 c. */


PORTD &= (~(1<<2)); /* опускаем в 0 RESET */


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

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


Теоретически Улыбка должно работать
 
 Top
Страниц (7): « 1 2 3 [4] 5 6 7 »
« Делимся опытом »


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





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru