Jump to content

vladi5700

Members
  • Content Count

    24
  • Joined

  • Last visited

Community Reputation

0 Обычный

About vladi5700

  • Rank
    Новенький

Электроника

  • Стаж в электронике
    Не связан с электроникой
  1. Надеюсь тема еще жива. Вообщем осциллограф долго лежал на полке, а тут понадобился... И тут я заметил, что показания напряжений сильно завышены, хотя если считать по клеточкам, то все было нормально. При отсутствии сигнала луч был на 0, но показывалось какое-то напряжение (разное в зависимости от выбранного делителя) Также треугольничек смещения 0 и тригер были в самом низу и не двигались вверх. Проверил напряжения в контрольных точках, все в норме (в том числе AV+ и AV-) Решил прошить, прошил 61 прошивку. Тригер и 0 вернулись на место, напряжение без сигнала показывает как и положено 0, но вот теперь занижает показания где-то в 3 раза, притом теперь и амплитуда на луче тоже меньше реальной... Может есть какие идеи? (на фото показания со встроенного генератора. Как видно они сильно ниже 3.3)
  2. Подскажите, а можно ли вместо светодиодов подключить кусочки светодиодной ленты длинной в 10 сантиметров? Или надо транзисторы в качестве ключей ставить?
  3. А где можно печатную плату скачать в lay ? Думаю тоже сделать, а то лежат по ошибке приобретенные в китае 10 штук таких микросхем
  4. Здравствуйте. Подскажите пожалуйста пример кода для измерения напряжения питания МК Атмега8L . Рылся в сети, везде в примерах измеряют внешнее напряжение и как источник опорного берут напряжение питания. Мне же и надо измерять это напряжение (т к питается от аккума) Я так понимаю надо использовать внутренний источник опорного напряжения, но с АЦП знаком плохо. На примере обычно проще разобраться и преобразовать его под свои задачи
  5. Снова я с вопросом. Переписал я программу и теперь она работает и в протеусе и в реальном МК, но вот проблемма. В протеусе все как и должно быть delay_ms(1000) = 1 секунда задержка. В реальном же мк, программа работает на порядок медленнее (тоесть если в программе написано менять состояние порта с 0 на 1 с интервалом в секунду, в реальности состояние меняется раз в 10 секунд) как быть? Может частота процессора не та? #define F_CPU 8000000 ничего не меняет. Может какие фьюзы надо выставить чтобы частоту задать? (я их с завода не трогал, записываю только flash)
  6. рано обрадовался я.... В протеусе все работает, прошил в МК, подключил питание - на нужных ножках напряжение не появляется Может кто посмотрит? Делал на основе библиотеки работы с LCD. Там и проект и модель протеуса LCD_VP.rar
  7. Здравствуйте. Завтра пойду в магазин, чтобы перенести наброски проекта из протеуса в реальность. Как вы наверно помните у меня будет 3 ШИМ канала для управления RGB светодиодной лентой (1,5м) , 2 канала для обычной одноцветной ленты (один канал 3,5 метра зеленой ленты, второй канал 4 5мм светодиода) и канал для управления водяным насосом на 12v 150 мА. В наличии есть контроллер Atmega8 в дип корпусе. Подскажите, какие лучше ключи использовать? Обязательно IRL или IRF транзисторы? Или можно на ШИМ их поставить, а на остальные каналы обычные обратной проводимости биполярные? Как лучше запитать микроконтроллер, чтобы не сжечь его? Нужно ли подавать питание на VACC если в проекте не используется АЦП, но используются ноги на С порту? Питаться все это будет от 12V аккумулятора от ИБП (Или от батареи из 18650 элементов)
  8. Понятно мне в принципе и надо такое зацикливание. Тоесть выставились определенные ШИМ сигналы и логические 1 на нужных портах, потом ожидание , снова изменение по придуманному алгоритму и ожидание.... И так по кругу. Это будет управление светодиодными лентами и насосом фонтана садового. Спасибо большое за советы. Они помогли значительно продвинуться в написании задуманного. И еще вопросик, каково максимальное значение у delay_ms ? Если допустим нужны большие задержки минут по 10 как лучше поступить?
  9. А как можно по другому задержки выставлять? Задействовал еще каналы ШИМ (всего 3 получилось) и при симуляции протеуса загрузка процессора МК порядка 88%. Чем это грозит в реальном МК? Переделал немного под себя вот эту библиотеку (свой алгоритм значений RGB) #include <avr/io.h> //Стандартная библиотека ввода/вывода #define R_channel OCR1AL //Определяем канал OCR1AL для Красного цвета #define G_channel OCR1BL //Определяем канал OCR1BL для Зеленого цвета #define B_channel OCR2 //Определяем канал OCR2 для Синего цвета #define RGB_pause 2000 //Пауза для задержки //Программа формирования задержки void pause (unsigned int a) { unsigned int i; //Переменная для задержки for (i=a;i>0;i--); //Цикл формирования задержки } //Программа инициализации ШИМ void init_pwm (void) { //Инициализация порта DDRB=0x0e; //OC1A,OC1B,OC2 - выхода TCCR1A=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM10); //Конфигурация счетчика OC1A TCCR1B=(1<<CS10); //Конфигурация счетчика OC1B TCCR2=(1<<CS20)|(1<<COM21)|(1<<WGM20); //Конфигурация счетчика OC2 //Установка начальных значений счетчиков OCR1AL=0xff; //Соответсвует Красному цвету OCR1BL=0x00; //Выключен 0 OCR2=0x00; //Выключен 0 } //Основная программа int main(void) { unsigned char i; init_pwm(); //Инициализация ШИМ каналов while (1) //Вечный цикл { for(i=0;i<255;i++) //Переход от красного к зеленому { R_channel--; G_channel++; pause(RGB_pause); } for(i=0;i<255;i++) //Переход от зеленого к синему { G_channel--; B_channel++; pause(RGB_pause); } for(i=0;i<255;i++)//Переход от синего к красному { B_channel--; R_channel++; pause(RGB_pause); } } } Или для этой задачи такая нагрузка на проц норма?
  10. Вопрос некорректный.Делайте так, как считаете нужным. Но МК не может одновременно обрабатывать 2 куска программы. Спасибо. Тогда другой вопрос. Как видно из кода PC0 я подключил на вход. Вопрос. как правильно написать/опросить PINC0 , чтобы при нажатой кнопке запускался цикл с шим, иначе устанавливалось максимальное значение OCR2. Может подскаджите простые статьи по AVR Studio? Учусь по кускам с разных сайтов и получаются вечные ошибки синтаксиса
  11. Никак. МК этого не умеет. Если, конечно, он у Вас не многоядерный Тоесть Надо делать все в одном цикле? Например уменьшил яркость на 10% и включил лог 1 на PC5 - задержка, уменьшил еще на 10% выставил лог 0 на PC5 - задержка..... и т д?
  12. Сильно не пинайте, в программировании я не силен. Опять возник у меня вопрос... Решил я объединить 2 программки в одну, но не пойму.... Как заставить две части программы выполняться одновременно? #define F_CPU 1000000 #include <avr/io.h> #include <util/delay.h> #include <inttypes.h> #include <avr/interrupt.h> unsigned char i; int main(void) { PORTB = 0x00; DDRB=0x08; PORTC=0b00000001; DDRC=0b00111000; ASSR=0x00; TCCR2=0x6C; TCNT2=0x00; OCR2=0x00; TIMSK=0x00; while(1) { while(OCR2<0xFF){ OCR2+=0x01; _delay_ms(10); } while(OCR2>0x00){ OCR2-=0x01; _delay_ms(10);} PORTC |= (1 << PC5); //Устанавливаем линию порта в высокое состояние _delay_ms(5000); //Ждём PORTC &= ~(1 << PC5); //Устанавливаем линию порта в низкое состояние _delay_ms(10); //Ждём for (i = 1; i <= 50; i++) //повтор 100 раз { PORTC |= (1 << PC5); //Устанавливаем линию порта в высокое состояние _delay_ms(100); //Ждём PORTC &= ~(1 << PC5); //Устанавливаем линию порта в низкое состояние _delay_ms(100); //Ждём } } } Сейчас сначала работает цикл ШИМ уменьшение/увеличение, а потом он отключается и начинает работать цикл мигания светодиодом на PC5. Подскажите, как сделать так, чтобы цикл ШИМ выполнялся постоянно и одновременно с этим на ноге PC5 мигал светодиод по заданному алгоритму.
×
×
  • Create New...