Страница 1 из 2

пищалка на ATmega8

Добавлено: Чт сен 20, 2012 10:03:34
FreshMan
в народе говорят одна голова хорошо а две лучше, кто может предложить какие-либо вариантьы чтобы сделать пищалку на данном МК ? подскажите пожалуйста ученику :))

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 11:17:34
jordan
на данном контроллере можно сделать даже wave плеер, или даже mp3 плеер если докупить mp3 декодер vs.....а пищалку можно сделать любую какую только захочется, какая именно пищалка нужна? какая задача?

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 13:39:47
FreshMan
имеется обычный buzzer без генератора, нужно сделать писк типа пи-пи....., пи-пи....., пи-пи....,
на первом этапе я хочу сделать монотонный писк, без прерываний
как сие сделать ?

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 13:41:53
Gudd-Head
Дёргать ногой, как же ещё?

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 13:44:39
FreshMan
в качестве основной частоты брать 1кГц ?

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 13:48:01
Gudd-Head
На вкус и цвет.
Вот генератор, можешь послушать :)

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 13:48:17
s_black
#include <avr/io.h>
#include <util/delay.h>

int main (void)
{
DDRB |= _BV(PB1);

for(;;)
{
PORTB ^= _BV(PB1);
_delay_ms(200);
}
}

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 13:50:52
Gudd-Head
s_black писал(а):_delay_ms(200);
2,5 Гц?

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 13:54:39
FreshMan
Gudd-Head, спасибо, интерестная штука :))
s_black, мне желательно бы для данных целей заюзать таймер Т0 или Т1
Т2 уже занят
я делаю пищалку для звонка в часах :))

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 13:55:52
Gudd-Head
Какая марка пищалки?

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 14:01:27
FreshMan
на ней ничего не написано, возле ножек стоят знаки + и -
я её выдрал со старого импортного телефона

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 14:03:12
Gudd-Head
Точно она от постоянки не пищит?

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 14:05:31
FreshMan
нет...., подключал и проверял

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 14:32:52
jordan
ну так на таймере очень просто, настройте прерывание таймера с неким периодом, и в прерывании инвертируйте состояние ножки, будет пищать будет пищать с частотой в два раза меньше чем частота прерывания таймера...

PORTB ^= 0b00000100 - например 3 ножна порта B 9(код прерывания)

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 15:03:00
BVS
По моему за год можно было что нибудь придумать самому
Я даже подсказывал и книжку давал, где почитать, не ужели трудно, включаеш в таймере CTC и на OCxn получаеш частоту
For generating a waveform output in CTC mode, the OC1A output can be set to toggle
its logical level on each compare match by setting the Compare Output mode bits to toggle
mode (COM1A1:0 = 1)
на это GOOGLE переводчик отвечает:
Для формирования выходного сигнала в режиме CTC, выход OC1A может быть установлен на переключение
логического уровня на каждый матч сравнения, установив Compare бит выходного режима для переключения
режиме (COM1A1: 0 = 1
советую выкинуть ATmegУ в форточку и забыть это!

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 16:27:50
DruidCat
А почему в топку Мегу?
Вопрос наверно в эту тему, а как расчитывать частату, с которой будет изменятся из единицы в ноль и наоборот ножка МК. Реализация через таймер с прерыванием. Как мне расчитать частоту в 36 кГц через таймер Т1? Использую ATmega8 с кварцевым резонатором на 8мГц.

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 18:02:56
BVS
8000000/36000/2-1=110.1 = 0x006E

Код: Выделить всё

TCCR1A=0x40;
TCCR1B=0x09;

OCR1AH=0x00;
OCR1AL=0x6E;
8000000/2*1(1+110) = 36036 Гц
только это без прерывания, на такой частоте прерывания фтопку

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 20:09:00
DruidCat
Спасибо многоуважаемый кот. :beer:

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 22:10:10
jordan
Друзья, к сожалению мы не можем услышать звуковые колебания на такой частоте - 36036 Гц... это уже ультра звук....

для пищалки 1000 Гц, больше уже не приятно для уха, режит слух :shock:

Re: пищалка на ATmega8

Добавлено: Чт сен 20, 2012 23:44:46
FreshMan
ну вот, сварганил код для частоты в 1 кГц

Код: Выделить всё

#include <mega8.h>
#include <delay.h>

void main(void)
{
PORTC=0x00;
DDRC=0x7F;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

while (1)
      {
       PORTC|=(1<<1);
       delay_us(500);
       PORTC&=~(1<<1);
       delay_us(500);

      };
}
как теперь сделать чтобы пыщалка пол минуты пищала а пол молчала ?
завести счетчик который подсчитывает время ?