roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 09:21

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Как правильно прочитать данные из Eeprom?
СообщениеДобавлено: 04 мар 2007, 12:59 
Не в сети

Зарегистрирован: 04 мар 2007, 12:20
Сообщения: 16
Откуда: украина,херсон
В CV написано, симулирую в протеусе
Не могу понять  как правильно прочитать!?
Я так понимаю читается с первого адреса Eeprom,
Объясните  пожалуйста если можно,
Спасибо.


#include <mega8.h>
// Alphanumeric LCD Module functions
#asm
  .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#include <delay.h>
#include<stdio.h>
#include<math.h>
 #include<MEM.H>
// Declare your global variables here
eeprom unsigned int   e=555;
char lcd_buffer[33];
void ini(void)
{
// Global enable interrupts
#asm("sei")    
}
///////////////////////////////
void main(void)
{ unsigned int temp;
ini();
lcd_init(16);
temp=e;
while (1)
{
lcd_gotoxy(0,0);
       sprintf(lcd_buffer,"R-%x\n\r %i",temp,temp);
       lcd_puts(lcd_buffer);    
      delay_ms(300);
     };
}


насколько я понимаю CV записывает в eeprom еще дополнительную информацию (количество байтов, и наверно контрольную сумму). Поясните пожалуйста как все таки правильно считать данные из eeprom, используя CV.
Спасибо.


Вложения:
proba_eeprom.rar [71.42 КиБ]
Скачиваний: 42
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно прочитать данные из Eeprom?
СообщениеДобавлено: 04 мар 2007, 13:34 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
bgn62 писал(а):
В CV написано, симулирую в протеусе
Не могу понять  как правильно прочитать!?
Я так понимаю читается с первого адреса Eeprom,
Объясните  пожалуйста если можно,
Спасибо.

{code}

насколько я понимаю CV записывает в eeprom еще дополнительную информацию (количество байтов, и наверно контрольную сумму). Поясните пожалуйста как все таки правильно считать данные из eeprom, используя CV.
Спасибо.


мне не приходилось из программы читать строки (пишу туда только числа)
но уверен что делается через ссылку

Код:
...
eeprom char epr[] = "some string";
...
void main(void)
{
   char eeprom *temp = epr;   // берем адресс строки
   while(*temp++)
   {
      putchar(*temp);   // отправляем (куда нужно)
   }
}

отправляет строку в терминал, аналогичто можно и вашу задачу решить
проверить сейчас не могу

нет CV не пишет в ппзу ничего кроме самих чисел (проверьте - посмотрите файл *.eep)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 мар 2007, 14:29 
Не в сети

Зарегистрирован: 04 мар 2007, 12:20
Сообщения: 16
Откуда: украина,херсон
Не понимаю пока как пользоваться этими кнопками при
ответе, простите начинающему, если чего не так

Содержение *.еер

:020000002B02D1
:00000001FF

Первая строка 02-кол-во байтов
2B02 собственно 555
D1- незнаю
Вторая строка наверно для чего-то нужна
Если понимаете объясните пожалуйста,
спасибо.[/quote]


Вложения:
proteus.rar [290.38 КиБ]
Скачиваний: 36
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 мар 2007, 14:37 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
пример для CVAVR в папке

C:\CVAVR\examples\EEPROM

=========

в  даташите в разделе

"EEPROM Data Memory"

примеры на АСМ и на Си для любых компиляторов
 
(чтоб работал в CVAVR скачай мой хидер с заглавной
страницы курса avr123.nm.ru  -  m8_128.h)


вот чтение мз даташита :

unsigned char EEPROM_read(unsigned int uiAddress)
{
/* Wait for completion of previous write */
while(EECR & (1<<EEWE));

/* Set up address register */
EEAR = uiAddress;

/* Start eeprom read by writing EERE */
EECR |= (1<<EERE);

/* Return data from data register */
return EEDR;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 мар 2007, 15:40 
Не в сети

Зарегистрирован: 04 мар 2007, 12:20
Сообщения: 16
Откуда: украина,херсон
Вставил код
На жки выводит в первой строке  ff
Во второй 255
Тоесть, как правильно задать адрес?
Спасибо.

#include <mega8.h>

// Alphanumeric LCD Module functions
#asm
  .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#include <delay.h>
#include<stdio.h>
#include<math.h>
 #include<m8_128.h>

// Declare your global variables here
eeprom unsigned int   e=555;
char lcd_buffer[33];
unsigned char EEPROM_read(unsigned int uiAddress);

void ini(void)
{
// Global enable interrupts
#asm("sei")    
}
//////////////////////////////////
unsigned char EEPROM_read(unsigned int uiAddress) ///////////////////////////////
{
/* Wait for completion of previous write */
while(EECR & (1<<EEWE));
/* Set up address register */
EEAR = uiAddress;
/* Start eeprom read by writing EERE */
EECR |= (1<<EERE);
/* Return data from data register */
return EEDR;
}
///////////////////////////////
void main(void)
{ unsigned int temp;
ini();
lcd_init(16);
temp=EEPROM_read( e);
while (1)
{
lcd_gotoxy(0,0);
       sprintf(lcd_buffer,"R-%x\n\r %i",temp,temp);
       lcd_puts(lcd_buffer);    
      delay_ms(300);
     };
}


Вложения:
proteus.JPG
proteus.JPG [ 178.59 КиБ | Просмотров: 3485 ]
proteus.JPG
proteus.JPG [ 178.59 КиБ | Просмотров: 3444 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 мар 2007, 12:00 
Не в сети

Зарегистрирован: 20 фев 2007, 00:18
Сообщения: 4
Откуда: Ukraine
Это все проколы Протеуса. Я правда писал программку на Микропаскале, если я читаю в программе с $00 то в Протеусе получается с $01, короче на единицу смещается вперед. А реальном устройстве все нормально.
Работал с 8515.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 мар 2007, 12:53 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Proteus 7.1 sp0 - DEMO

downloads.labcenter.co.uk/prodemo.exe

Советую скачать. Пример работы с PROTEUS    http://proteus123.narod.ru/01.htm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 мар 2007, 20:10 
Не в сети

Зарегистрирован: 04 мар 2007, 12:20
Сообщения: 16
Откуда: украина,херсон
УВАЖЕЕМЫЙ avr123.nm.ru ТАК ПРАВ ИЛИ НЕТ
romashkin, ВАМ КАК ЗНАТОКУ ПРОТЕУСА НЕСЛОЖО
ОТВЕТИТЬ ИЛИ ЭТО ВСЕТАКИ НЕЗНАНИЕ СИ


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2007, 17:02 
Не в сети

Зарегистрирован: 04 мар 2007, 12:20
Сообщения: 16
Откуда: украина,херсон
думаю тема закрыта сам разобрался
протеус не виноват
жаль некому было подсказать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2007, 17:16 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Дак расскажите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 мар 2007, 08:36 
Не в сети

Зарегистрирован: 04 мар 2007, 12:20
Сообщения: 16
Откуда: украина,херсон
необходимо перекодировать
из формата *.eep  в*.bin


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

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


Кто сейчас на конференции

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


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO