Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
ATmega AVR Ubuntu + Eclipse + AVR Plugin https://www.cyberforum.ru/ avr/ thread2087241.html
Всем доброго времени суток! Вот никак не могу разобраться с плагином для Eclipse, а точнее не могу понять почему у меня возникает ошибка при компиляции. Устанавливал и настраивал AVR Plugin по инструкции с этого сайта. Никаких проблем вроде как не было,пока дело не дошло до компиляции проекта.Постоянно вылетает вот такая ошибка : ...
ATmega AVR студия выдает: error: Open conditional at end of file
всем здрасти. собственно в чем проблема: студия выдает "error: Open conditional at end of file". в коце файла тратата.asm находится таблица переходов, выглядит все вот так: task_table: .dw idle ; .dw do00 ; .dw do01 ; .dw do10 ; .dw do11 ; .dw do20 ;
ATmega AVR Не шьется Atmega16u4 https://www.cyberforum.ru/ avr/ thread2087239.html
Поставил себе задачу: Обмен данными с компьютером по USB интерфейсу. Нашел микроконтроллер - Atmega16u4. Думаю: "О! Круто! AVR архитектура, да еще с внутрисхемным программированием!" Тем более что я уже работал с Atmega16, да и программатор не нужно новый делать, ибо он уже есть(программатор "5 проводков", делал для прошивки Atmega16). Купил. Сделал плату-переходник с корпуса TQFP44 на...
ATmega AVR Индикатор TIC279 по двум проводам Собираю трехвходовой встраиваемый вольтметр 0...25В на ATtiny13A и LCD индикаторе TIC279. За исключением выводов питания и RESIT остаются 5 ножек, из которых 3 - входы АЦП. На индикатор остается 2 ножки, а по даташиту требуется 3. Собственно вопрос вот в чем: гдето в рунете встречал схему подключения ML1001 по двум проводам с расчитанными номиналами RC и временными задержками. В свое время не... https://www.cyberforum.ru/ avr/ thread2087238.html
AT32C3C0 ATmega AVR
Всем привет. Выбираю мк для реализации своей задачи. Один из главных пунктов нужно принимать и обрабатывать квадратурный сигнал с линейного оптического датчика перемещений. Собственно пошарил по инету нашёл два варианта, либо техасовский DSP(собственно сейчас им и пользуюсь,но он установлен в готовом устройстве,а его задумывали немного для других целей),но сделать такое же устройство с нуля на...
ATmega AVR ATMega48PA не выходит из сна Здравствуйте! Прошу помощи. Может кто-то сталкивался с подобным. Проблема заключается в следующем: сделал RTC на ATMiko48PA, если не использовать режим энергопотребления, то все работает. если же использовать режим энергосбережения (все режимы перепробовал) то он не просыпается от прерывания по переполнению асинхронного Т/С2. #define F_CPU 1000000UL #define SEVSEG_UNITS_PORT PORTD... https://www.cyberforum.ru/ avr/ thread2087236.html
ATmega AVR UART Распознавание букв https://www.cyberforum.ru/ avr/ thread2087235.html
Всем привет, возможно название темы звучит очень не красиво,но мне надо сделать так,чтоб Atmega8+UART+Teminal распознавала буквы введенные в терминале. Например у меня есть условие : .... char C; ... while (1) { if ((UCSRA & (1<<7))) { C=UDR; }
ATmega AVR Быстродействие AT24C512
Да, хорошая микросхема AT24C512, вместительная и нужно всего два вывода контроллера, блеск. Но вот в чём может быть проблема она же всего лишь EEPROM и предназначена (в основном) для хранения данных об настройках или чегото подобного, и поэтому медленная. Медленная я имею в виду то что для сохранения данных необходимо подождать минимум 3 микросекунды, долго. Я собираю диктофон на контроллере и...
ATmega AVR UART Atmega8 Terminal https://www.cyberforum.ru/ avr/ thread2087233.html
Всем доброго времени суток! У меня есть код : #define F_CPU 8000000UL #include <avr/io.h> #include <string.h> void OFF() { PORTB=0x00; }
ATmega AVR Мега32 фьюзы BootLock1 BootLock11 После перепрограммирования процессор установленный на плате, писал "ошибка" (на семи сегментном индикаторе), пока не включил фьюзы BootTosk1 и BootTosk11. Насколько понимаю никакого отношения к работе программы они иметь не должны. В даташите тоже найти их не смог. Правда искал через поиск. Подскажите мне не грамотному почему так произошло. https://www.cyberforum.ru/ avr/ thread2087232.html
Радиомодуль RXQ2 и подобные (алгоритм приёма\передачи) ATmega AVR
Приветствую всех. Имеется данный модуль, причём два. собственно задача состоит в том чтобы с одного передать, а с другого получить, но думаю что выставлением нужных единиц в порты конфигураций и обычной посылкой данных по юсарту тут не обойтись(во всяком случаи при приёме данных, там я полагаю нужно ещё адрес модуля как-то отправлять). Собственно хочу понять алгоритм, что , куда, зачем....
ATmega AVR BLDC на mega8 помогите с написанием программы,а то принцип понимаю а как отразить в программный код не догоняю. собсно что нужно: после подачи питания,контр.определяет направление вращения(задейств.два пина,будет лог0 или лог1)причем вращение в противоположную сторону возможно только если RPM<1,скорость задается потенциометром и хотел такой вот алгоритм:для достижения заданной скорости мощность растет до... https://www.cyberforum.ru/ avr/ thread2087230.htm
Sirkiy Sirkiivysh
0

Работа UART по прерыванию - ATmega AVR - Ответ 11310268

10.03.2012, 20:52. Показов 6078. Ответов 7
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане!
Я делаю систему контроля на Atmega16A-AU, котрая должна по запросу с терминала отправлять состояние порта. Собсвенно, все работает отлично, кроме одного: МК отказывается работать по прерываниям с приемника UART...
Мне необходимо, чтобы при отпраке команды контроллер собирал информацию и через 500мс (после отпраки команды) отправлял ее. Суть в том, что если контроллер занят в момент прихода следующей команды должен в ответ отправить сообщение об ошибке. У меня подозрение, что я допускаю какую-то глупейшую ошибку...

#include <avr/io.h>
#include <avr/interrupt.h>

short unsykned int i=0; // от 0 до 65535
unsykned char rx_data = 0; // буфер для принятых данных
unsykned char rx_flag = 0; //флаг наличия необработанных данных в буфере
unsykned char req_id=0; //Принятое число из порта
unsykned char send1 = 0; //статус и ID запроса
unsykned char send2 = 0; //статус джеков
unsykned char send3 = 0; //статус съемки
unsykned char status = 0; //флаг нахождения в цикле съемки (1 - снимаем)
short unsykned int cycle_len = 500; // общая длительность цикла съемки, мс
short unsykned int delay = 5; // задержка на включение оптопары, мс
short unsykned int shutter_control_time = 300; // время на детекцию пиков, мс
short unsykned int jack_release_time = 50; // время, которое замкнуты джеки, мс

//****************Инициализация таймера
void timer1_init()
{
OCR1A = cycle_len * 30; //совпадения
TCCR1A = 0;
// СТС режим, увеличение таймера каждые 1024 тактов
TCCR1B |= (1 << WGM12) | (1 << CS02);
// Прерывание по совпадению А таймера1
TIMSK |= (1 << OCIE1A);
SREG |= (1 << 7); //Разрешить прерывания
}

//*************Инициализация UART***********************************************
void USORT_Init(void) //Только для кварца 12МГц! (для 8МГц UBRL=51)
{
UBRRH = 0;
UBRRL = 1; //скорость обмена 250000 бод (изменить для другого кварца)
//разр. прерыв при приеме, разр приема, разр передачи.
UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
//обращаемся к регистру UCSRS, размер слова – 8 бит
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(3<<UCSZ0);
}

//*************Передача***********************************************
void USORT_SendChar(unsykned char data) //Передача данных по UART. Для работы принимает status из программы
{
while(!(UCSRA & (1<<UDRE))); //Ждем пока не опустеет буфер передачи
UDR = data; //Кладем в него status
}

//*************Чтение приемного буфера*******************************
unsykned char USORT_GetChar(void)
{
while(!rx_flag);
return rx_data;
rx_flag = 0;
}

//*************Начало главной программы*******************************
void main (void)
{
sei();
DDRC = 1<<DDC0; //Настройка PС0 на выход
USORT_Init();
DDRA = 0; //Весь порт PA на вход
PORTA = 1;

while(1)
{
req_id = USORT_GetChar();
status = 1;
timer1_init();
TCNT1=0;
TCNT1 = OCR1A;
send1=(1<<4) + (req_id & 0b00001111); send2=0; send3 = 0;

//Проверка джеков до замыкания

if ((PINA & 0b00010000) == 0b00010000) send2 |= 1 << 4; //фотик 1
if ((PINA & 0b00100000) == 0b00100000) send2 |= 1 << 5; //фотик 2
if ((PINA & 0b01000000) == 0b01000000) send2 |= 1 << 6; //фотик 3
if ((PINA & 0b10000000) == 0b10000000) send2 |= 1 << 7; //фотик 4

if (send2 == 0b11110000) {
//включение джеков
PORTC = 1;

//задержка для оптопары
while (TCNT1 < delay * 30) {}

//проверка состояния после включения

if ((PINA & 0b00010000) == 0b00000000) send2 |= 1; //фотик 1
if ((PINA & 0b00100000) == 0b00000000) send2 |= 1 << 1; //фотик 2
if ((PINA & 0b01000000) == 0b00000000) send2 |= 1 << 2; //фотик 3
if ((PINA & 0b10000000) == 0b00000000) send2 |= 1 << 3; //фотик 4

//проверка бросков питания
while (TCNT1 < shutter_control_time * 30)
{
if (TCNT1 > jack_release_time * 30) PORTC = 0; // выключение фотиков
if ((PINA & 0b00000001) == 0b00000000) send3 |= 1; //фотик 1
if ((PINA & 0b00000010) == 0b00000000) send3 |= 1 << 1; //фотик 2
if ((PINA & 0b00000100) == 0b00000000) send3 |= 1 << 2; //фотик 3
if ((PINA & 0b00001000) == 0b00000000) send3 |= 1 << 3; //фотик 4
}
}
}
}

//**************Прерывания от таймера (срабатывает через 0,5с)**********************************************
ISR(TIMER1_COMPA_vect)
{
USORT_SendChar(send1);
USORT_SendChar(send2);
USORT_SendChar(send3);
status = 0;
}

//**************Прерывания приемника**********************************************
ISR(USORT_RXC_vect)
{
rx_data = UDR;
rx_flag = 1;
if (status == 1) {
USORT_SendChar(rx_data & 0b00001111);
USORT_SendChar(0);
USORT_SendChar(0);
rx_flag = 0;
}
}

Вернуться к обсуждению:
Работа UART по прерыванию ATmega AVR
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2012, 20:52
Готовые ответы и решения:

Работа с UART
Здравствуйте, пытаюсь разобраться с использованием UART. Использую Pinboard 2 с Atmega16A. Написал...

Работа с UART (ATMega328)
Всем привет. Сижу мучаю атмегу и понять не могу что не так. Мне надо сделать uart c ехом. Но это...

Работа с FT232 UART
Такое вот дело, уж долгое время неполучается общение (FT232)UART с (MCU)UART. Думал проблема в...

Работа с UART ATMega8
к примеру надо отправить число 21367 в ком порт с атмеги8 чтобы потом на компе программой считать....

Работа с UART в МК ATMega8
Не хочет работать передача данных. Подключаю к ножкам PD0 и PD1 через USB/UART TTL конвертор...

7
10.03.2012, 20:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2012, 20:52
Помогаю со студенческими работами здесь

Работа с UART (Си, ATtiny 2313)
Дорогие формчане и знатаки по микроконтролёрам я Новичок в этом деле. У меня есть вопрос, есть...

работа с UART (IDE WinAVR)
предыстория: есть мега88 с кварцем 20МГц (уж какой нашёл), также есть код, сгенерённый CvAVR для...

Работа с UART ATMega8
Всем привет! Использую эту программу #include &lt;mega8.h&gt; #include &lt;delay.h&gt; #include &lt;stdio.h&gt; ...

MSP430F5435A. Работа с UART
написал такую програмку для отправки по UART... эффекта нету, со стороны схемы всё норм, в чём...

Работа с UART в Orange Pi One
На днях получил Orange Pi One и начал в ней разбираться, решил понять как пользоваться RX и TX на 8...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru