Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 01.02.2015, 17:04  
rusyvochka
Гражданин KAZUS.RU
 
Аватар для rusyvochka
 
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
rusyvochka на пути к лучшему
По умолчанию Re: На досуге - 12F629: 3 меандра на один выход

elon, А принцип связки частота / огибающая можно узнать? Два шима задействованы?
Реклама:
__________________
Смотрящий под ноги - звёзды видит в лужах.
rusyvochka вне форума  
Непрочитано 05.02.2015, 22:17  
rusyvochka
Гражданин KAZUS.RU
 
Аватар для rusyvochka
 
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
rusyvochka на пути к лучшему
По умолчанию Re: На досуге - 12F629: 3 меандра на один выход

Если кто нить еще почитывает данный пост, подскажите "бестолковому"...
Для трех меандров свершилось: поочередный перебор каналов с частотой прибл. 70 кгц вполне удовлетворительный результат.
Теперь о грустном: на 16Ф628 задействовал шим, период задается по периоду ноты, описывается форма - массив и RETLW. Для симметрии для "1" полупериода прибавляю к среднему (50%) шима, для "0" соотв вычитаю. Как бы для одного канала всё ясно.
Как быть, если каналов больше одного, с разными периодами? Даже для одного с разной частотой (хотя бы в два раза) уже "красота сигнала" пропадает.
Скорее всего решение простое, видать пошел ложным путём.
Опережая: никакой коммерции. Как - то ни разу ни сталкивался с подобной задачей, а теперь уперся. Проснулся спортивный интерес.
__________________
Смотрящий под ноги - звёзды видит в лужах.
rusyvochka вне форума  
Непрочитано 05.02.2015, 22:38  
alvadep
Почётный гражданин KAZUS.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: На досуге - 12F629: 3 меандра на один выход

rusyvochka, может Вам стоит изучить принцип работы DDS.
Зачем смешивать 3 меандра, можно ведь смешать 3 гармонических сигнала типа "в уме", а потом уже смешанный сигнал запускать на выход используя ШИМ.
alvadep вне форума  
Непрочитано 05.02.2015, 23:17  
vavan1983
Почётный гражданин KAZUS.RU
 
Аватар для vavan1983
 
Регистрация: 26.12.2007
Сообщений: 1,198
Сказал спасибо: 70
Сказали Спасибо 80 раз(а) в 69 сообщении(ях)
vavan1983 на пути к лучшему
По умолчанию Re: На досуге - 12F629: 3 меандра на один выход

Код:
sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
unsigned int temp_res, temp_res_2, temp_res_3;
char txt[7],txt_2[7];
unsigned short i=0,l=0;
void main() 
{
TRISB.RB0=1;
TRISB.RB1=1;
OPTION_REG=0x7f;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Sound_Init(&PORTC, 0);
while(1)
{
if(temp_res_3!=ADC_Read(1))
{
temp_res_3 = ADC_Read(1);
}

if(temp_res!=ADC_Read(0))
{
temp_res = ADC_Read(0);
temp_res_2=temp_res*2;
}
//==================================================  ============================
if (Button(&PORTB, 0, 1, 0)&&i==0)
{
i=1;
temp_res_2++;
}
if (Button(&PORTB, 0, 1, 1)&&i==1)
{
i=0;
}
//==================================================  ============================
if (Button(&PORTB, 1, 1, 0)&&l==0)
{
l=1;
temp_res_2--;
}

if (Button(&PORTB, 1, 1, 1)&&l==1)
{
l=0;
}
IntToStr(temp_res_2, txt);
IntToStr(temp_res_3, txt_2);
Lcd_Out(1,6,txt);
Lcd_Out(2,6,txt_2);
Sound_Play(temp_res_2, temp_res_3);
}
}
вот вам музыкальный код на АЦП
vavan1983 вне форума  
Непрочитано 05.02.2015, 23:18  
rusyvochka
Гражданин KAZUS.RU
 
Аватар для rusyvochka
 
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
rusyvochka на пути к лучшему
По умолчанию Re: На досуге - 12F629: 3 меандра на один выход

