Программа для ATmega128. Подскажите что не так!!!!

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 8
Зарегистрирован: Пт авг 31, 2007 17:12:34
Откуда: оттуда

Сообщение satnettv »

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

#include <mega128>
#include <stdio>
#include <spi>
#include <delay>

#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 = ReadSPI(i*Zapis+Dop); // i-я строка из памяти
}
nmbzap=0;
}
}
/******************************/


вот пример моего кода, объясните, что я делаю не так.
я никак не могу понять как правильно выставлять адрес для заполнения памяти, а также как правильно организовать счетчик записи нескольких строк в память (т.е. я на каком-то этапе делаю несколько записей (строки по 80 символов) в память, считаю сколько строк я записал, а затем по какой-то команде мне нужно считать эти строки из памяти). Ну вот как мне это сделать?????
просто VIP
Контактная информация:
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 296
Зарегистрирован: Пт янв 12, 2007 17:16:35
Откуда: Дубна

Сообщение Piroman17 »

Здесь принято большие куски кода давать в присоединённом файле.
Извеняюсь за оффтоп.
"Всё новое - хорошо забытое старое" - для творцов без творческий мысли.
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

а чего не получается-то???
не получается понять?? помогает по десять раз перечитывать только вдумчиво... не быстрее быстрее....
з.ы. и бросьте вы этот долбаный CodeVision.... пишите в ИАР или в винавр... и ещё есть кнопочка
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

Код: Выделить всё

if ( 1==1 ) //если есть коннект
ага крвсиво если один равно один :) ...
это что-то вроде

Код: Выделить всё

if (a == true) {
    if (true == false) 
       break;
    ....  
}
посмотрите код который вы написали... и нарисуйте блок схемы алгоритма работы вашей же программы... я уверен что всё заработает...
потом вы правильно ли настроили SPI данные передаются по фронту, по срезу??
Последний раз редактировалось Mozart Чт сен 06, 2007 10:14:26, всего редактировалось 1 раз.
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

И конечтно в IAR и WinAVR всё сразу заработает ...
конечно заработает ибо... там собственными руками пишешь и собственными глазами видишь что пишешь...
Совет из серии - "Смените зеркало !" по Крылову.
зачем?

я просто предложил бросить эту гадость... в детстве родители говорят "брось бяку"
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»