http://forum.getchip.net/

ATtiny2313 SD Card Talking Device
http://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

Сломался скролл… под спойлер бы не мешало убрать… :D

Автор:  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/