Привет всем участникам форума! В прошлый раз я задавал вопрос по поводу генерации пилы с использованием СИ на AVR. Кроме @vanyamelikov мне никто не отвечал, поэтому обращаюсь к Вам! Как же мне сгенерировать синусоиду используя ту же схему, что Вы предложили в прошлом ответе Заранее спасибо.
Никаких сложностей это не должно для Вас сотавлять, если Вы смогли повторить предидущий пример. Начну поэтапно, и попробую дать более менее развернутый ответ! 1. Собираем следующую схему.
На выше приведенной схеме я расположил три кнопки. При нажатии на первую Вы увидите полупилообразный сигнал, на вторую вожделенную Вами синусоиду(многие из желания сэкономить ресурсы МК сначала создают таблицу массив с уже рассчитанными величинами для синуса, и далее по очередности вызываю каждое значение, с целью не утруждать МК вычислениями, а некоторые МК не умеют попросту умножать!). При нажатии на третью кнопку Вы увидите очертания города Нью-Йорк или Сидней. Так перейдем к программе, она ниже! Если возникнет вопрос что такое PINC.0 - это примитивная обработка прерываний на МК(порт на котором сидит кнопка настроен на вход), так вот при подаче на него 5В то есть лог 1, он сгнализирует нам об этом. Некоторые делают так: PINC.0 == 1, но это в нашем случае ни к чему, так как и так сработает. Программа ниже:
#include <mega32.h>
#include <math.h>
#include <delay.h>
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
SPCR=0x00;
TWCR=0x00;
while (1)
{
int i;
if (PINC.0) {
for(i = 0; i <255; i++) {
PORTB = i;
}
}
else if(PINC.1) {
for(i = 0; i <255; i++) {
PORTB = 127+127*sin(3.14*i*0.007843);
}
}
else if(PINC.2) {
for(i = 0; i <255; i++) {
PORTB = 127+127*tan(3.14*i*0.007843);
}
}
}
}
И так посмотрим, что же у нас получилось:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем приветОбъясните пожалуйста, как добавить один односвязный список в другой
Почему, когда я считываю текст из BoxEditor диалогового окна, или же вызываю диалог открытия/сохранения файла, то текст у меня сохраняется в элементы...
Уважаемые профи! Написал программу записи нескольких потоков аудио данных с АЦП(специальная плата PCI)Программа работает, но при прослушивании...