| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Помогите с 24с16
10.10.2013, 10:03
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Помогите с 24с16
begun, у вас отсутствует расчет адреса блока, будут писаться только первые 256 байт. Это относится к 16c, там номер блока выбирается адресом
0хА0
0хА1
...
0хА8
в моем примере он рассчитывается (честно спионерил в сети), код рабочий (с рабочего проекта), следите за типами переменных (размер/знаковость)
|
|
|
|
13.10.2013, 02:03
|
|
|
Прописка
Регистрация: 05.09.2012
Адрес: Зурбаган
Сообщений: 204
Сказал спасибо: 9
Сказали Спасибо 45 раз(а) в 25 сообщении(ях)
|
Re: Помогите с 24с16
похоже кого-то это зацепило.
но помощи всё равно не будет. ищите.
я сам не друг кнопочек. моя стихия воплощение с паяльником.
|
|
|
|
13.10.2013, 13:26
|
|
|
Гражданин KAZUS.RUN
Регистрация: 18.07.2006
Сообщений: 894
Сказал спасибо: 244
Сказали Спасибо 31 раз(а) в 28 сообщении(ях)
|
Re: Помогите с 24с16
друзья,
предложенная AJScorp функция , которая приводится ниже, работает
четко . Запись происходит во всем адресном пространстве 24с16 без единой ошибки. Причем каждая ячейка записыает байты в шестнадцатеричной форме без ошибки т.е. числа от 0х00 до 0xFF.
только вот, при чтении, происходит нечто странное что Я не смог обяснит
Без ошибки читаются числа от 0х00 до 0х7F а выше уже читаются как
0хFF. т.е. как только на восьмом разряде появляется единица с ячейки читается 255.
Может у кого были такие моменты и поделиться опытом в чем тут может быть дело?
ну осталось чуть чуть давайте ну друзья- киты.
unsigned int eep_read(unsigned int address)
{
unsigned char data;
i2c_start(); i2c_write((EEPROM_BUS_ADDRESS | ((address››7) & 0x0E));
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}
//-------------------------------------------------------------
void eep_write(unsigned int address, unsigned char data)
{
i2c_start(); i2c_write((EEPROM_BUS_ADDRESS | ((address››7) & 0x0E));
i2c_write(address);
i2c_write(data);
i2c_stop();
}
|
|
|
|
13.10.2013, 14:07
|
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: Помогите с 24с16
Проверьте все типы переменных. Уродует при единице в знаковом разряде (воспринимается как отрицательное число со всеми последствиями). Не допускайте неявных преобразований, в критических (подозрительных) местах указывайте явно.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
13.10.2013, 17:49
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,550
Сказал спасибо: 384
Сказали Спасибо 735 раз(а) в 416 сообщении(ях)
|
Re: Помогите с 24с16
Сообщение от begun
|
|
в чем тут может быть дело?
|
Возможно, дело в нотах.
|
Цитата:
|
|
7 старших бит DEV SEL (1й и 3й байты) при рандомном чтении должны быть одинаковы.
|
Figure 11. Read Modes Sequence
|
|
|
|
13.10.2013, 19:01
|
|
|
Гражданин KAZUS.RUN
Регистрация: 18.07.2006
Сообщений: 894
Сказал спасибо: 244
Сказали Спасибо 31 раз(а) в 28 сообщении(ях)
|
Re: Помогите с 24с16
уважаемый AJScorp,уважаемые друзья,
рандом - ведь , это чтение со случаного адреса, но вот привожу полный код, где адресс указан четко 0х00.
т.е. читается с ячейки 0х00 и записывается в ячейку 0х34 число 0х9D.
так вот, когда это число 0х7D, записывается четко ,но стоит только сделать его 0х80 как уже записывается 0хFF.
Вот так парадокс. А может ли ,что в этом виноват протеус , где идет симмуляция?
И еще, когда на место 24с16 вставлю 24с08 ,все становится на своем месе.
/************************************************** ***
Chip type : ATmega8
Program type : Application
Clock frequency : 4,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
************************************************** ***/
#include ‹mega8.h›
#include ‹stdio.h›
#include ‹delay.h›
char a9;
// I2C Bus functions
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include ‹i2c.h›
#define EEPROM_BUS_ADDRESS 0xa0
//---------------------------------------------------------------------
unsigned int eep_read(unsigned int address)
{
unsigned char data;
i2c_start();
i2c_write((EEPROM_BUS_ADDRESS | ((address››7) & 0x0E)));
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}
//-------------------------------------------------------------
void eep_write(unsigned int address, unsigned char data)
{
i2c_start();
i2c_write((EEPROM_BUS_ADDRESS | ((address››7) & 0x0E)));
i2c_write(address);
i2c_write(data);
i2c_stop();
}
void main(void)
{
PORTB=0x3C;
DDRB=0x0C;
PORTC=0x7D;
DDRC=0x02;
PORTD=0x00;
DDRD=0xFF;
// Global enable interrupts
#asm("sei")
//-----------------------------------------------
eep_write(0,0x9D);
delay_ms(10);
//--------------------------------------------
while (1)
{
if(PINC.0==0)
{
delay_ms(10);
eep_write(0x34,eep_read(0x00));
}
};
}
|
|
|
|
13.10.2013, 19:57
|
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: Помогите с 24с16
Сообщение от begun
|
|
рандом - ведь , это чтение со случаного адреса
|
Random - это не только "случайный", но и "произвольный". Что из этих значений тут больше к месту? В каком значении есть смысл?
Сообщение от begun
|
|
А может ли ,что в этом виноват протеус , где идет симмуляция?
|
А "живой" чип - "жалкое подобие левой руки".
Извините, конечно, но протез - есть протез.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
13.10.2013, 21:06
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,550
Сказал спасибо: 384
Сказали Спасибо 735 раз(а) в 416 сообщении(ях)
|
Re: Помогите с 24с16
Сообщение от begun
|
|
рандом - ведь , это чтение со случаного адреса, но вот привожу полный код, где адресс указан четко 0х00.
|
Немного не так процесс понимаете. Там всего два варианта - либо чтение с текущего адреса, либо чтение с указанного адреса (Random Read). У Вас второй вариант.
Сообщение от begun
|
|
А может ли ,что в этом виноват протеус
|
Возможно и протеус, но косяк с нотой таки имеется, и, непонятно к чему может привести. Надо бы поправить.
З.Ы. Я то думал, у Вас железка живая не заводится.
|
|
|
|
13.10.2013, 22:10
|
|
|
Гражданин KAZUS.RUN
Регистрация: 18.07.2006
Сообщений: 894
Сказал спасибо: 244
Сказали Спасибо 31 раз(а) в 28 сообщении(ях)
|
Re: Помогите с 24с16
спасибо ,с рандомом разобрался ,но вот не понятно "нота" -это баит чтоли, или бит?
|
|
|
|
13.10.2013, 22:23
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,550
Сказал спасибо: 384
Сказали Спасибо 735 раз(а) в 416 сообщении(ях)
|
Re: Помогите с 24с16
Сообщение от begun
|
|
"нота" -это баит чтоли, или бит?
|
"Note" - примечание. Пост #25.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:00.
|
|