Генераторы синусоиды на AVR
Генераторы синусоиды на AVR
Сообщений 1 страница 11 из 11
Поделиться22014-01-18 06:43:17
Atmega8 = Синусоида + АЦП + USART
Симуляция в Протеус 7.10 + исходники Bascom 2.0.7.1 - скачать
Atmega328 = 4 синусоиды + 6 АЦП + USART (460800 бод)
Симуляция в Протеус 7.10 + исходники Bascom 2.0.7.1 - скачать
Работа в железе, без кварца наблюдается изменение выходной частоты в пределах +-1 Гц.
После установки кварца 7,3728 Мгц, нестабильность выходной частоты +-0,02Гц
Передача данных с АЦП через USART, скорость 460800 бод
Осциллограф
Поделиться32014-01-18 06:43:58
Atmega328P, частота 18,3728 МГц
6 каналов АЦП (режим работы Free)
USART скорость трансляции 460800 бод/сек
3 синусомды смещённые по фазе на 120° и частотой 50 Гц - реализованы аппаратными средствами МК
Симуляция (Протеус 7.10) + исходники (Bascom 2.0.7.1) + таблица расчета синусоиды (Excel 2010) - скачать
Поделиться42014-01-18 07:01:17
Atmega48PA, частота 18,3728 МГц
6 каналов АЦП (режим работы Free)
USART скорость трансляции 460800 бод/сек
3 синусомды смещённые по фазе на 120° и частотой 50 Гц - реализованы аппаратными средствами МК
Симуляция (Протеус 7.10) + исходники (Bascom 2.0.7.1) + таблица расчета синусоиды (Excel 2010) - скачать
Поделиться52014-01-25 10:16:47
Генератор 3-х фазной синусоиды на МК Atmega новых ревизий - Atmega48_88_168_328_124_324_644_1284
Частота 50 Гц, при использовании кварца, нестабильность +-0,01Гц
Фазы смещены на 120°
Использованы: TIMER0; TIMER1 и половина TIMER2
'===============================================================================
'*
'* Автор: Sasha_1973
'* Дата: 25.01.2014 г.
'*
'* МК: ATmega48PA
'* Тактовая частота МК: 18,432 MГц
'*
'* Компилятор: BASCOM-AVR 2.0.7.1
'* Используемый шрифт в Bascom: Consolas; размер = 14
'*
'* Программа симулятор: Proteus 7.10 SR0
'*
'* Описание: 3 синусоиды (аппроксимация = 252 точки), смещённые по фазе на 120° + Atmega48PA
'*
'===============================================================================
$map ' Получаем карту распределения памяти
$regfile = "m48def.dat" ' Используемый контроллер
' $crystal = 7372800 ' 7,3728 МГц, кварц для стабильной работы USART во всём диапазоне скоростей передачи и приёма
$crystal = 18432000 ' 18,432 МГц, кварц для стабильной работы USART во всём диапазоне скоростей передачи и приёма
$framesize = 32 'размер области используемой и необходимой для преобразований
$hwstack = 40 ' Размер аппаратного стека
$swstack = 16 ' Размер программного стека
'---------------------- Настройка TIMER1 -------------------------------------
Config Timer1 = Timer , Clear Timer = 1 , Prescale = 1
On Compare1a Обработка_прерывания_compare1a
Stop Timer1
'---------------------- Настройка TIMER0 -------------------------------------
Config Timer0 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Stop Timer0
'---------------------- Настройка TIMER2 -------------------------------------
Config Timer2 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Stop Timer2
'------------------- Используемые переменные ---------------------------------Dim Цикл_значение_синуса As Word
'------- Для генератора 3-х фазной синусоиды, фазы смещены на 120° -----------
Dim 1_фаза As Byte
Dim 2_фаза As Byte
Dim 3_фаза As ByteDim Значение_синуса(252) As Byte
Dim Значение_синуса_1_фаза As Byte
Dim Значение_синуса_2_фаза As Byte
Dim Значение_синуса_3_фаза As Byte'------------------ Запуск и предварительные настройки -----------------------
'------ Закидываем значения выводимой синусоиды из таблицы в оперативку ------For Цикл_значение_синуса = 1 To 252
Значение_синуса(цикл_значение_синуса) = Lookup(цикл_значение_синуса , Таблица_синуса_252)
Next Цикл_значение_синуса'------ Делаем смещение фаз на 120° ------------------------------------------
Значение_синуса_1_фаза = 0 ' 1 фаза
Значение_синуса_2_фаза = 84 ' 2 фаза
Значение_синуса_3_фаза = 168 ' 3 фаза' Compare1a = 580 ' Для 252 точек. Значение для получения частоты 50,00 Гц, при частоте кварца 7,3728 Мгц
Compare1a = 1462 ' Для 252 точек. Значение для получения частоты 50,00 Гц, при частоте кварца 18,432 Мгц'------ Запускаем аппаратные средства контроллера ----------------------------
Start Timer0
Start Timer1
Start Timer2
'-------------- Разрешаем работу необходимых прерываний ----------------------
Enable Compare1a
'------------ Разрешаем работу всех включенных прерываний --------------------
Enable Interrupts
'===============================================================================
' Г Л А В Н Ы Й Ц И К Л
'===============================================================================
Главный_цикл:nop
Idle
Goto Главный_цикл
End
'===============================================================================
' П О Д П Р О Г Р А М М Ы
'==============================================================================='===============================================================================
Обработка_прерывания_compare1a:
'-------------------------------------------------------------------------------
' 1 фаза
Incr Значение_синуса_1_фаза ' Высчитываем выводимое значение синуса для 1 фазы
If Значение_синуса_1_фаза > 252 Then Значение_синуса_1_фаза = 1 ' Исключаем переполнение счетчиков значений синуса, для 252 точек
Ocr0a = Значение_синуса(значение_синуса_1_фаза) ' Забираем значение синуса из массива, всего 252 значения в регистр таймера 0
' 2 фаза
Incr Значение_синуса_2_фаза ' Высчитываем выводимое значение синуса для 2 фазы
If Значение_синуса_2_фаза > 252 Then Значение_синуса_2_фаза = 1 ' Исключаем переполнение счетчиков значений синуса, для 252 точек
Ocr0b = Значение_синуса(значение_синуса_2_фаза) ' Забираем значение синуса из массива, всего 252 значения в регистр таймера 0
' 3 фаза
Incr Значение_синуса_3_фаза ' Высчитываем выводимое значение синуса для 3 фазы
If Значение_синуса_3_фаза > 252 Then Значение_синуса_3_фаза = 1 ' Исключаем переполнение счетчиков значений синуса, для 252 точек
Ocr2b = Значение_синуса(значение_синуса_3_фаза) ' Забираем значение синуса из массива, всего 252 значения в регистр таймера 0'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Таблица_синуса_252: ' 252 значения синусоиды
'-------------------------------------------------------------------------------
Data &H7E , &H82 , &H85 , &H88 , &H8B , &H8E , &H91 , &H94 , &H97 , &H9B
Data &H9E , &HA1 , &HA4 , &HA7 , &HAA , &HAD , &HAF , &HB2 , &HB5 , &HB8
Data &HBB , &HBD , &HC0 , &HC3 , &HC5 , &HC8 , &HCB , &HCD , &HCF , &HD2
Data &HD4 , &HD6 , &HD9 , &HDB , &HDD , &HDF , &HE1 , &HE3 , &HE5 , &HE7
Data &HE8 , &HEA , &HEC , &HED , &HEF , &HF0 , &HF1 , &HF3 , &HF4 , &HF5
Data &HF6 , &HF7 , &HF8 , &HF9 , &HF9 , &HFA , &HFB , &HFB , &HFC , &HFC
Data &HFC , &HFC , &HFC , &HFC , &HFC , &HFC , &HFC , &HFC , &HFC , &HFB
Data &HFB , &HFA , &HF9 , &HF9 , &HF8 , &HF7 , &HF6 , &HF5 , &HF4 , &HF3
Data &HF1 , &HF0 , &HEF , &HED , &HEC , &HEA , &HE8 , &HE7 , &HE5 , &HE3
Data &HE1 , &HDF , &HDD , &HDB , &HD9 , &HD6 , &HD4 , &HD2 , &HCF , &HCD
Data &HCB , &HC8 , &HC5 , &HC3 , &HC0 , &HBD , &HBB , &HB8 , &HB5 , &HB2
Data &HAF , &HAD , &HAA , &HA7 , &HA4 , &HA1 , &H9E , &H9B , &H97 , &H94
Data &H91 , &H8E , &H8B , &H88 , &H85 , &H82 , &H7E , &H7B , &H78 , &H75
Data &H72 , &H6F , &H6C , &H69 , &H66 , &H62 , &H5F , &H5C , &H59 , &H56
Data &H53 , &H50 , &H4E , &H4B , &H48 , &H45 , &H42 , &H40 , &H3D , &H3A
Data &H38 , &H35 , &H32 , &H30 , &H2E , &H2B , &H29 , &H27 , &H24 , &H22
Data &H20 , &H1E , &H1C , &H1A , &H18 , &H16 , &H15 , &H13 , &H11 , &H10
Data &H0E , &H0D , &H0C , &H0A , &H09 , &H08 , &H07 , &H06 , &H05 , &H04
Data &H04 , &H03 , &H02 , &H02 , &H01 , &H01 , &H01 , &H01 , &H01 , &H00
Data &H01 , &H01 , &H01 , &H01 , &H01 , &H02 , &H02 , &H03 , &H04 , &H04
Data &H05 , &H06 , &H07 , &H08 , &H09 , &H0A , &H0C , &H0D , &H0E , &H10
Data &H11 , &H13 , &H15 , &H16 , &H18 , &H1A , &H1C , &H1E , &H20 , &H22
Data &H24 , &H27 , &H29 , &H2B , &H2E , &H30 , &H32 , &H35 , &H38 , &H3A
Data &H3D , &H3F , &H42 , &H45 , &H48 , &H4B , &H4E , &H50 , &H53 , &H56
Data &H59 , &H5C , &H5F , &H62 , &H66 , &H69 , &H6C , &H6F , &H72 , &H75
Data &H78 , &H7B , &H7E
'===============================================================================
Симуляция Протеус 7.10 sr0 + исходники Bascom 2.0.7.1 - скачать
Поделиться62017-11-13 04:42:34
Генератор синусоиды 25 Гц на Attiny85
Симуляция (Протеус 7.10) + исходник (Bascom 2.0.7.1) - скачать
Поделиться102019-03-04 07:20:44
Генератор синуса, 127 значений, Bascom + ASM
Целый период + 2 полупериода - выбирается здесь ( Const Sine_period = 0 'Если 1, выводится чистая синусоида на OCR0a и OCR0b )
Симуляция + исходник - скачать


















