http://www.forum.getchip.net/ |
|
ATtiny2313 SD Card Talking Device http://www.forum.getchip.net/viewtopic.php?f=24&t=480 |
Страница 1 из 3 |
Автор: | Владислав [ 18 апр 2014, 16:02 ] |
Заголовок сообщения: | ATtiny2313 SD Card Talking Device |
Возможно ли переписать его под ATMega8 и сделать максимально возможное количество кнопок, выбора трека. Чтобы нажал на 1кнопку, заиграл 1 трек. Нажал на 14кнопку, заиграл 14 трек, как в говорящей азбуке. И исключить все остальные кнопки, ускорения, замедления, воспроизведения, зацикливания и выбора папки. Чем больше кнопок тем лучше. |
Автор: | GetChiper [ 24 апр 2014, 21:54 ] |
Заголовок сообщения: | Re: ATtiny2313 SD Card Talking Device |
Нечто подобное сейчас делается, но не на меге8, а на тини2313 (модификация по просьбе читателя) - ждите будет статья с устройством |
Автор: | Владислав [ 25 апр 2014, 17:53 ] |
Заголовок сообщения: | Re: ATtiny2313 SD Card Talking Device |
Я тут попробовал подключить второй мк, мегу8, для увеличения количества кнопок, до 21 подавая сигнал через UART Посмотрите правильно написал я прошивку для меги8 за основу взял форму сигнала с UART #include <mega8.h> #include <delay.h> void main(void) { PORTB=0b11111111; DDRB= 0x00; PORTC=0b00111111; DDRC= 0x00; PORTD=0b01111111; DDRD= 0b10000000; while (1) { if (PINB.0==0) //Иммитируем сигнал (A)// { PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(500); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINB.1==0) //Иммитируем сигнал (B)// { PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(400); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINB.2==0) //Иммитируем сигнал (C)// { PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(200); PORTD.7=0; delay_us(400); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINB.3==0) //Иммитируем сигнал (D)// { PORTD.7=0; delay_us(300); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(300); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINB.4==0) //Иммитируем сигнал (E)// { PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(300); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINB.5==0) //Иммитируем сигнал (F)// { PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(200); PORTD.7=0; delay_us(300); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINB.6==0) //Иммитируем сигнал (G)// { PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(300); PORTD.7=0; delay_us(300); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINB.7==0) //Иммитируем сигнал (H)// { PORTD.7=0; delay_us(400); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINC.0==0) //Иммитируем сигнал (I)// { PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINC.1==0) //Иммитируем сигнал (J)// { PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINC.2==0) //Иммитируем сигнал (K)// { PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(200); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINC.3==0) //Иммитируем сигнал (L)// { PORTD.7=0; delay_us(300); PORTD.7=1; delay_us(200); PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINC.4==0) //Иммитируем сигнал (M)// { PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(200); PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PINC.5==0) //Иммитируем сигнал (N)// { PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(300); PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PIND.0==0) //Иммитируем сигнал (O)// { PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(400); PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PIND.1==0) //Иммитируем сигнал (P)// { PORTD.7=0; delay_us(500); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PIND.2==0) //Иммитируем сигнал (Q)// { PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(300); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PIND.3==0) //Иммитируем сигнал (R)// { PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PIND.4==0) //Иммитируем сигнал (S)// { PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(200); PORTD.7=0; delay_us(200); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PIND.5==0) //Иммитируем сигнал (T)// { PORTD.7=0; delay_us(300); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; if (PIND.6==0) //Иммитируем сигнал (U)// { PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(100); PORTD.7=0; delay_us(100); PORTD.7=1; delay_us(1000); }; }; }; |
Автор: | SVN [ 25 апр 2014, 21:35 ] |
Заголовок сообщения: | Re: ATtiny2313 SD Card Talking Device |
Сломался скролл… под спойлер бы не мешало убрать… ![]() |
Автор: | GetChiper [ 25 апр 2014, 22:57 ] |
Заголовок сообщения: | Re: ATtiny2313 SD Card Talking Device |
если идти таким путем - можно сделать проще: выставить двоичный код трека на ножках выбора трека говорилки и подтвердить импульсом на ножке тактовой кнопки |
Автор: | Владислав [ 26 апр 2014, 05:31 ] |
Заголовок сообщения: | Re: ATtiny2313 SD Card Talking Device |
Тогда я потеряю несколько кнопок и добавятся лишние провода, а так между микроконтроллерами всего один провод ну и питание естественно. вопрос в том будет ли работать по тому что я так понял с UART всегда приходит 1, а 0 только когда мы что то отправляем. |
Автор: | GetChiper [ 26 апр 2014, 20:11 ] |
Заголовок сообщения: | Re: ATtiny2313 SD Card Talking Device |
Это что, имитация UART o_O?!! А просто настроить аппаратный UART и отсылать символ по нему в зависимости от нажатой на ножках кнопки никак не выйдет? |
Автор: | Владислав [ 27 апр 2014, 06:32 ] |
Заголовок сообщения: | Re: ATtiny2313 SD Card Talking Device |
Она самая просто подключил осциллограф к терминалу и посмотрел форму сигнала после чего ее имитировал. Я знаю что есть намного проще способ но я только начал учиться программированию на С++ Пока только и умею писать всякие маргалки. А как будет проще сделать. |
Автор: | GetChiper [ 27 апр 2014, 10:35 ] |
Заголовок сообщения: | Re: ATtiny2313 SD Card Talking Device |
Главное пробовать и двигаться вперед! Если заработало значит ты все сделал правильно ![]() |
Автор: | Владислав [ 27 апр 2014, 11:34 ] |
Заголовок сообщения: | Re: ATtiny2313 SD Card Talking Device |
Порт я вроде бы как понял как настраивать но как мне создать команду типа if (!PORTC.0) { Послать по UART (I)} или все намного сложнее. |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |