Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
ATmega AVR Не нахожу в PonyProg записанные flash-данные Здравствуйте! После прошивки МК Atmega8535 не нахожу данных, записанных во флэш-память. Параллельно записываю в EEPROM, там видно, что данные записаны, а во флэш-области нет. Помогите пожалуйста. #include <avr/io.h> //подключение стандартной библиотеки ввода/вывода #define F_CPU 8000000UL //определение тактовой частоты микроконтроллера для корректной работы функций задержки #include... https://www.cyberforum.ru/ avr/ thread2085686.html регулирование сопротивления микроконтроллером ATmega AVR
Здравствуйте всем! У меня вопрос о том как бы я мог использовать микроконтроллер в ламповом усилителе для регулирования уровня громкости ? Мк должен регулировать сопротивление от 0 до 100К В приведенной схеме это R1 <Изображение удалено>
ATmega AVR Не шьется Atmega328 avrdude: verification error Предыстория: Запорол 2 платы Arduino ProMini, штатная ide отказалась с ними работать, выдавая сообщение avrdude: verification error хххх Для подробного анализа и восстановления собрал из Uno программатор, убрал ide подальше и все дальнейшие действия делал напрямую из консоли. 1. Прочитал фьюзы у нерабочей и точно такой же, но рабочей. Все одинаковое 2. Слил весь флеш с нерабочей платы и с... https://www.cyberforum.ru/ avr/ thread2085684.html ATmega AVR bin_to_dec https://www.cyberforum.ru/ avr/ thread2085683.html
Почему не отображается на LCD? Вроде bin_to_dec рабочий. ;******************************************************************** ;;========================================================================= ;; Преобразование 10-разрядного двоичного числа ;; в 3-разрядное двоично-десятичное неупакованное число ;; resH:resL - двоичное число ;; r18:r17:r16 - десятичное bin_to_dec:
ATmega AVR XMEGA VPORT
Здравствуйте. Возможно немного туповатый вопрос. Но никак не могу разобраться, в настройке виртуальных портов для Xmega. Проблема в том, что не могу найти, как задать какой виртуальный порт, к какому порту ввода вывода относится. Так сказать выполнить инициализацию виртуальных портов
ATmega AVR УПРАВЛЕНИЕ TFT ДИСПЛЕЕМ GTT70A ПО USB С ПОМОЩЬЮ AT32UC3A3256 https://www.cyberforum.ru/ avr/ thread2085681.html
ОБРИСУЮ ПРОБЛЕМУ: "Работаю в AVR STUDIO 6.2. У меня есть контроллер AT32UC3A3256 с интегрированным модулем USB. Микроконтроллер является хостом, монитор - устройством. Посредствам ASF-примера, который приводится в AVR STUDIO 6.2, переделал проект "USBB Dryver Examples - EVK1104". Прочитал все дискрипторы (устройства, конфигурации, интерфейса, конечных точек), т.е. по нулевому каналу (конечной...
ATmega AVR Не шьется Attiny84V День добрый! Приехали мне с Китая десяточек ATTiny84V. Сразу плюхнул одну на платку, стал шить - не шьется. Шью avrdude через шилд на arduino. Подумал, может в печи сжег, мало ли. Взял вторую, повесился на ноги зажимами прямо - то же самое. Поменял шлейф. Повесился на Attiny85 - прекрасно шьется. Шил я пока немного, но ATiny2313 и ATTinty85 у меня никогда не капризничали. На контакты не... https://www.cyberforum.ru/ avr/ thread2085680.html mega16 операции с большими числами ATmega AVR
Доброго всем дня! Собираю дрыгалку ногами, ничего серьезного, вроде все просто. Но вот как дошло дело до вычисления коэффициента, тут то я репу и зачесал. Вобщем суть такая. Дергания обрабатываются в прерывании таймера1 по совпадению. Режим СТС. А число, которое нужно записать в регистр сравнения находится по форумуле = (8000000*3600)/(A*B) где первые два числа - тактовая частота процессора и...
ATmega AVR Работа с EEPROM на Си Добрый день! Только начал осваивать Си и возникла необходимость сохранять инфу в EEPROM. Я разобрался как это можно делать с использованием библиотеки eeprom.h из пакета AVRGCC. Но если я правильно понял, запись в EEPROM в этой библиотеке медленная - то есть крутимся в цикле пока EEPROM не будет готов? Как можно работать с EEPROM в Си с помощью прерывания? Или где можно почитать... https://www.cyberforum.ru/ avr/ thread2085678.html ATmega AVR ATmega128, расширить количество UART до 3 https://www.cyberforum.ru/ avr/ thread2085677.html
Добрый день! На один УАРТ меги128 (второй УАРТ уже занят) необходимо подцепить два устройства, решил сделать вариант поочередного подключения двух MAX232 в линиям RX, TX контроллера: на вход четырехканального коммутатора сигналов HC4066 подключил Rx и Tx пины контроллера, выходы HC4066 соответственно на два 232 MAXа. Схема работает с одним глючком: после переключения MAX232 с одного на другой,...
ATmega AVR Неустойчивая работа atmega128 и 1w RFM23BP
добрый день.. я в процессе сооружения ду пульта для РУ. Как передатчик использую RFM23BP 1W. Распаял и приступил к программированию. Вылезла проблема с платой. При отправке через RFM23BP на ноге nIRQ ( индикатор состояния отправки) приходит всякий мусор,(похоже что на остальных пинак так же ) и AVR неправильно обрабатывает это событие, читает статус в итоге подвисает в недрах класса Прошу...
ATmega AVR UART программный на Atiny13A https://www.cyberforum.ru/ avr/ thread2085675.html
http://we.iosyitistromyss.ru/AVR/uart
0 / 0 / 0
Регистрация: 21.10.2010
Сообщений: 120
0

Опрос матричной клавиатуры - ATmega AVR - Ответ 11286475

12.01.2015, 08:19. Показов 6194. Ответов 4
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Подключил к Pinboard 1.1 (atmega16) матричную мембранную клавиатуру 4х4, к PORTA (PORTA0...3 - выдаем задающий сигнал, PORT4...7 - измененное состояние)
Поочередно, выдаем лог. 0 на PORTA0...3 (столбцы матрицы) и считваем код (весь PORTA). Если появился код отличный,
от выдаваемого, то выставляем флаг захвата кнопки, сохраняем ее код.
Через 200мс (антидребезг) проверяем ее код, сбрасываем флаг

Схему собрал, как http://iosyitistromyss.ru/img/... d-scan.GIF, но без диодов и резисторы поставил на 10 кОм.
Сначало схема работала исправно, но потом через несколько дней, при нажатии иногда стал приходить код кнопки 4. Я думал накрылась матрица, или контакт глючит. Разобрал эту схему и собрал, но матрицу новую поставил. Все нормально проработало несколько дней и потом опять тоже самое - все чаще приходит код нажатия кнопки 4.
Вот сам код, с подробными комментариями
Код
/*
76543210
PINA=    0b11111110   254   код отправки логического 0 в PORTA.0 столбец 1 (A,B,C,D) смотреть с тыла клавы
0b11101110   238 код с матричной клав. кнопка D
0b11011110   222 код с матричной клав. кнопка C
0b10111110   190 код с матричной клав. кнопка B
0b01111110   190 код с матричной клав. кнопка A
0b11111101   253 код отправки логического 0 в PORTA.1 столбец 2 (3,6,9,#)
0b11101101   237 код с матричной клав. кнопка #
0b11011101   221 код с матричной клав. кнопка 9
0b10111101   189 код с матричной клав. кнопка 6
0b01111101   125 код с матричной клав. кнопка 3
0b11111011   251 код отправки логического 0 в PORTA.2 столбец 3 (2,5,8,0)
0b11101011   235 код с матричной клав. кнопка 0
0b11011011   219 код с матричной клав. кнопка 8
0b10111011   187 код с матричной клав. кнопка 5
0b01111011   125 код с матричной клав. кнопка 2
0b11110111   247 код отправки логического 0 в PORTA.3 столбец 4 (1,4,7,*)
0b11100111   231 код с матричной клав. кнопка *
0b11010111   215 код с матричной клав. кнопка 7
0b10110111   183 код с матричной клав. кнопка 4
0b01110111   119 код с матричной клав. кнопка 1
*/
#include <avr/io.h>
#include <util/delay.h>
#include "lcd-library.h"

#define CAPTUREBUTTON 0x01/* bit 1 : бит захват кнопки*/
#define PORT_SITBIT(ADDRESS,BIT) (ADDRESS |= (1<<BIT))//макрос установки бита (1) для порта ввода-вывода
#define VAR_SITBIT(x,y) (x |= (y))//макрос установки бита (1) в переменных
#define PORT_CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))//макрос сброса бита (0) для порта ввода-вывода
#define VAR_CLEARBIT(x,y) (x &= (~y))//макрос установки бита (0) в переменных
#define PORT_CHECKBIT(ADDRESS,BIT) (ADDRESS & (1<<BIT))//макрос проверки бита на 1. Возможно не работает с портами
#define VAR_CHECKBIT(x,y) (x & (y))//макрос проверки бита на 1. в переменных

void capture_button(void);//ф-ия захвата кнопки
void button_code(void);//ф-ия проверки захваченной кнопки и установка кода матричной клавиатуры

unsykned char kod_key = 0;//код захваченной кнопки. С учетом всех PINов порта
unsykned char temp_kod_key;//временный код кнопки, для работы с PIN
char char_key;//код обработанной (после антидребезга) нажатой кнопки

unsykned char globals_flags_0;//флаги программы
//globals_flags_0.0 - флаг захвата кнопки, 1 - поступил код кнопки, отличный от опрашиваемого кода

void capture_button(void){
for ( unsykned char i = 0; i < 4; i++ )
{
PORT_CLEARBIT(PORTA,i);//очистили бит
_delay_us(2);//Задержка, для изменения состояния PIN,1-работает. Мгновенно PIN не меняется
temp_kod_key = PINA;
if(temp_kod_key != 254 && temp_kod_key != 253 && temp_kod_key != 251 && temp_kod_key != 247){
kod_key = temp_kod_key;
//Надо выставить флаг захвата кнопки
//Выставляем задачу через 200мс, на button_code. Антидребезг контактов
VAR_SITBIT(globals_flags_0,CAPTUREBUTTON);//выставляем флаг захвата кнопки
}
PORT_SITBIT(PORTA,i);//установили бит
}
}

