Jump to content

Search the Community

Showing results for tags 'ATMega8'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

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

Blogs

There are no results to display.

There are no results to display.

Marker Groups

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

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


ICQ


Skype


Интересы


Город


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


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

Found 102 results

  1. Не могу запустить асинхронный режим. Ниже будет представлен код которым пытаюсь отладить. Там в 1 коде идёт работа от внутреннего источника таков (стоит 1МГц). После 5 миганий таймер должен перейти в асинхронный режим и мигать с частотой в 1 Гц. У меня происходит 5 миганий потом ничего. Фьюзы менять пробовал, ничего не дало, сейчас дефолт. Корпус кварца к земле тянуть пробовал - безрезультатно. Возможно что-то в подключении накосячил, если не видно на фото ниже, спрашиваете, нужно будет - нарисую схему. Компилятор Atmel Studio 7 Шью через Sind Prog 2.1.1 + USBasp 2.0 Вот код: .macro outi ldi r16, @1 out @0, r16 .endm .org $000 rjmp reset .org $001 reti .org $002 reti .org $003 reti .org $004 rjmp timer2_ovf .org $005 reti .org $006 reti .org $007 reti .org $008 reti .org $009 reti .org $00A reti .org $00B reti .org $00C reti .org $00D reti .org $00E reti .org $00F reti .org $011 reti .org $012 reti .ORG INT_VECTORS_SIZE reset: .equ portout=portd .equ ddrout=ddrd .def led=r17 .def mask=r18 .def counter=r19 outi spl,low(ramend) outi sph,high(ramend) outi ddrout, 0xff outi tccr2, 0b00000111 outi timsk, 1«toie2 ldi led,1«5 ldi mask,1«5 sei cycle: cpi counter, 10 breq offtim rjmp cycle timer2_ovf: inc counter out portout, led eor led, mask reti offtim: outi timsk, 0«toie2 rjmp asinxron asinxron: outi assr, 0b00001000 back: in r16, assr cpi r16, 0b00001000 brne back outi tccr2, 0b00000101 outi tcnt2, 0 outi ocr2, 0 outi timsk, 1«toie2 m1: rjmp m1 Верх меги на фото слева.
  2. Здравствуйте. Проблема такая:после прошивки USBASP ноутбук перестал его определять. Ошибка в диспетчере устройств:сбой запроса дескриптора USB устройства. Прошивал через Arduino UNO и avrdude. Прошивку скачать с офф сайта(последнюю на сайте https://www.fischl.de/usbasp/). Все прошло успешно. Почти)) Подскажите что можно сделать?
  3. Здравствуйте! Столкнулся со следующей проблемой: при сборке МД "Шанс" дошел до этапа прошивки МК, в итоге запорол 3 атмеги. Прошивал 3 способами: 1. Через Arduino UNO(As ISP) просто МК 2. Через Arduino UNO(As ISP) МК внутрисхемно(соответственно с обвязкой) 3. Через USB ASP внутрисхемно(с обвязкой соответственно). Вышло так, что в наличии кварца 11.0592 МГц не было, и я временно впаял 12 МГц. Прошил трижды всё правильно(фьюзы , контакты и т.д). После прошивки просто не видит МК (ну и плата не работает без МК.да и Бог с ней, но МК всеравно не могу считать). В чем причина понять не могу. Одно думаю, что это разница между 11.0592 и 12 МГц. Посоветуйте как решить проблему. Коды ошибок после прошивки во всех трёх случаях одинаковые: Sinaprog -invalid device signature Averdude -avrdude: warning: cannot set sck period, please check for usbasp firmware update target don't answer
  4. Есть картинка из сайта с фьюзами, есть программа avrdude_prog3.3 Как выставить правильно фьюзы чтобы не испортить мк? Незнаю как это сделать есть прямые и инверсные фьюзы, ГДЕ СТАВИТЬ ГАЛОЧКИ И КРУЖОЧЕК НА ПРЯМЫХ ИЛИ ИНВЕРСНЫХ?
  5. Добрый день. Опять ATMega, опять таймер 1, вопрос рутинный, но я за сегодня уже извёлся. Что я хотел сделать: МК должен рассчитывать положения моторов (SG90, регулируются временем импульса), включать их все вместе по совпадению таймера 2, затем рассчитывать, когда какой мотор надо отключить, получившийся список сортировать и ставить таймер 1. Таймер 1 сработал - выключили мотор, переставили таймер 1 на подальше. Снова сработал - снова что-то там сделали, увеличили OCR1A и так далее. Конечно же с первого раза не заработало и я начал упрощать и локализировать проблему. Получилось вот что: при срабатывании прерывания на совпадение таймера 1 с OCR1A я смотрю в отладчик - а там во-первых TIFR = OCF1A + OCF1B + TOV1, а TCNT1 равен чему угодно, но не OCR1A. Таймер как будто срабатывает не тогда. А когда я ставлю значение поменьше, допустим, OCR1A = 1000 и перехожу в пустой цикл while(1){}, то при наступлении OCR1A == 1000 просто ничего не происходит, прерывание не срабатывает. В целом так. Сейчас очень упрощённый, минимально не работающий код выглядит так: #define SET(_REGISTER, _BIT) _REGISTER |= 1 << _BIT #define UNSET(_REGISTER, _BIT) _REGISTER &= ~(1 << _BIT) void local_timer_setup(void) { SET(TCCR1B, CS10); //Setting timer 1 to x1 mode }; void local_timer_start(void) { TCNT1 = 0; SET(TIMSK, OCIE1A); //Allow timer 1 match A interruption }; void local_timer_off(void) { UNSET(TIMSK, OCIE1A); //Prohibit timer 1 match A interruption }; ISR(TIMER1_COMPA_vect) { PORTD = 0xFF; local_timer_off(); }; ISR(TIMER2_COMP_vect) { if (global_timer_count == 2) { global_timer_count = 0; TIFR = 0; PORTD = 0; if (current_step < 10) OCR1A = 0xFFF; else OCR1A = 0xFFFF; if (current_step == 20) current_step = 0; else current_step++; local_timer_start(); } else global_timer_count++; }; Полный код в файле. sei() не забыл. Кстати, таймер нормально выключать/включать через TIMSK, как у меня? Заранее спасибо. Scarecrow_embeded.rar
  6. Здравствуйте. Пока с Китая идет ардуинка, мне не терпится изучать МК. Купил ATMega8A-PU (по ссылке даташит), USB-программатор к ней нашел за более чем 3 тысячи рублей. Решил прошить программатором Громова. Вывода COM-порта наружу у меня на старом компе не оказалось. Снял крышку - нашел на материнской плате порт COM1. Подключил всё через беспаечную плату, UniProf сообщает, что "МК не откликнулся". Проверил соединения. Проверил, питание, 5 вольт подаю на 7 выход МК, землю на 8. Соединил на всякий случай 22 с 8. Решил проверить напряжения на участках. И был озадачен. Сначала, я обнаружил, что после диода на 4-м пине 0.72 вольта. Далее, приложив положительный щуп на 4-й пин (это тот, который идет на RESET), а отрицательный к GND - я получил -11 вольт (минус 11). Несколько раз перепроверил, не перепутал ли я землю с другим выводом (по цоколевке) - не должен. Правильно ли я понимаю, что это некорректная работа и напряжение?
  7. Добрый вечер уважаемые форумчане! Подскажите пожалуйста как отсеять шумы на выходе приемника ? Задача: сделать универсальный декодер команд ду на базе радио. На ИК лучах система пашет отлично, а вот на радио - не программируется , так как шумы влияют на систему. Тактовая частота МК равна 4мГц Код сейчас такой: // сам захват поступающих импульсов void decode_ir_data() { tim_system_rc=0x06; if(start) // если установлен старт бит - начинаем измерять импульсы { if(a<=111)data_ir[a] = timer_ir; if(a<112)a++; timer_ir=0; // обнуляем счетчик if(a>110) { a=112; // сбрасываем счетчик данных массива tim_stop=1; z=0; } } if(start==0) // старт бит установлен? нет! { if(IR && timer_ir>100) start=0x01; // да! else timer_stop(); } if(a==112) { start=0;} } void timer_stop() { tim_system_rc=0; if(start) { tim_stop=1;} start=0; a=0; timer_ir=0; } // External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { LED=1; if(flags_prog && WR_EN) { timer_stop(); } else { decode_ir_data(); } } // обучение командам ДУ case 0: if (cmd_rc==0) // команда не поступила { if(tim_stop==1) { #asm("cli") if(flags_prog && WR_EN==0) { for(d=0; d<111; d++) // delete data { com1[d]=0; } for(d=0; d<111; d++) { com1[d]= data_ir[d]; } } for(d=0;d<111;d++) // алгоритм определения поступившей команды { if (com1[d]>0 && com1[d]<0xFF ) { cmd_rc=1; d=111; // выходим из цикла timer_led_shou=0; } else { cmd_rc=0; } } } } else // команда поступила { if(++timer_led_shou > 20) {timer_led_shou=0; cmd_rc=0; } // выходим в захват команды timer_led=20; flags_interrupt=1; } if(++timer_led_ch>15) timer_led_ch=21; else CMD1=1; if(timer_led_ch>10 && timer_led_ch<15)CMD1=0; break; // распознавание "своей" команды. if (tim_stop==1) { #asm("cli") cmd.cmd_0=1; cmd.cmd_1=cmd.cmd_2=cmd.cmd_3=1; cmd.flags_0=cmd.flags_1=cmd.flags_2=cmd.flags_3=0; for(d=0; d<111; d++) { com_buff[d] = com1[d]; if (com_buff[d]<4)cmd.flags_0=1; if(cmd.flags_0==0) { if (((com_buff[d]+3) < data_ir[d]) || ((com_buff[d]-3) > data_ir[d])) // команда 1 cmd.cmd_0=0; } com_buff[d] = com2[d]; if (com_buff[d]<4)cmd.flags_1=1; if(cmd.flags_1==0) { if (((com_buff[d]+3) < data_ir[d]) || ((com_buff[d]-3) > data_ir[d])) // команда 2 cmd.cmd_1=0; } com_buff[d] = com3[d]; if (com_buff[d]<4)cmd.flags_2=1; if(cmd.flags_2==0) { if (((com_buff[d]+3) < data_ir[d]) || ((com_buff[d]-3) > data_ir[d])) // команда 3 cmd.cmd_2=0; } com_buff[d] = com4[d]; if (com_buff[d]<4)cmd.flags_3=1; if(cmd.flags_3==0) { if (((com_buff[d]+3) < data_ir[d]) || ((com_buff[d]-3) > data_ir[d])) // команда 4 cmd.cmd_3=0; } data_ir[d]=0; // стираем буфер } tim_stop=0; if(flags_prog) delay_ms(100); #asm("sei") } Буду всем крайне признателен за любую помощь в этом направлении!
  8. помогите разобраться с кодом .(послать значение по шине TWI на ЦАП PCF8591) не работает в протеусе ... #define F_CPU 8000000UL #include <stdlib.h> #include <avr/io.h> #include <util/delay.h> //*** ИНИЦИАЛИЗАЦИЯ ШИНЫ TWI ***/ void TWI_Init(void) { // Установка тактовой частоты F_scl = 100 кГц TWBR =32; TWSR &= (~((1<<TWPS1)|(1<<TWPS0))); TWCR |= (1 << TWEN); // Разрешение работы TWI-модуля } /*** ЗАПУСК TWI ***/ void TWI_Start(void) { TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN); while(!(TWCR & (1<<TWINT))); TWDR = 1001000; // передача адреса модуля PCF8591 в шину TWI TWCR=(1<<TWINT)|(1<<TWEN); while(!(TWCR & (1<<TWINT))); } /*** ОСТАНОВКА TWI ***/ void TWI_Stop(void) { TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO); while(TWCR & (1<<TWSTO)); // Ожидание завершения передачи условия СТОП } /***ПЕРЕДАЧА ДАННЫХ В TWI***/ void TWI_WriteByte(uint8_t data) { TWDR = data; // Загрузка данных в TWDR TWCR=(1<<TWINT)|(1<<TWEN); while(!(TWCR & (1 << TWINT))); // Ожидание завершения передачи данных } /*** ПЕРЕДАТЬ ЗНАЧЕНИЕ В PCF8591 ***/ void PCF8591_get(void) { TWI_Start(); // Запуск TWI TWI_WriteByte(0x40); //включаем цап TWI_WriteByte(100); // запись в ЦАП значения 100 TWI_Stop(); // Остановить TWI } int main(void) { TWI_Init(); while (1) { PCF8591_get; _delay_ms(50); } }
  9. Добрый день. Экспериментирую с платой TP4056 и MK ATmega8, конкретнее - пытаюсь собрать простенькое зарядное устройство с выводом параметров при зарядке/разрядке на АЦП МК. Для измерения тока нашел ACS712. Думаю, что получится выводить ток при зарядке (т.е. когда идет питание на TP4056 и нагрузка отключена) и при разрядке (питание выключено, нагрузка подключена). Нагрузка - резистор. Возникла проблема с измерением напряжения на АКБ. Вернее, проблема с отсутствием идей как это сделать. Может какую-нибудь схему делителя напряжения нужно сделать? Прошу помочь советом. Схему из пэинта прилагаю. Спасибо.
  10. Проблема с состовлением прошивки для энкодера (фирмы PEPPERL+FUCHS по данной программе выдает примерно 330-340 импульсов на оборот) линии данных подключил на int0 и int1 atmega8 прошивку пишe в codevision avr Включил прерывания int0 и int1 по любому изменению состояния и повешал на оба прерывания функцию обработки void enkoder(){ if((PIND.2==0)&&(PIND.3==0)){input = 0; }else if((PIND.2==1)&&(PIND.3==0)){input = 1; }else if((PIND.2==1)&&(PIND.3==1)){input = 2; }else if((PIND.2==0)&&(PIND.3==1)){input = 3; }; if(input!=buf){ switch(buf) { case 0:{ if(input == 1) impuls++; if(input == 3) impuls--; break; }case 1:{ if(input == 2) impuls++; if(input == 0) impuls--; break; }case 2:{ if(input == 3) impuls++; if(input == 1) impuls--; break; }case 3:{ if(input == 0) impuls++; if(input == 2) impuls--; break; }; buf = input; }; }; ugol=impuls; }; после того как вращаю энкодер и возвращаю его в обратное положение значение переменной impuls неправельное оно всегда больше 0 и с каждым вращением погрешность все больше подскажите что я делаю нетак.
  11. Здравствуйте. Может у кого есть печатная плата для отладочной платы на atmega8,32,128 в корпусе tqfp или attiny2313. Накопилось много распая с незалоченными камнями и очень хочется пустить их в дело и наконецто научиться хоть как-то программировать. Рисовать печатку самому не хватает опыта. Может у кого есть наработки? Прошу поделиться. Поиск выдает только отладочные платы в дип. А если и есть tqfp то в ардуиновском формате т.е без доп перефирии (же дисплеев,клавиатуры,7 сегментных индикаторов,потенциометров,энкодеров..и.т.д)
  12. Уважаемые электроники-программисты. Кто силен в CVAVR? Или может кто подскажет где уже есть. Есть вот такой прогресс бар https://radioparty.ru/programming/avr/c/361-lesson-lib-lcd написанный в Atmel Studio. Но у меня весь проект в CVAVR, попытался привязать его, но не поддается он мне. Помогите или дайте вектор. На Ардуино много, но там для меня совсем темень
  13. Всем привет! Подскажите, пожалуйста, как правильно считать данные с внешней eeprom по шине spi, в данном случае 25LC256. Написал код ссылаясь на даташит. Собрал схему в протеусе, подключил spi отладчик и вот что получил в итоге. Так же не могу проверить получается записать данные в память или нет. Весь код прикрепил. main.c
  14. Доброго дня всем! Не так давно решил опробовать использовать в схемах ATmega в корпусе TQFP и возник такой вопрос. На ней имеется аж три ноги на "-" и две под "VCC". Подсоединять нужно все или можно только по одной любой? Заранее благодарен за помощь.
  15. Здравствуйте! Стоит задача использовать atmega8 в качестве повторителя/блокиратора сигнала. Т.е. атмега должна просто повторить сигналы полученные на i2c, выводя их на любые другие две ножи. Можно просто написать программу, которая будет, в бесконечном цикле, снимать сигнал с пина и ставить такой-же на дублирующую ножку, но я не уверен, что такое решение оптимальное. Есть ли возможность как-то настроить атмегу, чтобы две ножки были соединены в одну цепь ? REPEATER должен либо пропускать сигнал от i2c к RECEIVER, либо нет.
  16. Всем доброго времени суток! В AVR-ках я новичёк и очень нуждаюсь в вашей помощи. Задача у меня следующая. Есть драйвер управления серводвигателем на ATmega88. Помимо основной задачи ATmega88 через 74HC164D выводит на сдвоенный 7-ми сегментный индикатор направление вращения мотора в виде анимации (вращает сегмент по или против часовой стрелки). Рядом есть некая поделка на ATmega8, одной из задач которой является определение направления вращения мотора и, в зависимости от направления, выполнение различных действий. Как мне это сделать? Как подружить две меги? Всем заранее спасибо.
  17. Цеплял радиомодули RF 433 МГц на Ардуино Уно и ""Ардуино" на Атмеге 8 (и наоборот) согласно видео и инфы с нета. Скечи заливал следующие. Но никак ни заработало. Какие могут быть причины? Ардуины исправные. Спс.
  18. Нарыл код в нете для FM радио на Ардуино на базе EM5807M. Залил это дело в Atmega8, все заработало, сделал простой выбор стаций. А кто знает как управлять програмно громкостью, басами, стерео/моно и др. Используемая часть кода ниже.
  19. KVN

    Atmega8 + 2 HC-SR04

    Всем привет. Застрял на подключении 2 датчиков HC-SR04 к Atmega8 (CVAVR 3.12). 1 настроен на прерывание 0, работает на таймере 0. (работает нормально) 2 настроен на прерывание 1, работает на таймере 1. (показывает ерунду если рассчитанное расстояние 1 датчика меньше чем расстояние 2 датчика). Фото прилагаю, видна часть кода. Прошу направить на путь истинный.
  20. Добрый день, уважаемые форумчане. Подскажите по такому вопросу. Есть девайс, управляет автоматикой гелиосистемы (4 датчика DS1820, два насоса, индикация на семисегментном индикаторе). В первой реализации был установлен микроконтроллерATtiny2313, но памяти уже не хватало. чтобы не переделывать плату, было принято решение заменить микроконтроллер на ATtiny4313. Но возникла одна проблема. Так как девайс уже установлен на объекте, все изменения нужно как-то проверить, а уже потом на месте прошивать. Но для проверки прошивки в Proteus модели ATtiny4313 нет, поэтому есть мысль сделать директивы условной компиляции, допустим в начале выбор целевого микроконтроллера и дефайны по используемым регистрам. Чтобы изменением одной строчки можно было компилировать либо под ATmega8 либо под ATtiny4313. Как добавить в Proteus больше памяти на основе ATtiny2313 не знаю. Если можно какой-то простой пример, чтобы на его основе сделать условную компиляцию.
  21. Добрые люди. Собрал данную схему. В протеусе все нормально работает. А вот когда прошиваю мк не работает. Принцип такой : если на первом входе компаратора сигнал больше второго то загорается первый если наоборот то второй. Где ошибка? Заранее благодарю
  22. Прошу Вашей помощи уважаемые форумчане! Автором В. Нефёдовым, г. Брянск была предложена интересная схема "Универсального микроконтроллерного зарядного устройства", http://www.radioradar.net/radiofan/power_supply/microcontroller_universal_charger.html#comment, которая была мной повторена. Схема рабочая, но по причине моей неграмотности в программировании - работает у меня не корректно! А именно не могу правильно записать при программировании через eXtreme Burner в EEPROM приведенные им коды: по адресу 00H - 2СН, по адресу 01H - 03H, по адресу 02H - 0BEH, по адресу 03H -64H. Не понимаю что, как и куда писать. Не судите строго! Прошу либо скиньте фотку как это должно выглядеть в программе, либо файл .eep
  23. Я хочу создать терморегулятор, который будет охлаждаться и должен работать с двумя двухскоростными вентиляторами. Целью терморегулятора является регулирование температуры T1 от 80 до 95 градусов, а T2 - от 95 до 110 градусов. Если температура превышает установленное значение T1, реле RL1 включается. Когда температура поднимается выше T1 до заданного значения T2, реле RL1 остается включенным и включается RL2. На дисплее отображается температура реальный Tr и степень, в которой вентиляторы Sp. Я пытался что-то сделать, но я начинаю программировать, и я не могу справиться с написанием этой логики. Если кто-то может помочь, я буду очень благодарен. Это то, что я сделал сейчас. Termo2ch.zip
  24. Приветствую всех. Как на атмега8 подать единицу на конкретную ногу, а не на весь порт? То есть if (PINB&(1<<PB0)) { k=1; PORTC=0b0001001; } как теперь подать 1 на второй пин, не таким образом PORTC=0b0001011, а как-то по другому
  25. помогите, делаю этот таймер http://sxem.org/2-vse-stati/22-tajmery/38-tajmer-na-atmega8 и он идет очень медленно, одна секунда равняется 3,5 минутам, как это исправить
×
×
  • Create New...