Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Подскажите что не так!!!!

Непрочитано 05.09.2007, 18:30  
satnettv
Прохожий
 
Регистрация: 30.08.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
satnettv на пути к лучшему
По умолчанию Подскажите что не так!!!!

Делаю для себя, микроконтроллер mega128, внешняя памятьFL25L256, соединены по SPI, программирую в CodeVision

Код:
#include ‹mega128.h› 
#include ‹stdio.h›
#include ‹spi.h› 
#include ‹delay.h›

#define WREN 0x06 //Set Write Enable Latch
#define WRDI 0x04 //Write Disable
#define RDSR 0x05 //Read Status Register
#define WRSR 0x01 //Write Status Register
#define READ 0x03 //Read Memory Data
#define WRITE 0x02 //Write Memory Data 
#define Ready 1; 
#define SPIF 0x80 //Флаг прерывания по SPI 
#define Zapis 80 //размер строки
#define Dop 30 // смещение

char Zap[128] //запись из памяти 
char nmbzap=0; //количество записей в памяти

char TOP_ADDR=256;
unsigned char temp = 0x80;

// SPI interrupt service routine
interrupt [SPI_STC] void spi_isr(void)
{
unsigned char data;
data=SPDR;
}


/* проверка занятости интерфейса SPI*/ 

char ReadySPI(void)
{
return (SPSR››7); // 1 - ready 
} 

/* чтение из памяти одного или нескольких байт */

/* Чтение записи*/
char ReadSPI(int address)

{

if ((address) ‹= TOP_ADDR)
{
if (SPSR & temp) // проверка занятости интерфейса SPI
{ 
SPCR = 0x00; //запрет прерывания по SPI 
SPDR = READ; //передать оп-код READ
return SPDR;
}
}
}


/* Запись */
char WriteSPI(int mesto, char Dzap)
{
if (start_add ‹= TOP_ADDR)
{
if (SPSR & temp) // проверка занятости интерфейса SPI
{ 
SPDR = WREN; // оп-код подготовки записи
SPDR = WRITE; // оп-код записи
SPAR = nmbzap*Zapis+Dop; // адрес (номер записи, усмноженный на размер записи + смещение)
SPDR = Dzap; // данные
nmbzap++; // счетчик записей в памяти
}
}
}


/*передача данных из памяти дальше*/ 

if ( 1==1 ) //если есть коннект
{ 
if (nmbzap!=0) //есть записи в памяти?
{ 
for(i=0; i‹nmbzap; i++) // считываем сохраненные записи из памяти 
{
Zap[i] = ReadSPI(i*Zapis+Dop); // i-я строка из памяти
}
nmbzap=0;
}
} 
/******************************/
вот пример моего кода, объясните, что я делаю не так.
я никак не могу понять как правильно выставлять адрес для заполнения памяти, а также как правильно организовать счетчик записи нескольких строк в память (т.е. я на каком-то этапе делаю несколько записей (строки по 80 символов) в память, считаю сколько строк я записал, а затем по какой-то команде мне нужно считать эти строки из памяти). Ну вот как мне это сделать?????

Используй кнопку code в следующий раз.
dosikus
Реклама:
satnettv вне форума  
Непрочитано 11.09.2007, 00:58  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Есть курс такой, называется AVR-123. Так вот там про это подробно написано.
Если поможет совет мой, то сказать не забудь спасибо. :P
retcom вне форума  
Непрочитано 11.09.2007, 03:36  
CERGEI1982
Почётный гражданин KAZUS.RUN
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,578
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Я бы сначало на асеме помучился как работает SPI потом уже и на си писал
CERGEI1982 вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа для микроконтроллера (подскажите что в ней не так) _Inna_ Микроконтроллеры, АЦП, память и т.д 41 16.06.2009 00:18
[Решено] я знаю, что это на самом деле так! spilberg Отвлекитесь, эмбеддеры! 15 19.10.2008 15:09
Помогите разобраться со схемой. я не могу понять что не так. sofist Источники питания и свет 17 15.11.2007 15:52
I2C память в Proteus6.9sp5 что не так? steb Микроконтроллеры, АЦП, память и т.д 1 20.11.2006 15:08


Часовой пояс GMT +4, время: 13:45.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.