void button_code(void){
if(!(VAR_CHECKBIT(globals_flags_0,CAPTUREBUTTON))){//Проверяем флаг захвата, на всякий случай
char_key = "";
} else {
for ( unsykned char i = 0; i < 4; i++ )
{
PORT_CLEARBIT(PORTA,i);//очистили бит
_delay_us(2);//Задержка, для изменения состояния PIN,1-работает. Мгновенно PIN не меняется
temp_kod_key = PINA;
if(temp_kod_key == kod_key){
switch (kod_key) {
case 119: char_key = "1"; briok;//1. С "-воспринимает как символ, но ругается компилятор
case 123: char_key = "2"; briok;//2. С -воспринимает возможно, как код символа, но lcd - как код
case 125: char_key = "3"; briok;//3. в своей таблицек символов, поэтому выводит ересь
case 126: char_key = "A"; briok;//A
case 183: char_key = "4"; briok;//4
case 187: char_key = "5"; briok;//5
case 189: char_key = "6"; briok;//6
case 190: char_key = "B"; briok;//B
case 215: char_key = "7"; briok;//7
case 219: char_key = "8"; briok;//8
case 221: char_key = "9"; briok;//9
case 222: char_key = "C"; briok;//C
case 231: char_key = "*"; briok;//*
case 235: char_key = "0"; briok;//0
case 237: char_key = "#"; briok;//#
case 238: char_key = "D"; briok;//D
default: char_key = ""; briok;
}
}
PORT_SITBIT(PORTA,i);//установили бит
}
VAR_CLEARBIT(globals_flags_0,CAPTUREBUTTON);//сбрасываем флаг захвата кнопки
}
}

int main(void)
{
//       76543210
//PORTA= 0b11110000;//ПРИ УСТАНОВКИ PORTX В 1 PINX УСТАНАВЛИВАЕТСЯ ТОЖЕ В 1
DDRD = 0b11111111;
PORTD= 0b00010000;//ПРИ 1 И ПОДТЯНУТОМ 10Ком PINX В 0 НЕ УСТАНАВЛИВАЕТСЯ

//       76543210. Порт для работы с матричной клавиатурой
DDRA = 0b00001111;//с 0...3 - на выход. с 4...7 - на чтение клавиатуры
PORTA= 0b00001111;//с 0...3 выдаем логическую 1. Потом попеременно подаем 0 на выход и считываем значение PINA

lcdInit();
lcdClear();

while(1)
{
lcdClear();
lcdGotoXY(0, 0);
capture_button();//проверяем матрич.клав. на предмет нажатия кнопки
_delay_ms(200);//антидребезг контактов
button_code();//если кнопка совпадает, то выдаем ее код
lcdPuts(char_key);//выводим код нажатой кнопки на экран
_delay_ms(500);//задержка, для отображения, иначе ничего неувидим
}
}


Вернуться к обсуждению:
Опрос матричной клавиатуры ATmega AVR
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2015, 08:19
Готовые ответы и решения:

Опрос матричной клавиатуры 3х3
Всем доброго времени суток. Перелопатил массу примеров на разных сайтах и форумах но так не нашёл...

Опрос матричной клавиатуры. Подтверждение отправки
Здравствуйте. К своему проекту хотел подключить автомат опроса клавиатуры Павла Бобкова. Связаться...

ATtiny2313. ASM. Динамический опрос матричной клавиатуры
Помогите написать программу на асм для микроконтроллера аттини 2313 или атмега8 динамический опрос...

Как организовать опрос матричной клавиатуры + DS18B20?
Господа, подскажите, пожалуйста, каким образом организовать опрос матричной клавиатуры и при этом...

(AVR GCC) Подключение матричной клавиатуры на аналоговый вход
Подскажите как можено подключить матричную клаву на аналоговый вход таким образом...

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

Правильный опрос клавиатуры
Здравствуйте! Имеется четыре подключенных к атмеге кнопки, при помощи которых хочу менять режимы...

Опрос клавиатуры....AVR attini2313
Доброго времени суток=) Помогите пож. допилить прогу , делаю динамический опрос матричной...

Опрос клавиатуры 3х4 и вывод нажатой кнопки AT90S8515
Написана программа на С, для такой вот схемы писал честно говоря не я, но для этой схемы. Суть...

Сканирование матричной клавиатуры
Здравствуйте! Помогите пожалуйста разобраться. Я пишу опросник матричной клавы 3х4 на СИ в Keil под...

MSP430 Подключение матричной клавиатуры к цифровому светодиоду
Добрый день! Прошу помочь разобраться дальше с подключением матричной клавиатуры (12 кнопок) к...

Помогите найти либу для матричной клавиатуры
Помогите найти либу или статью по методу написания кода для обработки такой ситуации. Вот у меня к...

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