|
Помогите пожалуйчта в разработке устройства, Вкратце: хочу собрать LED DIMMER |
|
|
|
Aug 7 2008, 12:50
|
Группа: Новичок
Сообщений: 11
Регистрация: 15-10-07
Пользователь №: 31 381

|
друзья помогите разработать устройство. вкратце объясню задачу. необходимо реализовать схему управления яркостью светодиода. На эту схему подаем внешний синхроимпульс, от внешнего источника тактовых импульсов (с переменной частотой, в звуковом диапазоне). От этого синхроимпульса разрабатываемая схема должна обеспечить ОДНОКРАТНОЕ ПЛАВНОЕ (в течение 0,5...2 секунд) ЗАГОРАНИЕ/УГАСАНИЕ светодиода. В качестве внешнего источника синхроимпульсов будет использована схема выделения сигнала ритма из аудиосигнала. Т.е. логика очень простая: один синхроимпульс => одно плавное зажигание/угасание светодиода. Как я понял яркостью свечения светодиода эффективнее всего управлять с помощью ШИМ. Исходя из вышесказанного, то, что получит светодиод, представляю примерно так:  все это конечно хорошо в теории, но как это реализовать на практике??? нашел вот эту схемку  собрал, в принципе все работает, плавно разгорается и плавно гаснет, частота регулируется переменником. НО! мне то нужно управлять свечением от ВНЕШНЕГО источника синхроимпульсов. а здесь как я понял самостоятельный мультивибратор, и как эту схему засинхронизировать извне - ума не приложу. есть еще схемка управления свечением светодиода на таймере 555:  возможно у умных людей появятся мысли, возможно получится для моих целей использовать и ее? ЗЫ. в электронике немного понимаю, но в данном случае моих скромных навыков и знаний не хватает. Поэтому буду бесконечно признателен всем откликнувшимся  ЗЫЗЫ. Очень очень нужно!
|
|
|
|
|
 |
Ответов
|
Aug 9 2008, 10:29
|
Участник

Группа: Новичок
Сообщений: 47
Регистрация: 7-05-07
Пользователь №: 27 573

|
Книжки покупать это конечно хорошо, но не всегда необходимо. К тому-же в бОльшей части литературы по МК на русском языке встречаются опечатки (и ладно бы орфографические). Например недавно (не помню в какой книге) видел совет устанавливать (именно устанавливать, а не детектировать) бит с помощью команды and. И таких примеров много. IMHO лучше сначала ознакомиться с электронной версией книги, а потом уже покупать, если сильно понравится. Ну и стОит подумать о приобретении отладочной платы для выбранного типа МК.
|
|
|
|
|
Aug 9 2008, 10:48
|

Гуру
     
Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287

|
Цитата(drovik @ Aug 9 2008, 12:29)  Книжки покупать это конечно хорошо, но не всегда необходимо.  И действительно, чего там читать? Там одни опечатки... Цитата К тому-же в бОльшей части литературы по МК на русском языке встречаются опечатки (и ладно бы орфографические). Например недавно (не помню в какой книге) видел совет устанавливать (именно устанавливать, а не детектировать) бит с помощью команды and. И таких примеров много. Что Вы говорите? Ужас, какое надругательство над МК! Надо было запомнить сию крамольную книгу! А вот в составе компилятора HT-PICC есть даже примеры, содержащие аналогичные вопиющие безобразия: Цитата void lcd_write(unsigned char c) { DelayUs(40); LCD_DATA = ( ( c >> 4 ) & 0x0F ); LCD_STROBE(); LCD_DATA = ( c & 0x0F ); LCD_STROBE(); } Как им только в голову пришло? А наши переводчики тупо повторяют такие вредные советы... Цитата IMHO лучше сначала ознакомиться с электронной версией книги, а потом уже покупать, если сильно понравится. Ну и стОит подумать о приобретении отладочной платы для выбранного типа МК. Согласен. Только если сильно понравится, стоит покупать. А лучше сразу с отладочной платы начинать.
|
|
|
|
|
Aug 9 2008, 17:45
|
Участник

Группа: Новичок
Сообщений: 47
Регистрация: 7-05-07
Пользователь №: 27 573

|
Цитата(Herz @ Aug 9 2008, 14:48)  Что Вы говорите? Ужас, какое надругательство над МК! Надо было запомнить сию крамольную книгу! А вот в составе компилятора HT-PICC есть даже примеры, содержащие аналогичные вопиющие безобразия: Как им только в голову пришло? А наши переводчики тупо повторяют такие вредные советы... Что-то я тут не заметил установки битов... Обычная работа с полубайтами. Вы меня прям засмущали... Я себя к профессионалам не отношу в области программирования МК, но хотя-бы уровню любителя надеюсь соответствовать  А в той книге советовали устанавливать бит с помощью операции "и" между регистром и числом 0х80  Подобный совет я видел в переводе книги Тревора Мартина по LPC2000, но в последнем случае речь шла об установке флага, хотя мне как-то привычнее считать установкой флага перевод соответствующего бита в 1.
|
|
|
|
|
Aug 9 2008, 20:29
|

Гуру
     
Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287

|
Цитата(drovik @ Aug 9 2008, 19:45)  Что-то я тут не заметил установки битов... Обычная работа с полубайтами. Вы меня прям засмущали... Я себя к профессионалам не отношу в области программирования МК, но хотя-бы уровню любителя надеюсь соответствовать  А в той книге советовали устанавливать бит с помощью операции "и" между регистром и числом 0х80  Подобный совет я видел в переводе книги Тревора Мартина по LPC2000, но в последнем случае речь шла об установке флага, хотя мне как-то привычнее считать установкой флага перевод соответствующего бита в 1. Что же Вас смутило? Чем работа с полубайтами отличается от работы с битами? Операция "И" между регистром и числом 0х80 установит седьмой бит (счтая от нуля) в регистре, как и требуется. Ведь шестнадцатиричное число 80 в двоичном коде выглядит так: 10000000. Двоичную арифметику и любителю следует понимать. А флаг - это и есть бит, как правило. P.S. Я, кажется, понял, что Вас смутило. Остальные биты в регистре будут, конечно, сброшены. Но часто именно это и есть то, что нужно. Если же требуется сохранить контекст, пользуются операцией "ИЛИ".
Сообщение отредактировал Herz - Aug 9 2008, 20:42
|
|
|
|
|
Aug 9 2008, 20:39
|
Группа: Новичок
Сообщений: 11
Регистрация: 15-10-07
Пользователь №: 31 381

|
2 Herz&drovik как в анекдоте: папа а ты с кем сейчас разговаривал?
|
|
|
|
|
Aug 10 2008, 06:29
|
Участник

Группа: Новичок
Сообщений: 47
Регистрация: 7-05-07
Пользователь №: 27 573

|
Цитата(Herz @ Aug 10 2008, 00:29)  Что же Вас смутило? Чем работа с полубайтами отличается от работы с битами? Операция "И" между регистром и числом 0х80 установит седьмой бит (счтая от нуля) в регистре, как и требуется. Ведь шестнадцатиричное число 80 в двоичном коде выглядит так: 10000000. Двоичную арифметику и любителю следует понимать. А флаг - это и есть бит, как правило. P.S. Я, кажется, понял, что Вас смутило. Остальные биты в регистре будут, конечно, сброшены. Но часто именно это и есть то, что нужно. Если же требуется сохранить контекст, пользуются операцией "ИЛИ". Операция "и" не может установить бит, если под установкой подразумевать перевод бита из "0" в "1". Если до "и" это бит был "0" он так им и останется. А вот с флагом отдельный разговор. Четкого определения мне не попадалось (наверное потому, что не искал), но в регистре CPSR ядра ARM7 для разрешения прерываний соответствующий бит нужно перевести в "0", что и называется в книге Тревора установкой флага. А с двоичной арифметикой уже вроде более 10 лет знаком. Может у нас с Вами разные представления о термине "установка бита" ? Цитата(Still @ Aug 10 2008, 00:39)  2 Herz&drovik как в анекдоте: папа а ты с кем сейчас разговаривал?  А что делать, если автор темы редко бывает
Сообщение отредактировал drovik - Aug 10 2008, 06:30
|
|
|
|
|
Aug 10 2008, 07:51
|

Местный
  
Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530

|
Цитата(Herz @ Aug 10 2008, 10:21)  Ну что ж, Вы правы, конечно. Это я поторопился с сарказмом. Однако для отрицательной логики (как в приведенном примере) установка флага (перевод в "0") именно операцией "И" и достигается. В конец решили запутать человека с установкой битов и флагов?Still, если надумаете изучать АВР то посмотрите на следующие макросы: Код /* Установка и сброс бит в регистрах ввода-вывода с помощью макроса */ #define SETBIT(ADDRESS,BIT) (ADDRESS |= (1<<BIT)) #define CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT)) /* Макрос для проверки одного бита в области ввода-вывода */ #define CHECKBIT(ADDRESS,BIT) (ADDRESS & (1<<BIT)) /* Пример использования */ if(CHECKBIT(PORTD,PIND1)) /* Проверка, PIND1 = 1? */ { CLEARBIT(PORTD,PIND1); /* Сброс PIND1 порта D*/ } if(!(CHECKBIT(PORTD,PIND1))) /* Проверка, PIND1 = 0? */ { SETBIT(PORTD,PIND1); /* Установка PIND1 порта D */ } Теперь по флагам регистров МК (статуса таймера, и2с УАПП и др). АВР такая структура, что сброс флага производится записью единицы. Неправильный пример Код GIFR |= (1<<INTF0); // сброс флага, Правильно так Код GIFR = (1<<INTF0); // сброс флага, Удачи
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
Сообщений в этой теме
Still Помогите пожалуйчта в разработке устройства Aug 7 2008, 12:50 Dog Pawlowa Цитата(Still @ Aug 7 2008, 15:50) друзья ... Aug 7 2008, 15:16 Still Цитата(Dog Pawlowa @ Aug 7 2008, 19:16) Д... Aug 7 2008, 15:37 Herz В принципе, последняя схемка подойдёт. Но понадобя... Aug 7 2008, 17:27 Still спасибо что откликнулись
итак, вот накидал схем... Aug 8 2008, 09:36 Herz Похоже. Кое-что придётся поправить по ходу. Рекоме... Aug 8 2008, 12:44 one_man_show Уважаемый Still, посчитайте количество паек, колич... Aug 8 2008, 13:47 Herz Цитата(one_man_show @ Aug 8 2008, 15:47) ... Aug 8 2008, 14:08  Still все вы правы конечно, да я и сам знаю что давно по... Aug 8 2008, 19:06   Herz Цитата(Still @ Aug 8 2008, 21:06) Но все ... Aug 8 2008, 21:06 domowoj Конечно.
Если познал МК появляется стереотип мышле... Aug 10 2008, 01:57
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|