Поиск по сайту

Результаты поиска по тегам 'ATmega328'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Категории и разделы

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
    • МК для начинающих
    • AVR
    • PIC
    • STM32
    • Arduino и Raspberry Pi
    • ПЛИС
    • Другие микроконтроллеры и семейства
    • Алгоритмы
    • Программаторы и отладочные модули
    • Периферия и внешние устройства
    • Разное
  • Товары и услуги
    • Коммерческие предложения
    • Продам-Отдам, Услуги
    • Куплю
    • Уголок потребителя
    • Вакансии и разовая работа
    • Наши обзоры и тесты
  • Разное
    • Конкурсы сайта с призами
    • Сайт Паяльник и форум
    • Курилка
    • Технический английский (English)
    • Наши проекты для Android и Web
    • FAQ (Архив)
    • Личные блоги
    • Корзина
    • Вопросы с VK
  • ATX->ЛБП Переделки
  • Юмор в youtube Киловольты юмора
  • Надежность и группы продавцов Радиолюбительская доска объявлений exDIY
  • разные темы Переделки

Блоги

Нет результатов для отображения.

Нет результатов для отображения.

Местоположения

  • Пользователи форума

Группа


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Найдено 9 результатов

  1. Здравствуйте! Мне нужно измерить длительность импульса. Для этого сначала применял внешнее прерывание, а теперь перешел на режим захвата таймера в Atmega 328. Однако сейчас происходит странное: Через определенное таймер просто останавливается. Гугл результатов не дает, ни у кого захват таймера 1 не останавливается. Подскажите пожалуйста, что делать? Среда разработки CodeVisionAVR v3.12. Сейчас попробовал версию 3.3, толку нет. Не работает. Код максимально упростил, но по прежнему толку ноль. Переполнение таймера 0 так же работает отлично, до тех пор, пока что-то не произойдет с прерыванием по захвату. Как только что-то произошло - мк останавливается... Может немножко подождать, и увеличить значение счетчика current_timp еще на пару значений... Совсем не знаю что делать. interrupt [TIM1_OVF] void timer1_ovf_isr(void) { TCNT1H = 0x00; TCNT1L = 0x00; } // Timer1 input capture interrupt service routine interrupt [TIM1_CAPT] void timer1_capt_isr(void) { TCNT1H = 0x00; TCNT1L = 0x00; // Это уже уровень танцев с бубном "авось поможет" - не помогает. current_timp++; // Все упрощено до максимума. Мне бы он хоть количество периодов для начала... // } } // Прерывание по переполнению первого таймера interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Обнуление счетного регистра. TCNT0=0x00; counter ++; if (counter > 10) { lcd_clear(); sprintf(buffer,"%d us", current_timp); lcd_gotoxy(0,0); lcd_puts(buffer); counter = 0; } } // Главный цикл программы void main(void) { #pragma optsize- CLKPR=(1<<CLKPCE); CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0); #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Port B initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Port C initialization // Function: Bit6=In Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out DDRC=(0<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0); // State: Bit6=T Bit5=1 Bit4=1 Bit3=1 Bit2=1 Bit1=1 Bit0=1 PORTC=(0<<PORTC6) | (1<<PORTC5) | (1<<PORTC4) | (1<<PORTC3) | (1<<PORTC2) | (1<<PORTC1) | (1<<PORTC0); // Port D initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRD=(1<<DDD7) | (1<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0); // State: Bit7=1 Bit6=1 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTD=(1<<PORTD7) | (1<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); // Делители таймера 0 рассчитаны таким образом , что его тактовая частота = 15,625 КГц. Расчет был на применение в схеме семисегментников, но с LCD индикатором будет информативнее. TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00); TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Настройка таймера 1 TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10); TCCR1B=(1<<ICNC1) | (1<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Разрешение прерывания по переполнению таймера 0 TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (1<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(1<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);
  2. Речь о следующей своей разработке — цифро-аналоговый преобразователь на основе ИМС ЦАП AK4490 от Asahi Kasei Microdevices. ИМС ЦАП AK4490 относится к 32 битным дельта сигма преобразователям. Основные характеристики: 32 бита, 768 кГц в PCM режиме, 11.2 МГц в DSD режиме. THD+N -112 дБ, что даёт теоретический уровень искажений~0.00025% (при Fs=44.1 кГц). Динамический диапазон 120 дБ в стерео режиме. Основные компоненты и узлы примененные в данном ЦАП — рекомендации даташитов. Преобразователь имеет 8 линейных стабилизаторов: 3.3 В питание логики VDD и аналоговое питание AVDD 5.1 В питание аналоговых цепей правого и левого канала, раздельное для каждого канала (VREF, VDD) ±9В питание ОУ повторителя VCML, ОУ фильтра Питание цифровой части осуществляется от линейного стабилизатора AMS1117-3.3. Все выводы питания ИМС отделены от источника L фильтрами. Питание аналоговых частей ИМС AK4490 осуществляется от малошумящих стабилизаторов TPS7A4901 и TPS7A3301 от TI. Применение данных стабилизаторов позволяет получить очень низкую шумовую полку, в районе -150дБ и ниже, а топология разводки звезда земляных цепей позволяет понизить уровень 50 Гц составляющей ниже -120 дБ. Гальваническая развязка шины I2S осуществляется с помощью ADuM251N. На печатной плате присутствует разъем I2S, напрямую подключенный к ИМС ЦАП. Так же плата ЦАП может выступать мастером сигнала MCLK для «пассивных» источников сигнала. Для управления переключением режимов Master/Slave и сеток частот используется микроконтроллер ATMega328. Так же микроконтроллер управляет режимами работы AK4490. Для управления ИМС ЦАП контроллер подключен по шине SPI. «Программный» режим работы раскрывает потенциал ЦАП наиболее полно, можно переключаться в режим DSD, доступно 5 типов фильтров. Так же контроллер позволяет подсчитывать частоту LRCK для вывода информации о битрейте по шине I2C, так же возможен перевод выходного сигнала в состояние MUTE при отсутствии входного сигнала I2S. Аналоговый фильтр построен по топологии FDA+ОУ. Фильтр состоит из 2х ступеней: фильтр 2 порядка на полностью дифференциальном операционном усилителе OPA1632, выход которого используется как балансный выход (в будущем на этот выход будет подключен усилитель наушников на TPA6120A2). В качестве напряжения смещения Vocm используется напряжение VCML от ЦАП, предварительно буферезированным ОУ NE5532. Напряжение смещения равно 2.67 вольта. Смещение нулевой точки сигнала позволяет уменьшить искажения, вызванные переключением транзисторов выходного каскада при переходе через ноль. Выходной сигнал никогда не пересекает ноль, поэтому можно сказать что ОУ работает в классе А. Преобразование из балансного сигнала в небалансный осуществляется фильтром сумматором на ОУ AD8066. Печатные платы заказывал на ALLPCB.COM, как всегда порадовали, заказывал 5 шт, прислали 7, за что огромное спасибо! Качество плат на высоте. Резисторы в фильтре необходимо устанавливать с допуском номинала не более 1%, конденсаторы в фильтре качественная керамика (NP0) или плёночные (WIMA). Конденсаторы в цепях питания — танталовые. Применение танталовых конденсаторов позволяет свести к минимуму деградацию ёмкости со временем, а так же улучшает работу стабилизаторов питания. В качестве ОУ можно применить THS4131 (FDA), LME49720, AD8066. Микроконтроллер можно установить любой из серии ATMegaX8 (48,88,168,328, так же индексом Р). Первичный стабилизатор питания применен хорошо зарекомендовавший себя PS-01 от DA-01, собранный на стабилизаторах 317/337. Измерения. Я был приятно удивлён, очень низким уровнем гармоник. THD=0.00015%. Уровень SINAD высоковат, поэтому работа по снижению уровня сейчяас ведётся. При уровне сигнала -7дБ, уровни 2 и 3 гармоники не превышают -130дБ. Так же удалось снизить уровень THD+N по сравнению с моим ЦАП DA-01 на CS4398. Субъективные впечатления. Звучание по сравнению с циррусовскими преобразователями немого другое. По ощущениям немного мягче и детальнее. В целом хочется отметить очень высокую детализацию. Честно говоря, после услышанного искать что-то другое уже и не хочется (хотя поиск не остановится, нужно для сравнения попробовать всё самое «вкусное» от именитых производителей. Нужно довести до ума DA-02 на AD1955, в загашнике скучает PCM1796). С уважением, Евгений.
  3. Здравствуйте! если у вас возникли вопросы и предложения по одноименной статье, задавайте пожалуйста сюда! Буду рад ответить!
  4. Atmega и Proteus

    Всем привет. В общем есть простая мигалка по переполнению нулевого таймера. ATmega328. В АВР студии все прекрасно работает, в протеусе-0 реакции. Либо протеус тупит, либо я не настроил в нем что-то, так как собрал в железе и прошил - все работает замечательно. Файлы исходника, прошивки и протеуса прилагаю. P_5.asm P_5.hex Timer.pdsprj
  5. uart + atmega328 + codevisionavr

    Вопрос. Почему не выполняется на atmega328 команды? Тестировал в протеусе на частоте 8 мгц (в настройках проекта 20 мгц, но думаю на это не так сильно должно влиять). На микроконтроллере запущен аппаратный таймер - работает нормально. Через юарт (настроен только TXD) всё время шлёт: 011111111101111111110... Но сам код не хочет выполняться: while (1) { delay_ms(0.4); // выполнилось при первом цикле PORTD.6=1; // выполнилось при первом цикле delay_ms(0.4); // выполнилось при первом цикле putchar(PORTC.0+PORTC.1*2); // заморозилось и далее не выполняется, но аппаратный таймер работает, юарт флудит (011111111101111111110...) // функцию putchar нашёл в интернете PORTD.6=0; } PORTD.6 - настроен на выход PORTC.0 и PORTC.1 настроены на вход. Включены подтягивающие резисторы. P.S. Проект сделан в CodeVisionAVR с использованием генератора кода.
  6. Режим Сна Atmega328

    Друзья помогите победить сон в мега328. Собираю часы, носимые, вопрос энергосбережения актуален! Вот что получается: Т2 тактируется от внешнего кварца 32768. Перехожу в режим сна (Idle или Power Save), Т2 срабатывает 40 раз все нормально, но потом встает колом. Пробуждаюсь через INT1 и наблюдаю стоячие часы.. В активном режиме все хорошо! Уже Один раз на работу по ним встал) Уже допрошивался, мега померла... щас буду сдувать режим сна: SMCR= (0<<SM2)|(0<<SM1)|(0<<SM0); //Idle // Кнопка Cон if((PIND.3==0)&&(wake_up==0)) { DDRC = 0b00000010; PORTD.0=1; //Выключить питание дисплея SMCR = SMCR | (1<<0); //Разрешить СОН бит 0 в 1 pause_while(); // Отжатие кнопки EIMSK = EIMSK | (1<<1); //Включить внешнее прерывание INT1 бит 1 в 1 EIFR = EIFR | (1<<1); //Включить внешнее прерывание INT1 бит 1 в 1 son=1; #asm("sei") #asm("sleep") } Прерывание T2 interrupt [TIM2_OVF] void timer2_ovf_isr(void) { time_schet(); //Фукция счета времени //----------------------/////////////// if(light==1) {light_PWM();} //----------------------/////////////// switch (son) { case 1: SMCR = SMCR | (1<<0); //Разрешить СОН бит 0 в 1 #asm("sei") #asm("sleep") break; case 0: //Индикация активный режим
  7. Использую AVR Studio 4. В качестве подопытного - Arduino Pro Mini 5V/16MHz и BMP085. Пытаюсь отправить данные - не получается. Отдельно CDC-IO шлет данные. Отдельно код датчика BMP085 шлет данные в UART. А вместе - не получается никак. "Основано" на оригинальном CDC-IO Код для датчика взят здесь Подскажите пожалуйста, как поправить код, чтобы на ПК в терминале я получал данные датчика. Код в прилагаемом архиве С Уважением. CDC.zip
  8. Всё-таки конкурс стимулирует Посмотрел в раздел, и погрустнело: слишком большой разрыв между новичками и опытными, в результате первых никто не учит (здесь, по крайней мере), а вторым не с кем поделиться разработками. Я сам себя ставлю где-то посередине (ближе к новичкам всё-таки), и сейчас, наверное, самое время поделиться знаниями. Итак, разжившись платой Arduino Uno, я как-то начал почитывать офсайт, и совершенно незаметно для себя (примерно за полгода) дошёл до того, что сделал девайс со следующими возможностями: - 3 независимых вольтметра, отображающие напряжения в милливольтах на LCD-дисплее (изначально подразумевалось использование в качестве термометров посредством микросхемы LM35 или аналогичной) с зумером, сигнализирующем, в случае, если напряжение на каком-либо входе превысило заданное значение - 3 управляющих выхода для подключения нагрузки, работающие циклами: работа-отдых-работа-отдых, причём длительность работы и отдыха выставляется отдельно для каждого выхода при помощи одного-единственного (!) переменного резистора и двух кнопок - Индикация состояния каждого из выходов на том же LCD-дисплее - Отсутствие необходимости в самой плате Arduino для работы. По отдельности это несложно. Про подключение дисплея к AVR уже даже специально сказано, что таких статей больше не нужно , про наличие аналогового входа знают, наверное, все, код не требует особых ухищрений, а статья про ардуино на макетной плате есть на arduino.cc. Но я сам получил огромное удовольствие от разработки устройства и, надеюсь, кто-то тоже получит, повторив этот путь или просто читая про прогресс чайника в микроконтроллерах О каждой части устройства будет рассказано отдельно и максимально подробно. Существенные вопросы по теме задавать можно и нужно, с несущественными, пожалуйста, подождите окончания повествования
  9. У меня seeeduino на Atmega 328, ну вот недавно пожелал сделать таймер для фотоаппарата с сервомашинкой. Проблема то в том, что сервомашинка несколько раз все сделает так как задумано, а потом повернется как ей захочется. ну потом опять начинает жужжать по программе. при чем это не на одной серве, я пробовал несколько Вот этот несчастный код. #include <Servo.h> Servo myservo; // create servo object to control a servo // a maximum of eight servo objects can be created void setup() { myservo.attach(9); // } void loop() { { myservo.write(180); // положение 180 delay(2000); // myservo.write(0); // положение 0 delay(300); // } } в общем как избавится от этих лишних движений?