Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[7]

Строки 30-40 аналогичны строкам 15-25, но с переменой частот в двух каналах. Прошивка МК и опробование в работе

Компиляция программы производится средствами пакета WinAVR: MFile и Programmers Notepad (PN). Зашивать МК можно как и прежде, используя программу PonyProg. Кстати, на сайте ее автора Clau-dio Lanconelli появилась новая версия 2.06f, релиз от 5 марта 2005 г. (http: www.lancos.com/e2p/V2 06/ponyprogV206f.zip, 606 Кб, рис.4). Интерфейс программы остался прежним, добавлены новые типы МК, исправлены неточности.

В пакете WinAVR тоже имеется свой программатор в виде инструмента AVRDUDE (AVRDownloder Uploader, автор Brian S. Dean), который позволяет зашивать МК не хуже, чем PonyProg, причем быстрее и проще. Единственное, что останавливает от его широкого применения - это отсутствие поддержки COM-адаптеров (см. рис.5, 6 в "Ступени 1"), а также относительная сложность процедуры зашивки фьюзов. Тем не менее, ознакомиться с возможностями запасного программатора полезно.

Чтобы активизировать AVRDUDE, необходимо при создании make-файла указать параметры его интерфейса. Порядок действий. Запустить на выполнение программу MFile: "Пуск - Программы - WinAVR -MFile". Последовательно заполнить "анкету":

в пункте "Makefile-Main file name...-Main file" ввести имя проекта "avr5l";

в пункте "Makefile-MCU type-ATmega" выбрать тип микросхемы "atmega8";

в пункте "Makefile-Optimization level" задать уровень оптимизации 2;

в пункте "Makefile-Debug format" установить формат "AVR-ext-COFF (AVR Studio 4.07+, VMLab 3.10+)";

в пункте "Makefile-Programmer" указать тип адаптера "pony-stk200";

в пункте "Makefile-Port" задать номер параллельного порта "lptl" или "lpt2", "lpt3".

Далее следует сохранить полученный файл: "File-Save as...выбрать папку, где находится файл "да.с-казать имя "makefiles-Сохранить". Закрыть программу "File - Exit".

Перед программированием МК надо зашить его фьюзы согласно строке 3 листинга 1. Лучше всего это сделать с помощью PonyProg, где они наглядно размещены на панели. Графическая оболочка AVRDUDE C:\WinAVR \bin\avrdude-gui.exe еще слишком "свежая", да и вводить в ней числами фьюзы неудобно и даже опасно. Например, ошибешься при переводе фьюза в HEX-код, получишь "0" в разряде RSTDISBL (см. "Ступень 3") и придется обращаться за помощью к параллельному программатору.

После зашивки фьюзов можно программировать МК, для чего открыть программу PN, загрузить в нее листинг 1 и откомпилировать через пункт "Toools - [WinAVR] Make All". Небольшой нюанс. При компиляции появится предупреждение "Warning: "F CPU" redefined". Это следствие того, что в строке 6 листинга 1 указано значение тактовой частоты 1 МГц, а в make-файле по умолчанию оно установлено 8 МГц. Поскольку главным является все же листинг Си-программы, то число F CPU в make-файле будет проигнорировано. Компиляция пройдет успешно. Чтобы подобное сообщение не появлялось, надо открыть Makefile в PN и заменить строку 51 "F CPU 8000000" строкой "F CPU 1000000". Если забудете это сделать - не беда, ошибки в работе контроллера не произойдет.

Подключить к МК LPT-адаптер (см. рис.3, 4 в "Ступени 1"). Подать питание на разработанное устройство. Не выходя из PN, выбрать пункт "Tools - [WinAVR] Program", и через пару секунд МК будет запрограммирован. Меньшее по сравнению с PonyProg время программирования связано с тем, что AVRDUDE при верификации проверяет не полный объем FLASH-ПЗУ, а только ту часть, которая была записана.

Эксперименты с "иллюзией октавы"

Для проведения экспериментов потребуются добровольные помощники. Каждому из них предлагается в течение 20...30 с прослушать звуковой сигнал "Иллюзия октавы" в стереонаушниках. Желательно, чтобы наушники имели большие амбушюры для хорошей изоляции звукового потока из одного уха в другое. Темп выдачи нот можно изменять, нажимая и удерживая до появления секундной паузы кнопку SB1.

После прослушивания меняют наушники местами и повторяют эксперимент.

Если испытуемый утверждает, что звук высокого тона 800 Гц слышен преимущественно в правом ухе, то его "ведущее ухо" - правое и он с большой долей вероятности правша. У левшей обычно нет четкой локализации эффекта, они слышат смешанные звуки, часто с биениями. Особый интерес представляют случаи, когда "правша по жизни" имеет "левосторонний" слух и наоборот. Это может быть признаком необычных способностей (таланта) у человека, надо только внимательнее к нему приглядеться.

Генератор биоритмов

В современной физиологии существует метод исследования функ-

Листинг 1

"Иллюзия октавы", =AVR, ступень 5= Журнал РА-5/2005 =1 Make: Name=avr51, MCTJ=atmega8, Level=2, Debug=VMLab =2 ♦ыозы: SUT0=CKSEL3=CKSEL2=CKSELl="ranO4KM" (1 МГц) =3 #include <avr/io.h> Библиотека ввода-вывода =4

#include <avr/delay. h> Библиотека задержек =5

ttdefine F CPU 1000000UL Тактовая частота 1 МГц =6

#define TIK 208 Константа для задержки 624 икс =7

=======ОСНОВНАЯ ПРОГРАММЛ========== =8

int main(void) Начало основной программы =9

{ unsigned char a, temp=100; Счетчики тактов нот =10 Частота 400 (800) Гц, темп 2,1...5,7 Гц =11 PORTB = PORTC = PORTD = OxFF; Входы с резисторами=12 DDRB = BV(PB0) I BV(PB1); PB0, PB1 выходы "1" =13 while (1) Бесконечный цикл из чет.-нечет, тактов =14

-) L=800 Гц, R=400 Гц =15 Задержка на 624 икс =16 Лог."0" (PB0), 800 Гц =17 Задержка на 624 икс =18 Лог."1" (PB0), 800 Гц =19 Лог."0" (РВ1), 400 Гц =20 Задержка на 624 мкс =21 Лог."0" (EB0), 800 Гц =22 Задержка на 624 мкс =23 BV(PB1); Две лог."1" =24

} Окончание длительности нечетного такта =25

if (bit is clear(PINB, РВ2)) Если нажата SB1 =26 ( if ((temp += 30) > 200) temp=70; Смена темпа =27 for (а=0; а<4; а++) delay loop 2 (62500); 1 с=28 } Окончание действий после нажатия кнопки SB1 =2 9 for (a=temp; а > 0; a--) L=400 Гц, R=800 Гц =30

( for (a=temp; а > 0; а { delay loop l(TIK) PORTB &= ~ BV(PB0) delay loop l(TIK) PORTB = BV(PB0) ; PORTB &= ~ BV(PB1) delay loop l(TIK) PORTB &= ~ BV(PB0) delay loop l(TIK) PORTB = BV(PBO)

{ delayloopl(TIK); Задержка на 624 мкс =31

Лог."0" (РВ1), 800 Гц =32 Задержка на 624 икс =33 Лог.Ч" (РВ1) , 800 Гц =34 Лог."0" (PB0), 400 Гц =35 Задержка на 624 мкс =36 Лог."0" (РВ1), 800 Гц =37 Задержка на 624 мкс =38 BV(PBl) ; Две лог.Ч" =39 Окончание длительности четного такта =40 Переход к нечетному такту =41 WinAVR-20050214, длина программы 246 байтов =42

delay loop l(TIK) PORTB &= ~ BV(PB1) delay loop l(TIK) PORTB = BV(PB1); PORTB &= -v BV(PB0) delay loop l(TIK) PORTB &= ~ BV(PB1) delay loop l(TIK) PORTB = BV(PB0)


ционирования головного мозга с помощью снятия электроэнцефалограммы (ЭЭГ). На голову пациента надевают специальные датчики, которые улавливают биопотенциалы. Ученые выяснили, что регистрируемые сигналы содержат сложную смесь периодических колебаний. Если применить для их анализа разложение в ряд Фурье, то можно оценить частотный спектр сигналов и амплитуду каждой составляющей.

Мозг человека в разных состояниях генерирует разные сигналы ЭЭГ с преобладание тех или иных частот, или ритмов (табл.1). Наблюдательный читатель может спросить, почему названия ритмов идут не по порядку букв греческого алфавита? Дело в том, что изобретатель метода ЭЭГ, австрийский физиолог Ганс Бергер (Hans Berger), проводя опыты в 1924-29 гг., сначала обнаружил колебания на частоте 10 Гц и назвал их "альфа". В последствие были открыты "бета"-, "дельта"-, "тета"-ритмы и еще ряд промежуточных поддиапазонов в них.

Если головной мозг представить в виде электронного устройства, то кроме "передатчика", генерирующего ритмы, в нем должен быть и "приемник". Напрашивается идея "засинхронизировать" внутренние биоритмы внешним генератором воздействия. Таким способом можно мягко, ненавязчиво подсказать мозгу время, когда пора спать, а когда, наоборот, надо заставить организм работать на полную мощность.

Воздействие может производиться через слуховой, зрительный и тактильный каналы. Самым щадящим и безопасным следует признать звуковой раздражитель. Для этого необходим прибор, который бы генерировал сигналы в диапазоне биоритмов 0,5...30 Гц. Однако эти частоты напрямую человек не ощущает, их необходимо перенести на звуковую поднесущую.

В частности, известен эффект бинауральных биений, когда на левое ухо подается, например, частота 400 Гц, а на правое ухо - 410 Гц. При прослушивании такой смеси вместо двух отдельных тонов отчетливо слышен усредненный звук частотой 405 Гц, модулированный по амплитуде разностной частотой 10 Гц. В табл.2 приведены субъективные ощущения человека при разных частотах модуляции. Именно этот способ и будет использоваться в экспериментах.

Исходные данные для разработки. Двухканальный генератор с изменяемой частотой прямоугольных импульсов в диапазоне 200...400 Гц. Сдвиг частот между каналами должен соответствовать ритмам из табл.1. Обеспечить кнопочный выбор поддиапазонов, световую индикацию и плавное регулирование громкости.

Электрическая схема генератора биоритмов показана на рис.5. Кнопками SB1-SB4 выбирают один из четырех ритмов, индикацию которых обеспечивают светодиоды HL1-HL4. Выходные сигналы через элементы RP1, R5, R6, C2, C3 поступают на стереонаушники. Переменный резистор RP1 регулирует громкость звучания одновременно в двух каналах. Он может быть заменен двумя одиночными резисторами.

Кнопкой SB5 циклически меняют частоту основного тона, согласно шести градациям, в диапазоне примерно 150...450 Гц. Почему "примерно"? Потому что тактовый генератор МК DD1, используемый для перестройки частоты, берется внутренний, а пределы его девиации в DATASHEET на ATmega8 оговорены лишь приблизительно, с погрешностью ±25...50%.

Переключатель SA1 позволяет изменять тембр звука, значительно оживляя его за счет перекрестной модуляции. Через конденсатор С4* сигналы левого и правого каналов сдвигаются по фазе и частично смешиваются. В итоге получается красивый объемный эффект, напоминающий звучание приставки "лесли" от электрогитары.

Си-программа генератора биоритмов приведена в листинге 2.

Строка 3. Фьюзы установлены для режима внутреннего RC-генера-тора частотой 8 МГц. Соответственно в строке 6 указано это значение в Герцах.

Строка 16. Новинка - внутренний регистр контроллера под названием OSCCAL (OSCillator CALibration). Этот регистр незримо участвует во всех операциях, когда МК работает от внутреннего RC-ге-нератора. При каждом включении питания в него автоматически заносится число, которое с точностью до 3% устанавливает тактовую частоту, максимально близкую к номиналу 1 МГц (2, 4 или 8 МГц). Просмотреть это число можно через PonyProg, выбрав пункты меню: "Command - Read Osc. Calibration Byte". В частности, для ATmega8 OSCCAL=167 или в HEX-виде 0xA7.

Тактовую частоту генератора можно в любой момент времени подстроить программно, причем довольно в широких пределах. На рис.6 показана типовая зависимость частоты генерации от содержимого регистра OSCCAL. Как видно, обнуление регистра (строка 16) приводит к уменьшению частоты с 8 до 4,3 МГц, т.е. почти в 2 раза! Приняв к сведению, что график приблизительный, точных расчетов по нему делать нельзя.

Таблица 1

Диапазон частот, Гц

Уровень, мкВ

Физиологические особенности

0.5...4

10...250

Фаза глубокого сна, бессознательное состояние

10...200

Фаза быстрого сна, полудрема, работа подсознания, медитация, гипноз, характерно у детей

30...100

Расслабленность, дневная мечтательность, абстрактное мышление, запоминание, ясное, светлое состояние, хорошая адаптация к изменениям, творческое озарение

13...30

Активное, бодрствующее сознание, логическое мышление, концентрация внимания, решение проблем,стресс

Таблица2

Диапазон

частот,

Субъективные ощущения

Мягкий розлив

Переход от биений к вибрато

Зона вибрато у певцов

Тета, альфа

Вибрато, переходящее в тембр

10...15

Острый розлив

Альфа, бета

15...20

Бурление

20...60

Диссонанс

Строки 19,20. Стандартный прием получения на линии PB0 прямоугольных импульсов, по форме близких к меандру, с частотой, определяемой числом 64 в строке 19.

Строки22-33. Проверка нажатия кнопок SB1-SB4 и изменение переменной "sdvig", которая определяет разность частот в левом и правом каналах. Поскольку абсолютная величина этой переменной не так велика, как хотелось бы (не хватает быстродействия МК), то частоты биоритмов получаются фиксированными 3, 7, 12, 16 Гц. Строго говоря, более плавную перестройку частоты можно было бы получить, используя прерывания, но цель рассматриваемой Си-программы - показать способы прямого формирования сетки частот через задержки во времени.

Строки 34-37. Формирование шести градаций частоты тона путем изменения содержимого регистра OSCCAL согласно ряду: 0x00, 0x33, 0x66, 0x99, 0xCC, 0xFF.

Строка 38. Чтобы пауза после нажатия кнопок была примерно одинаковой для всех тактовых частот вне зависимости от OSCCAL, переменная "b" каждый раз вычисляется через переменную "c".

Строка 43. Формирование на линии PB1 сигнала, близкого к меандру, с частотой, зависящей от переменной "sdvig". Итого, сигнал PB1 меняется по частоте, а сигнал PB0 (строка 20) - нет.


Эксперименты с генератором биоритмов

Считается, что бинауральные явления вызывают эффект синхронизации работы левого и правого полушарий головного мозга, характерные для медитации. Не случайно, что некоторые фирмы разрабатывают методики улучшения работоспособности, памяти, уверенности в себе именно за счет воздействий на организм с частотами альфа и бета-ритмов.

Известны и компьютерные программы, например, BrainWave Generator (http: www.bwgen.com/bwgen31.exe, 1,2 Мб), "Мозгоправ" (http: andrei512.narod.ru/programs/Mozgoprav 03.2005.zip, 42 Кб), которые генерируют звуки, позволяющие расслабиться или мобилизоваться. Микроконтроллерный генератор биоритмов фактически является их упрощенным компактным вариантом.

Судя по откликам в Интернете, звуковое воздействие генератора биоритмов иногда может приводить к самым неожиданным последствиям, например к отказу от курения (http: www.bwgen.com/com-ments.htm)! Разумеется, основополагающим фактором здесь является не бинауральный эффект, а настроенность организма на подсознательное восприятие информации. Как здесь не вспомнить крылатую фразу известного врача и писателя Владимира Леви: "Самовнушение - это все, что с нами происходит".

Начинать работу с прибором надо в том диапазоне частот, который соответствует желаемому состоянию организма. Например, для достижения предсонного состояния следует нажать и удерживать кнопку SB2 до появления секундной паузы, затем кнопкой SB5 и переключателем SA1 установить экспериментально подобранную частоту (для каждого человека свою), при которой достигается наибольший эффект. Длительность воздействия: кому-то остаточно 10 минут, кому-то полчаса. В завершении сеанса громкость звука желательно постепенно уменьшить резистором RP1. Разумеется, нельзя в это время заниматься активной мозговой деятельностью (чтение книги), иначе и сна не будет, и книгу придется перечитывать заново.

Генератор биоритмов нельзя отождествлять с "волшебной палочкой". Это всего лишь помощник. Многое зависит от психоэмоционального состояния человека и его физиологических особенностей. Кроме того, головной мозг человека инстинктивно сопротивляется любому воздействию извне. Чтобы помочь ему расслабиться, надо, например, для погружения в сон принять наиболее удобную позу и свести к минимуму мыслительный процесс.

Если человек не восприимчив к генератору биоритмов или наблюдаются явления, противоположные ожидаемым (вместо сна бодрствование или наоборот), то эксперименты надо прекратить. В целом работа с генератором биоритмов рассчитана на потенциально здоровых людей, или, как шутят медики, на "не полностью еще обследованных". Категорически не рекомендуется прослушивать монотонные ритмы людям, склонным к эпилепсии и применяющим кардиостимуляторы.

Тестер инерционности слуха

Природа предусмотрительно ограничила человеку диапазон слышимых звуков от 10...20 Гц до 18...22 кГц. Естественный отбор закрепляет в последующих поколениях лишь те наследственные признаки, которые необходимы для выживания. К примеру, у дельфинов диапазон сдвинут в сторону ультразвука 100 Гц...200 кГц, что позволяет им пользоваться эхолокацией.

Кроме частотных свойств слух обладает инерционностью. Если какой-либо источник звука выключить на время, меньшее 30 мс, а затем снова включить (без щелчка), то человек не обнаружит паузы. Практическое следствие - эффект эха начинает ощущаться, если отраженный сигнал приходит с задержкой более 40...50 мс.

Степень инерционности слуха отличается у разных людей. Один из способов его оценки заключается в прослушивании "вращающегося звука" (Rotor Sound). Испытуемый помещается в центре комнаты, а вокруг него создается механическим или электрическим способом перемещающееся по кругу звуковое поле. В домашних условиях проще это сделать электрическим путем, расположив по сторонам комнаты как минимум 8 динамиков (рис.7). Если динамики будут излучать звук по очереди, слева направо или справа налево, то создается виртуальный источник "вращающегося звука". Скорость вращения легко изменить с помощью уменьшения или увеличения длительности звучания каждого динамика.

При определенной частоте вращения наступает эффект "объемности" звука, когда нельзя точно локализовать направление его прихода. Эта точка и будет характеризовать степень инерционности слуха человека.

Исходные данные для разработки. Число звуковых каналов - 8. Каналы должны работать по очереди одинаковое время, в согласованном кольце. Частота основного тона 1...2 кГц. Предусмотреть кнопочное изменение периода "вращения" в пределах 100...900 мс (ча-

Листинг 2

Генератор биоритмов, =AVR, ступень 5=, РА, №5, 2005 Make: Name=avr52, MCU=atmega8, Level=2, Debug=VMLab ♦ьюзы: SUT0=CKSEL3=CKSELl=CKSEL0="ranO4KH" (8 МГц) #include <avr/io.h> Библиотека ввода-вывода

#include <avr/delay.h> Библиотека задержек

#define F CPU 8000000UL Тактовая частота 8 МГц

=======ОСНОВНАЯ ПРОГРАММА==========

Начало основной программы Общий счетчик времени

int main (void) { unsigned int a=0;

unsigned char b, c=0; Вспомогательные счетчики =10 unsigned char sdvig=63; Делитель сдвига частоты =11 Два канала 200-400 Гц со сдвигом частоты 3-16 Гц =12 PORTB = PORTD = OxFF; В, D - входы с резисторами =13 DDRB = BV(PB0) BV(PB1); РВО, РВ1 выходы "1" =14 DDRC = OxOF; PORTC = OxFE; РСО-РСЗ выходы, НЫ=0 =15 OSCCAL=0x00; Начальная низкая частота генератора =16 while (1) Бесконечный цикл из чет.-нечет, тактов =17 { а++; Увеличение счетчика времени (0...65535) =18 if ((а%64)=0) Делитель на 64 для канала 1 =19

{ PORTB А= BV(PB0); Изменение РВО 0-1-0-1... =20 if (PIND != OxFF) Проверка нажатия кнопок =21 ( if (bit is clear(PIND,PD0)) Если нажата SB1=22 { sdvig = 63; PORTC = OxFE; Дельта, HL1 =23 } Установлен дельта-ритм 3 Гц, светится НЫ=24 if (bit is clear(PIND,PD1)) Если нажата SB2=25 { sdvig - 62; PORTC - OxFD; } Установлен тета-ритм 7 if (bit is clear (PIND, PD2)) ( sdvig - 61; PORTC - OxFB; } Установлен альфа-ритм 12 Гц, светится HL3=30 if (bit is clear(PIND,PD3)) Если нажата SB4=31 { sdvig = 60; PORTC = 0xF7; Бета, HL4 =32

} Установлен бета-ритм 16 Гц, светится HL4 =33 if (bit is clear(PIND,PD4)) Если нажата SB5=34 ( if (++c > 5) с = 0; Цикл смены частот =35 OSCCAL = с * 0x33; Новое значение частоты=36 ) Установлена новая частота генератора =37

for (Ь = 0; Ь < (8 + с * 7); Ь++) Цикл =38

{ delay loop 2 (62500) ; Задержка времени =39 } Выполнена пауза после нажатия кнопки =40

) Окончание действий при нажатии кнопок =41

} Окончание работы с каналом 1 =42

if ((a%sdvig)==0) PORTB A= BV(PB1) ; Канал 2 =43 } Переход к началу бесконечного цикла "while" =44 ) WinAVR-20050214, длина программы 328 байтов =45

Тета, HL2 =26 Гц, светится HL2 =27 Если нажата SB3=28 Альфа, HL3 =29

D 16 32 1я « «О 86 112 12> 1-1-1 1к 176 192 20в 221 osccal



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11]