Сообщение от alvadep Посмотреть сообщение
Зачем смешивать 3 меандра
С меандрами все получилось. Пусть будет три синусоиды разной частоты. Высчитывать значение каждой в момент времени, суммировать и в канал. Для 3-х фиксированных частот - нет проблем. Частоты меняются, период соотв тоже. Тут пока топчусь....
За отсылание к "мудрым" спасибо, проштудирую.
__________________
Смотрящий под ноги - звёзды видит в лужах.
rusyvochka вне форума  
Непрочитано 05.02.2015, 23:21  
rusyvochka
Гражданин KAZUS.RU
 
Аватар для rusyvochka
 
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
rusyvochka на пути к лучшему
По умолчанию Re: На досуге - 12F629: 3 меандра на один выход

Сообщение от vavan1983 Посмотреть сообщение
вот вам музыкальный код на АЦП
Это не Ассемблер...
__________________
Смотрящий под ноги - звёзды видит в лужах.
rusyvochka вне форума  
Непрочитано 05.02.2015, 23:30  
vavan1983
Почётный гражданин KAZUS.RU
 
Аватар для vavan1983
 
Регистрация: 26.12.2007
Сообщений: 1,198
Сказал спасибо: 70
Сказали Спасибо 80 раз(а) в 69 сообщении(ях)
vavan1983 на пути к лучшему
По умолчанию Re: На досуге - 12F629: 3 меандра на один выход

Сообщение от rusyvochka Посмотреть сообщение
Это не Ассемблер...
Ну чего вы удумали? На несчастном 12f музыку писать? Совсем ту ту?

Код:
_main:

;Код.c,17 ::                 void main()
;Код.c,19 ::                 TRISB.RB0=1;
        BSF        TRISB+0, 0
;Код.c,20 ::                 TRISB.RB1=1;
        BSF        TRISB+0, 1
;Код.c,21 ::                 OPTION_REG=0x7f;
        MOVLW      127
        MOVWF      OPTION_REG+0
;Код.c,22 ::                 Lcd_Init();
        CALL       _Lcd_Init+0
;Код.c,23 ::                 Lcd_Cmd(_LCD_CLEAR);
        MOVLW      1
        MOVWF      FARG_Lcd_Cmd_out_char+0
        CALL       _Lcd_Cmd+0
;Код.c,24 ::                 Lcd_Cmd(_LCD_CURSOR_OFF);
        MOVLW      12
        MOVWF      FARG_Lcd_Cmd_out_char+0
        CALL       _Lcd_Cmd+0
;Код.c,25 ::                 Sound_Init(&PORTC, 0);
        MOVLW      PORTC+0
        MOVWF      FARG_Sound_Init_snd_port+0
        CLRF       FARG_Sound_Init_snd_pin+0
        CALL       _Sound_Init+0
;Код.c,26 ::                 while(1)
L_main0:
;Код.c,28 ::                 if(temp_res_3!=ADC_Read(1))
        MOVLW      1
        MOVWF      FARG_ADC_Read_channel+0
        CALL       _ADC_Read+0
        MOVF       _temp_res_3+1, 0
        XORWF      R0+1, 0
        BTFSS      STATUS+0, 2
        GOTO       L__main20
        MOVF       R0+0, 0
        XORWF      _temp_res_3+0, 0
L__main20:
        BTFSC      STATUS+0, 2
        GOTO       L_main2
;Код.c,30 ::                 temp_res_3 = ADC_Read(1);
        MOVLW      1
        MOVWF      FARG_ADC_Read_channel+0
        CALL       _ADC_Read+0
        MOVF       R0+0, 0
        MOVWF      _temp_res_3+0
        MOVF       R0+1, 0
        MOVWF      _temp_res_3+1
;Код.c,31 ::                 }
L_main2:
;Код.c,33 ::                 if(temp_res!=ADC_Read(0))
        CLRF       FARG_ADC_Read_channel+0
        CALL       _ADC_Read+0
        MOVF       _temp_res+1, 0
        XORWF      R0+1, 0
        BTFSS      STATUS+0, 2
        GOTO       L__main21
        MOVF       R0+0, 0
        XORWF      _temp_res+0, 0
L__main21:
        BTFSC      STATUS+0, 2
        GOTO       L_main3
;Код.c,35 ::                 temp_res = ADC_Read(0);
        CLRF       FARG_ADC_Read_channel+0
        CALL       _ADC_Read+0
        MOVF       R0+0, 0
        MOVWF      _temp_res+0
        MOVF       R0+1, 0
        MOVWF      _temp_res+1
;Код.c,36 ::                 temp_res_2=temp_res*2;
        MOVF       R0+0, 0
        MOVWF      _temp_res_2+0
        MOVF       R0+1, 0
        MOVWF      _temp_res_2+1
        RLF        _temp_res_2+0, 1
        RLF        _temp_res_2+1, 1
        BCF        _temp_res_2+0, 0
;Код.c,37 ::                 }
L_main3:
;Код.c,39 ::                 if (Button(&PORTB, 0, 1, 0)&&i==0)
        MOVLW      PORTB+0
        MOVWF      FARG_Button_port+0
        CLRF       FARG_Button_pin+0
        MOVLW      1
        MOVWF      FARG_Button_time_ms+0
        CLRF       FARG_Button_active_state+0
        CALL       _Button+0
        MOVF       R0+0, 0
        BTFSC      STATUS+0, 2
        GOTO       L_main6
        MOVF       _i+0, 0
        XORLW      0
        BTFSS      STATUS+0, 2
        GOTO       L_main6
L__main19:
;Код.c,41 ::                 i=1;
        MOVLW      1
        MOVWF      _i+0
;Код.c,42 ::                 temp_res_2++;
        INCF       _temp_res_2+0, 1
        BTFSC      STATUS+0, 2
        INCF       _temp_res_2+1, 1
;Код.c,43 ::                 }
L_main6:
;Код.c,44 ::                 if (Button(&PORTB, 0, 1, 1)&&i==1)
        MOVLW      PORTB+0
        MOVWF      FARG_Button_port+0
        CLRF       FARG_Button_pin+0
        MOVLW      1
        MOVWF      FARG_Button_time_ms+0
        MOVLW      1
        MOVWF      FARG_Button_active_state+0
        CALL       _Button+0
        MOVF       R0+0, 0
        BTFSC      STATUS+0, 2
        GOTO       L_main9
        MOVF       _i+0, 0
        XORLW      1
        BTFSS      STATUS+0, 2
        GOTO       L_main9
L__main18:
;Код.c,46 ::                 i=0;
        CLRF       _i+0
;Код.c,47 ::                 }
L_main9:
;Код.c,49 ::                 if (Button(&PORTB, 1, 1, 0)&&l==0)
        MOVLW      PORTB+0
        MOVWF      FARG_Button_port+0
        MOVLW      1
        MOVWF      FARG_Button_pin+0
        MOVLW      1
        MOVWF      FARG_Button_time_ms+0
        CLRF       FARG_Button_active_state+0
        CALL       _Button+0
        MOVF       R0+0, 0
        BTFSC      STATUS+0, 2
        GOTO       L_main12
        MOVF       _l+0, 0
        XORLW      0
        BTFSS      STATUS+0, 2
        GOTO       L_main12
L__main17:
;Код.c,51 ::                 l=1;
        MOVLW      1
        MOVWF      _l+0
;Код.c,52 ::                 temp_res_2--;
        MOVLW      1
        SUBWF      _temp_res_2+0, 1
        BTFSS      STATUS+0, 0
        DECF       _temp_res_2+1, 1
;Код.c,53 ::                 }
L_main12:
;Код.c,55 ::                 if (Button(&PORTB, 1, 1, 1)&&l==1)
        MOVLW      PORTB+0
        MOVWF      FARG_Button_port+0
        MOVLW      1
        MOVWF      FARG_Button_pin+0
        MOVLW      1
        MOVWF      FARG_Button_time_ms+0
        MOVLW      1
        MOVWF      FARG_Button_active_state+0
        CALL       _Button+0
        MOVF       R0+0, 0
        BTFSC      STATUS+0, 2
        GOTO       L_main15
        MOVF       _l+0, 0
        XORLW      1
        BTFSS      STATUS+0, 2
        GOTO       L_main15
L__main16:
;Код.c,57 ::                 l=0;
        CLRF       _l+0
;Код.c,58 ::                 }
L_main15:
;Код.c,59 ::                 IntToStr(temp_res_2, txt);
        MOVF       _temp_res_2+0, 0
        MOVWF      FARG_IntToStr_input+0
        MOVF       _temp_res_2+1, 0
        MOVWF      FARG_IntToStr_input+1
        MOVLW      _txt+0
        MOVWF      FARG_IntToStr_output+0
        CALL       _IntToStr+0
;Код.c,60 ::                 IntToStr(temp_res_3, txt_2);
        MOVF       _temp_res_3+0, 0
        MOVWF      FARG_IntToStr_input+0
        MOVF       _temp_res_3+1, 0
        MOVWF      FARG_IntToStr_input+1
        MOVLW      _txt_2+0
        MOVWF      FARG_IntToStr_output+0
        CALL       _IntToStr+0
;Код.c,61 ::                 Lcd_Out(1,6,txt);
        MOVLW      1
        MOVWF      FARG_Lcd_Out_row+0
        MOVLW      6
        MOVWF      FARG_Lcd_Out_column+0
        MOVLW      _txt+0
        MOVWF      FARG_Lcd_Out_text+0
        CALL       _Lcd_Out+0
;Код.c,62 ::                 Lcd_Out(2,6,txt_2);
        MOVLW      2
        MOVWF      FARG_Lcd_Out_row+0
        MOVLW      6
        MOVWF      FARG_Lcd_Out_column+0
        MOVLW      _txt_2+0
        MOVWF      FARG_Lcd_Out_text+0
        CALL       _Lcd_Out+0
;Код.c,63 ::                 Sound_Play(temp_res_2, temp_res_3);
        MOVF       _temp_res_2+0, 0
        MOVWF      FARG_Sound_Play_freq_in_hz+0
        MOVF       _temp_res_2+1, 0
        MOVWF      FARG_Sound_Play_freq_in_hz+1
        MOVF       _temp_res_3+0, 0
        MOVWF      FARG_Sound_Play_duration_ms+0
        MOVF       _temp_res_3+1, 0
        MOVWF      FARG_Sound_Play_duration_ms+1
        CALL       _Sound_Play+0
;Код.c,64 ::                 }
        GOTO       L_main0
;Код.c,65 ::                 }
        GOTO       $+0
; end of _main

Последний раз редактировалось vavan1983; 05.02.2015 в 23:33.
vavan1983 вне форума  
Сказали "Спасибо" vavan1983
rusyvochka (06.02.2015)
Непрочитано 05.02.2015, 23:51  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: На досуге - 12F629: 3 меандра на один выход

Сообщение от vavan1983 Посмотреть сообщение
вот вам музыкальный код на АЦП
На АЦП???? и в тексте кода тоже "ADC_Read". интересно, что за новая методика.

Топикстартеру:
Поскольку меандр - это прямоугольный сигнал с равными длительностями 1 и 0, то ШИМ как бы тут лишний, можно просто изменять 1 и 0 на любом выходе программно
В пределах октавы есть 12 музыкальных интервалов (7 нот и 5 полутонов), достаточно иметь всего 12 предустановок периода, которые вызывать по команде на воспроизведение нужной ноты с нужного канала. На один выход объединить логическими операциями
NewWriter вне форума  
Непрочитано 06.02.2015, 00:22  
vavan1983
Почётный гражданин KAZUS.RU
 
Аватар для vavan1983
 
Регистрация: 26.12.2007
Сообщений: 1,198
Сказал спасибо: 70
Сказали Спасибо 80 раз(а) в 69 сообщении(ях)
vavan1983 на пути к лучшему
По умолчанию Re: На досуге - 12F629: 3 меандра на один выход

Ну вот как можно аж три меандры в один выход?

Так эта схема не три меандры в один выход.
Схема.rar

Я для работы LM567 делал.
vavan1983 вне форума  
Непрочитано 06.02.2015, 00:28  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: На досуге - 12F629: 3 меандра на один выход

Сообщение от vavan1983 Посмотреть сообщение
Ну вот как можно аж три меандры в один выход?
http://www.pic24.ru/doku.php/osa/ref/appendix/quartet
Сделай потом расскажешь...
ЗЫ. Не пора ли вам С изучать?


__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 06.02.2015 в 00:31.
dosikus вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:45.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot