Например TDA7294

Форум РадиоКот • Просмотр темы - Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чисел?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн янв 05, 2026 06:40:55

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


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



Начать новую тему Ответить на тему  [ Сообщений: 29 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чисел?
СообщениеДобавлено: Ср май 06, 2020 23:32:37 
Первый раз сказал Мяу!
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Ср дек 05, 2018 23:10:34
Сообщений: 25
Рейтинг сообщения: 0
Здравствуйте форумчане :) Кто может сделать под заказ библиотеку под микросхемы еепром 24LC256 для записи: 2, 4 байт чисел? Сколько это будет стоить?
Компилятор:Codevisionavr v.3.12

Готовая библиотека 1-байт. Её нужно доработать, что бы можно 2, 4 байта записывать в память
Код:
#define EEPROM_BUS_ADDRESS 0xa0      // Tyt stavim adress for EEPROM

/* Чтение байта из памяти EEPROM */
unsigned char eeplc24_read(unsigned char address_high, unsigned char address_low) {
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address_high);
i2c_write(address_low);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}

/* Запись байта в память EEPROM */
void eeplc24_write(unsigned char address_high, unsigned char address_low, unsigned char data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address_high);
i2c_write(address_low);
i2c_write(data);
i2c_stop();
/* 10ms delay to complete the write operation */
delay_ms(7);
}



Код:
#ifndef _24lcxx_INCLUDED_
#define _24lcxx_INCLUDED_

#pragma used+

/* Чтение байта из памяти EEPROM */
unsigned char eeplc24_read(unsigned char address_high, unsigned char address_low);

/* Запись байта в память EEPROM */
void eeplc24_write(unsigned char address_high, unsigned char address_low, unsigned char data);

#pragma used-

#pragma library 24lcxx.lib

#endif


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Чт май 07, 2020 10:05:01 
Открыл глаза
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Сб май 21, 2016 10:06:11
Сообщений: 73
Откуда: Россия
Рейтинг сообщения: 0
Т.е. один байт прочитать можете, а два -нет? Ну, ё-маё...
Стопицоттыщ.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Чт май 07, 2020 10:18:32 
Открыл глаза
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Пт ноя 11, 2016 09:17:49
Сообщений: 67
Рейтинг сообщения: 0
Код:
/* Запись в память EEPROM len байт, *data - указатель на начало*/
void eeplc24_write(unsigned char address_high, unsigned char address_low, unsigned char *data, unsigned char len ) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address_high);
i2c_write(address_low);
while(len--){
i2c_write(*(data+len));
}
i2c_stop();
/* 10ms delay to complete the write operation */
delay_ms(7);
}

Где деньги забирать?
Передачу data возможно перевернуть надо, в документации на шину надо посмотреть как правильно (старшим или младшим вперёд).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Чт май 07, 2020 10:57:48 
Первый раз сказал Мяу!
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Ср дек 05, 2018 23:10:34
Сообщений: 25
Рейтинг сообщения: 0
Где деньги забирать?
Библиотеку напишите int, float, и с комментариями. Напишите в личку.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Чт май 07, 2020 12:13:35 
Открыл глаза
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Пт ноя 11, 2016 09:17:49
Сообщений: 67
Рейтинг сообщения: 0
Вверху вы написали, что есть готовая библиотека её надо доработать, не о каких float там речи нет, речь только о байтах.
Прошлое сообщение всерьёз восприняли, серьёзно? Там пару строчек добавить так же в функцию read и будет работать с любым количеством байт.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Чт май 07, 2020 17:13:32 
Первый раз сказал Мяу!
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Ср дек 05, 2018 23:10:34
Сообщений: 25
Рейтинг сообщения: 0
Здравствуйте ELECTROS :) Ну так что - Сделаете библиотеку?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Чт май 07, 2020 18:12:09 
Открыл глаза
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Пт ноя 11, 2016 09:17:49
Сообщений: 67
Рейтинг сообщения: 0
Хорошо давайте разберёмся, вам нужно доделать две функции которые в первом вашем сообщении, чтобы можно было передавать любое число байт (до 4-х) так?


Последний раз редактировалось ELECTROS Чт май 07, 2020 18:32:14, всего редактировалось 3 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Чт май 07, 2020 18:20:53 
Первый раз сказал Мяу!
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Ср дек 05, 2018 23:10:34
Сообщений: 25
Рейтинг сообщения: 0
Да

Добавлено after 4 minutes 7 seconds:
Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чисел?
int от -32768 до 32767
long int от -2147483648 до 2147483647


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Чт май 07, 2020 18:46:27 
Открыл глаза
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Пт ноя 11, 2016 09:17:49
Сообщений: 67
Рейтинг сообщения: 0
Лучше так как выше написал, через указатель и количество байт, ну если очень надо, но реализация так себе, все функции по всей видимости работают на ожидании:
Спойлер
Код:

/* Чтение int из памяти EEPROM */
int eeplc24_read(unsigned char address_high, unsigned char address_low) {
int data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address_high);
i2c_write(address_low);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data = (((int)i2c_read(0))<<8) & 0xFF00;
data |= i2c_read(0)  & 0xFF;
i2c_stop();
return data;
}

/* Запись int в память EEPROM */
void eeplc24_write(unsigned char address_high, unsigned char address_low, int data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address_high);
i2c_write(address_low);
i2c_write((data>>8) & 0xFF);
i2c_write(data & 0xFF);
i2c_stop();
/* 10ms delay to complete the write operation */
delay_ms(7);
}

/* Чтение long int из памяти EEPROM */
long int eeplc24_read(unsigned char address_high, unsigned char address_low) {
int data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address_high);
i2c_write(address_low);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data = (((long int)i2c_read(0))<<24) & 0xFF000000;
data |= (((long int)i2c_read(0))<<16) & 0xFF0000;
data |= (((long int)i2c_read(0))<<8) & 0xFF00;
data |= i2c_read(0)  & 0xFF;
i2c_stop();
return data;
}

/* Запись long int в память EEPROM */
void eeplc24_write(unsigned char address_high, unsigned char address_low, long int data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address_high);
i2c_write(address_low);
i2c_write((data>>24) & 0xFF);
i2c_write((data>>16) & 0xFF);
i2c_write((data>>8) & 0xFF);
i2c_write(data & 0xFF);
i2c_stop();
/* 10ms delay to complete the write operation */
delay_ms(7);
}


В функции eeplc24_write параметр data поидее компилятор сам приведёт к uint8, но если ругаться будет приведёте.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Пт май 08, 2020 01:09:15 
Первый раз сказал Мяу!
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Ср дек 05, 2018 23:10:34
Сообщений: 25
Рейтинг сообщения: 0
ошибки.
записываю допустим число: 550 - считываю 767; записываю 34 считываю 255


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Пт май 08, 2020 08:30:25 
Ум, честь и совесть. И скромность.
Аватар пользователя
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18450
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ELECTROS, ваши функции на запись работать могут с ошибками, причем очень неприятными для содержимого микросхем. вы забыли, что запись ведется постранично...

вот так будет работать, но медленно:
Код:
// это то, что уже есть
unsigned char eeplc24_read(unsigned char address_high, unsigned char address_low);
void eeplc24_write(unsigned char address_high, unsigned char address_low, unsigned char data);

// это функция чтения любого числа, массива и т.п.
void eeplc24_read_block(void *dest, unsigned int eadr, unsigned int len){
   unsigned char * ptr = dest;
   while(len--){
      *ptr++ = eeplc24_read(eadr>>8, eadr);
      eadr++;
   }
}

// это функция записи любого числа, массива и т.п.
void eeplc24_write_block(void *src, unsigned int eadr, unsigned int len){
   unsigned char * ptr = src;
   while(len--){
      eeplc24_write(eadr>>8, eadr, *ptr++);
      eadr++;
   }
}

// запись float по адресу 123
float data = 0.12E-3;
eeplc24_write_block(&data, 123, sizeof(float));

// чтение
eeplc24_read_block(&data, 123, sizeof(float));


Добавлено after 4 minutes 26 seconds:
Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чисел?
запись массива
Код:
int array[12];
eeplc24_write_block(array, 100, sizeof(array));
чтение аналогично

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Пт май 08, 2020 09:32:09 
Открыл глаза
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Пт ноя 11, 2016 09:17:49
Сообщений: 67
Рейтинг сообщения: 0
ARV, гляну а ж даташит интересно стало. Байт записать можно а больше нельзя, странно.
Пы.сы. Ведь точно, считать можно как хочешь а записать только один байт или всю страницу.


Последний раз редактировалось ELECTROS Пт май 08, 2020 09:42:54, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Пт май 08, 2020 09:35:25 
Ум, честь и совесть. И скромность.
Аватар пользователя
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18450
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ELECTROS писал(а):
Байт записать можно а больше нельзя
больше тоже можно, но постранично - муторно, зато быстро: страница пишется за то же время, что и 1 байт. читайте даташит, да.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Пт май 08, 2020 10:13:15 
Открыл глаза
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Сб май 21, 2016 10:06:11
Сообщений: 73
Откуда: Россия
Рейтинг сообщения: 0
да, да. если попали между страниц, то привет. запись будет с ошибкой.
Тут либо по одному байту делать запись. либо контролировать страницы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Пт май 08, 2020 17:26:48 
Первый раз сказал Мяу!
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Ср дек 05, 2018 23:10:34
Сообщений: 25
Рейтинг сообщения: 0
Код:
// это функция чтения любого числа, массива и т.п.
void eeplc24_read_block(void *dest, unsigned int eadr, unsigned int len){
   unsigned char * ptr = dest;
   while(len--){
      *ptr++ = eeplc24_read(eadr>>8, eadr);
      eadr++;
   }
}

// это функция записи любого числа, массива и т.п.
void eeplc24_write_block(void *src, unsigned int eadr, unsigned int len){
   unsigned char * ptr = src;
   while(len--){
      eeplc24_write(eadr>>8, eadr, *ptr++);
      eadr++;
   }
}

скажите, можно ли эти функции вставить в библиотеку?
скажите как правильно вызвать?
что означает указатель на переменную *dest ; *src ?.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Пт май 08, 2020 17:57:22 
Нашел транзистор. Понюхал.
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Карма: 4
Рейтинг сообщений: 46
Зарегистрирован: Пт дек 25, 2015 19:40:59
Сообщений: 168
Рейтинг сообщения: 0
Указатель на переменную означает, внезапно, что это указатель на переменную. Букварь читать. И да, там рядом про приоритеты операций тоже написано, тоже внимательно изучите.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Пт май 08, 2020 20:47:32 
Ум, честь и совесть. И скромность.
Аватар пользователя
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18450
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Я же привёл примеры того, как использовать функции! Не знаю, что вы имеете ввиду под "библиотекой", но я бы просто вынес их в отдельный сишный файл, который бы просто добавлял к нужным проектам, да и все. Можно ещё сделать заголовочный файл, в котором просто написать прототипы этих функций...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Пт май 08, 2020 20:58:20 
Первый раз сказал Мяу!
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Ср дек 05, 2018 23:10:34
Сообщений: 25
Рейтинг сообщения: 0
код не работает! всё равно передается 1 байт 0...255 смотрю запись/чтение логическим анализатором.
Код:
#ifndef _24lcxx_INCLUDED_
#define _24lcxx_INCLUDED_

#pragma used+

  /* Чтение байта ипамяти  EEPROM */
unsigned char eeplc24_read(unsigned char address_high, unsigned char address_low);

/* запись  в память EEPROM */
void eeplc24_write(unsigned char address_high, unsigned char address_low, unsigned char data);

    // это функция чтения любого числа, массива и т.п.
   void eeplc24_read_block(void *dest, unsigned int eadr, unsigned int len){
   unsigned char * ptr = dest;
    while(len--){
      *ptr++ = eeplc24_read(eadr>>8, eadr);
      eadr++;
    }
  }

// это функция записи любого числа, массива и т.п.
   void eeplc24_write_block(void *src, unsigned int eadr, unsigned int len){
   unsigned char * ptr = src;
    while(len--){
      eeplc24_write(eadr>>8, eadr, *ptr++);
      eadr++;
    }
  }


#pragma used-

#pragma library 24lcxx.lib

#endif


Добавлено after 5 minutes 25 seconds:
Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чисел?
библиотека это и есть отдельный файл, который привязывается к сишному файлу 24lcXX.lib 24lcXX.h


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Пт май 08, 2020 21:54:06 
Открыл глаза
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Пт ноя 11, 2016 09:17:49
Сообщений: 67
Рейтинг сообщения: 0
Ну вообще то грубо говоря *.lib это закрытый *.с. Имея исходник, lib файл сделать легко, поэтому тут разговоры ни о чём на этот счёт. По мне так это нужно в одном случае - если отдаётся на сторону весь проект и не хочется светить отдельные его части.

CAT86 Давай те с начало, говорите не работает. А с теми функциями которые вначале приводили работает? Как вы используете функции пример приведите. Поясните что значит передаётся один байт? (может и не то но всё же: как бы передача и будет идти по одному байту, но по инкрементируемому адресу, столько раз сколько укажите).

ATON, я про указатели понял еще после первого своего сообщения :idea: :) .


Последний раз редактировалось ELECTROS Пт май 08, 2020 22:48:52, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чи
СообщениеДобавлено: Пт май 08, 2020 22:53:56 
Первый раз сказал Мяу!
Рейтинг продавца: нет оценок
[Всего оценок: 0]
Зарегистрирован: Ср дек 05, 2018 23:10:34
Сообщений: 25
Рейтинг сообщения: 0
тоже не работает я писал, несколько постов с верху.

int M1_side_A=0;
if (mem==1){ eeplc24_write(0, 0, M1_side_A);}

M1_side_A=eeplc24_read(0,0);

если я пытаюсь записать в переменную M1_side_A=300; то запишется 43, а если M1_side_A=-300; то 44 и в том духе


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  1,  

Часовой пояс: 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