Например TDA7294

Форум РадиоКот • Просмотр темы - SD и Atmega 16???
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 27, 2025 23:16:00

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 28 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: SD и Atmega 16???
СообщениеДобавлено: Пн сен 12, 2011 13:59:39 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 41
Зарегистрирован: Пт янв 30, 2009 14:50:35
Сообщений: 635
Откуда: Солнечногорск
Рейтинг сообщения: 0
Alerr писал(а):
Можете обьяснить, глупый вопрос наверно..А почему происходит падение на диоде-диод, это полупроводник, который пропускает ток в одном направлении...???


Ну, диод и в обратном направлении тоже пропускает, но только ток при этом очень малый, пока пробой не наступит, поэтому и считается, что диод пропускает лишь в одном направлении. А для стабилитронов (которые тоже диоды, только специальные) рабочий участок как раз на область пробоя и приходится, почему они включаются в схему "задом наперёд", а не как обычные диоды.

Что же касается падения напряжения, то оно падает на всём, через что протекает ток и чьё сопротивление отлично от нуля (закон Ома в действии). У диода, понятное дело, сопротивление не равно нулю. Разница же между резистором и диодом в том, что у резистора сопротивление постоянно (ну, почти постоянно: оно тоже немного колеблется в зависимости от температуры и других факторов, но колебания незначительны и ими можно пренебречь), а у диода оно зависит от напряжения. Поэтому на начальном участке вольт-амперной характеристики по мере повышения напряжения на диоде ток растёт медленно, но постепенно рост ускоряется. К напряжению примерно 0,7 В сопротивление диода становится очень малым и наступает ситуация, когда дальнейший рост тока ограничивает не сам диод, а включенное последовательно с ним сопротивление (не обязательно резистор в чистом виде). Если это сопротивление достаточно велико, ток не может вырасти сколько-нибудь значительно, а значит, на диоде падают примерно эти 0,7 В. Правда, цифра эта достаточно условна, поскольку зависит от особенностей диода, от температуры, от тока, но для большинства случаев можно считать её верной. Если последовательно включены два диода, на них падает 1,4 В, если три -- 2,1 В, и т.д. Можно считать, что такой ситуации диоды работают, как стабилизаторы напряжения на уровне 0,7 В. Кстати, это справедливо только для обычных кремниевых диодов, для диодов из других материалов или другой конструкции напряжение "стабилизации" будет другим (у диодов Шоттки, насколько помню, что-то вроде 0,2-0,3 В).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: SD и Atmega 16???
СообщениеДобавлено: Пн сен 12, 2011 17:24:45 
Встал на лапы

Зарегистрирован: Вт май 03, 2011 20:01:23
Сообщений: 140
Рейтинг сообщения: 0
Кто-то, кто делал аналогичное в Codevision, могли бы поделиться кодом, ну самым простым, допустим чтения с карты...
Просто пока не могу вообще сдвинуться с места :(


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: SD и Atmega 16???
СообщениеДобавлено: Вт сен 13, 2011 13:20:24 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пт авг 01, 2008 08:43:08
Сообщений: 70
Рейтинг сообщения: 0
Вот. Думаю разберешься. Программа заставляет контролер читать определенный файл с карты и побайтно выкладывать в порт А попути дергая управляюшие сигналы. Если интересно то устройство использовалось для эмуляции ПЗУ спектрума.


Вложения:
avr_mmc_reader.rar [466.97 KiB]
Скачиваний: 396
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: SD и Atmega 16???
СообщениеДобавлено: Вт сен 13, 2011 14:29:59 
Встал на лапы

Зарегистрирован: Вт май 03, 2011 20:01:23
Сообщений: 140
Рейтинг сообщения: 0
Спасибо, начну разбираться :))


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: SD и Atmega 16???
СообщениеДобавлено: Сб окт 29, 2011 23:03:10 
Встал на лапы

Зарегистрирован: Вт май 03, 2011 20:01:23
Сообщений: 140
Рейтинг сообщения: 0
Ну, наступило то время, когда я спаял всё и просмотрел код...
Возникли некие вопросы по коду:
#include <mega16.h>
// Standard Input/Output functions
#include <stdio.h>
#include <delay.h>
#include <spi.h>

static char Buffer[512];
char res;
unsigned int Clustervar;
unsigned long ByteSend =0;
unsigned int filenum = 0;
int Percent;


#define CLUST_RSRVD 0x0ffffff6
#define FALSE 0
#define DATA_PORT PORTA
#define WR_FLAG PORTC.6
#define STR_FLAG PORTC.7
#define OK_LED PORTC.3
#define AVR_RD PINC.5
#define Z80_RST PORTC.4

#include <mmc.c>
#include <fat.c>
//#include <lcd_init.h>
//#include <lcd_s.h>
#include <accel.h>

extern void fat_init(void);
//extern unsigned int Power_check(unsigned char adc_input);
unsigned long FAT_NextCluster(unsigned long cluster);
int play(void);
//extern int FAT_readCluster(unsigned long cluster, char sector_offset);
//extern void idinfo(unsigned long cluster);
unsigned long Size = 0;



void main(void)
{
unsigned int tmp,a;
char buf[6];
unsigned char Dir_Attrib = 20;
char h,m,s;
char Fname[] = "48.ROM";
//char Fname[] = "LOADER.TAP";

// setup SPI I/O pins

// SPI Port config
DDRB.4=1; // set SS as output
DDRB.5=1; // set MOSI as output
DDRB.6=0; // set MISO as input
DDRD.2=1; // SCK output
DDRD.3=1; // CS output
DDRB.0=1;
DDRB.2=1;
DDRB.1=1;
DDRB.4=1;
PORTD.3=1; // CS not active
PORTD.2=1; // set SCK hi
PORTB.1=0; // rst disp
PORTB.4=1;

// VS1001K Control def

// for LS020 TFT
/*
DDRC.6=1; //RS line is out
PORTC.6=1;
DDRC.5=1; //RESET line is out
PORTC.5 = 1;
DDRC.4=1; // CS line is out
PORTC.4=1;
*/

// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTA=0x00;
DDRA=0xFF;
//key defination pin

DDRC.5 = 0; // AVR_RD pin
DDRC.7 = 1; // AVR_WR pin
DDRC.6 = 1; // AVR_STR pin
DDRC.4 = 1; // Z80 reset pin
DDRC.3 = 1; // OK led pin
DDRC.0 = 0;
DDRC.1 = 0;
PORTC = 0x00;
//

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 19200
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
/*
// ADC initialization
// ADC Clock frequency: 500,000 kHz
// ADC Voltage Reference: Int., cap. on AREF
// ADC Auto Trigger Source: Free Running
ADMUX=ADC_VREF_TYPE;
ADCSRA=0xA5;
SFIOR&=0x1F;

*/

// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 1000,000 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x51;
SPSR=0x00;

// I2C Bus initialization

//**********************************************

Z80_RST = 1;
OK_LED = 0;
PORTB.1=0;
delay_ms(10);
PORTB.1 = 1;
// LCD init
//sprintf(buf,"K&G");
//lcd_init();
//LCD_FillRect(0,0,132,176,black);
//put_str(50,50,buf,0,2);
//----------
printf("\r\nROM Loader for ZX Spectrum based on T80 & Xilinx FPGA\r\n");

printf("Try to init MMC/SD card... \r\n");
res = mmcReset();
if(res!=0)
{
printf("MMC init failed. Answer: %i\r\n",res);
}
else
{
fat_init();
for (a = 1;a < 240;a++)
{
Clustervar = fat_read_dir_ent(0,a,&Size,&Dir_Attrib,Buffer);
if (Clustervar == 0xffff){break;}
tmp = (Size & 0x0000FFFF);
printf("Cluster = %4x DirA = %2x FileName = ",Clustervar,Dir_Attrib);
printf("%s ",Buffer);
printf(" size: %3li ", File_Size);
printf("\r\n");
if(Dir_Attrib == ATTR_ARCHIVE) filenum++;
}

Clustervar = 0;//suche im Root Verzeichnis
if (fat_search_file(&Fname[0],&Clustervar,&Size,&Dir_Attrib,Buffer) == 1)
{
printf("Total %i files found\r\n",filenum);
printf("----------\r\n");
printf("\r\nFile: %s\r\n",Fname);
printf("Size: %3li Byte\r\n", Size);
printf("\nFile Found!!\r\n");
printf("----------\r\n");
WR_FLAG = 1;
printf("Waiting 4 sec for FPGA configuring...\r\n");
delay_ms(4000);
DATA_PORT = 0x00;
printf("CPU is WAIT for ROM be loaded\r\n");
STR_FLAG = 0;
printf("Reading file and loading ROM\r\n");
play();
}
else
{
printf("File not found\r\n");
};
OK_LED = 1;
WR_FLAG = 0;
STR_FLAG = 0;
DATA_PORT = 0x00;
printf("Loading complete\r\n");
printf("Z80 CPU reset\r\n");
Z80_RST = 0;
delay_ms(500);
Z80_RST = 1;
printf("Ok\r\n");
printf("End program\r\n");
};
printf("Do work wihtout SD/MMC\r\n");
//lcd_init();
//LCD_FillRect(0,0,132,176,black);
while(1)
{

//put_str(10,10,buf,0,1);
//delay_ms(800);
};
}


unsigned long FAT_NextCluster(unsigned long cluster)
{
int result=0;
unsigned long sector,position,next;
if (cluster ==0 ) cluster = 2;
sector = cluster / 256;
result = mmcRead(FAT16_fat_begin_lba+sector,Buffer);
if (result) return 0;
position = (cluster - (sector * 256)) * 2;
next = Buffer[position+1];
next <<= 8;
next += Buffer[position];
if (next == 0xffff) next = 0xffffffff;
return next;
}

int play(void)
{
unsigned long LBA,i,j,NextCluster;
long index = 0;
NextCluster = Clustervar;

while (1)
{
LBA = FAT_cluster2lba(NextCluster);
for (i=0;i<sectors_per_cluster;i++)
{
mmcRead(LBA+i,Buffer);
for (j=0;j<bytes_per_sector;j++)
{
DATA_PORT = Buffer[j];
STR_FLAG = 1;
delay_us(50);
STR_FLAG = 0;
delay_us(500);

index++;
if(index > (Size - 1)) {printf("End Of File\r\n");return 1;};
}
}

ByteSend += (bytes_per_sector * sectors_per_cluster);
Percent = (ByteSend / (File_Size / 100));
NextCluster = FAT_NextCluster(NextCluster);
if (NextCluster > CLUST_RSRVD) break;
//printf("Byte send: %i \r\n",ByteSend);
}


return 0x01; // Next Song
}



не подскажете где висит CMD/DI и DAT/DO?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: SD и Atmega 16???
СообщениеДобавлено: Вс окт 30, 2011 09:05:12 
Встал на лапы

Зарегистрирован: Вт май 03, 2011 20:01:23
Сообщений: 140
Рейтинг сообщения: 0
Вроде нашел что куда..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: SD и Atmega 16???
СообщениеДобавлено: Вс окт 30, 2011 09:08:43 
Встал на лапы

Зарегистрирован: Вт май 03, 2011 20:01:23
Сообщений: 140
Рейтинг сообщения: 0
Вот тут проходят процедуры инициализации и т.п., а куда, в какую переменную считывается всё с карты???


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: SD и Atmega 16???
СообщениеДобавлено: Пт июл 13, 2012 22:04:20 
Встал на лапы

Зарегистрирован: Вт май 03, 2011 20:01:23
Сообщений: 140
Рейтинг сообщения: 0
Пока остановился проект...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 28 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y