Прошу помощи в соединение мк с памятью
- Сообщения: 24
- Зарегистрирован: Вт мар 20, 2007 19:09:54
- Реклама
- Сообщения: 24
- Зарегистрирован: Вт мар 20, 2007 19:09:54
- Сообщения: 232
- Зарегистрирован: Ср фев 28, 2007 17:48:07
- Сообщения: 24
- Зарегистрирован: Вт мар 20, 2007 19:09:54
- Сообщения: 232
- Зарегистрирован: Ср фев 28, 2007 17:48:07
- Реклама
- Сообщения: 24
- Зарегистрирован: Вт мар 20, 2007 19:09:54
- Сообщения: 232
- Зарегистрирован: Ср фев 28, 2007 17:48:07
- Сообщения: 24
- Зарегистрирован: Вт мар 20, 2007 19:09:54
- Сообщения: 232
- Зарегистрирован: Ср фев 28, 2007 17:48:07
- Сообщения: 24
- Зарегистрирован: Вт мар 20, 2007 19:09:54
- Сообщения: 24
- Зарегистрирован: Вт мар 20, 2007 19:09:54
Вот что у меня(разумеется с вашей помощью) пока получилось:
.cseg
.org 0
ldi R15, (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);старт
out TWCR, r15
ldi R15, 10100001;посылает адрес устройства памяти и 1 - код чтения
out TWDR, r15
testACK: in R15, TWSR
andi R15, 0xf8
cpi R15, MT_SLA_ACK;проверяет наличие ответа от памяти
brne testACK;подразумевается что память работает, поэтому
;программа может ждать ответа бесконечно пока не получит
;далее чтение памяти и посылка ответа. Я что то не понял как это сделать
ldi R15, (1<<TWINT) | (1<<TWEN) | (1<<TWSTO)
out TWCR, r15;ну и стоп
.cseg
.org 0
ldi R15, (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);старт
out TWCR, r15
ldi R15, 10100001;посылает адрес устройства памяти и 1 - код чтения
out TWDR, r15
testACK: in R15, TWSR
andi R15, 0xf8
cpi R15, MT_SLA_ACK;проверяет наличие ответа от памяти
brne testACK;подразумевается что память работает, поэтому
;программа может ждать ответа бесконечно пока не получит
;далее чтение памяти и посылка ответа. Я что то не понял как это сделать
ldi R15, (1<<TWINT) | (1<<TWEN) | (1<<TWSTO)
out TWCR, r15;ну и стоп
- Сообщения: 232
- Зарегистрирован: Ср фев 28, 2007 17:48:07
- Сообщения: 24
- Зарегистрирован: Вт мар 20, 2007 19:09:54
вот мои нароботки всё работает, только после записи надо подождать около 50мкс или дольше. прежде чем к памяти обращаться снова. функции чтения и записи проверяют TWSR и если значения соответствуют не корректной работе возвращается код ошибки. Работал с 24С512 выводы адрессов заземлял.
- Вложения
-
- twi_eeprom.txt
- исходник на Си но алгоритм понятен на асму за полчаса(час) можно переделать
- (7.79 КБ) 480 скачиваний
Настоящий кот всегда либо голоден,
либо невыспался ...
либо невыспался ...
- Сообщения: 24
- Зарегистрирован: Вт мар 20, 2007 19:09:54
Понял, что проще подучить С... Появилось несколько вопросов:
1) вопрос к moLCHec - а откуда эта библиотека функций для работы с i2c?
2) можно ли в мк где i2c реализована на аппаратном уровне сразу использовать функции из той библиотеки(всмысле сразу старт)?
3) как в С проверить существует ли переменная(точнее эллемент массива)?
Еще посоветуйте пожалуйста небольшой экранчик по этой шине.
Зарание благодарю.
P.S. Abaktyсh, извените, что гнал на курс - перечитал все понравилось, просто поначлу в глазах зарябило от обилия рекламы и разных цветов.
1) вопрос к moLCHec - а откуда эта библиотека функций для работы с i2c?
2) можно ли в мк где i2c реализована на аппаратном уровне сразу использовать функции из той библиотеки(всмысле сразу старт)?
3) как в С проверить существует ли переменная(точнее эллемент массива)?
Еще посоветуйте пожалуйста небольшой экранчик по этой шине.
Зарание благодарю.
P.S. Abaktyсh, извените, что гнал на курс - перечитал все понравилось, просто поначлу в глазах зарябило от обилия рекламы и разных цветов.
- Сообщения: 232
- Зарегистрирован: Ср фев 28, 2007 17:48:07
Ни чего страшного. Рад что чем то помог.начинающий пояльщик писал(а):P.S. Abaktyсh, извените, что гнал на курс - перечитал все понравилось
Вот я щас запустил мастер кода CVAVR и в нем включил TWI (ярлык 2 wire) затем посмотрел текст - там такие строчки:начинающий пояльщик писал(а):2) можно ли в мк где i2c реализована на аппаратном уровне сразу использовать функции из той библиотеки(всмысле сразу старт)?
Код: Выделить всё
// 2 Wire Bus initialization
// Generate Acknowledge Pulse: Off
// 2 Wire Bus Slave Address: 0h
// General Call Recognition: Off
// Bit Rate: 230,625 kHz
TWSR=0x00;
TWBR=0x00;
TWAR=0x00;
TWCR=0x04;
Не понял вопрос. Именно существование ? или что в нем хранится ?начинающий пояльщик писал(а):как в С проверить существует ли переменная(точнее эллемент массива)?
Для i2c дисплеи от сотовых бывают.начинающий пояльщик писал(а):посоветуйте пожалуйста небольшой экранчик по этой шине.
Вот Апноут infineon.com AP2427 "Using an I2C LCD"
http://www.infineon.com/upload/Document ... 02701_.pdf
исходники
http://www.infineon.com/upload/Document ... 242701.exe
Можно вот такой переходничек сделать к обычному LCD
http://lcd.strony.pl/d-104v1.htm
- Сообщения: 24
- Зарегистрирован: Вт мар 20, 2007 19:09:54
Есть массив неизвестной длинны, но заведомо меньший чем позволяет вместить память. Я думаю неиспользованную память забить нулями, тоесть в цикле пройтись по всем ячейкам памяти, и если эллемент массива для данной ячеки существует то положить туда его значение а если нет, то 0. В таком случае будет упрощено чтение. Хотя если существует функция проверяющая записанно ли что то в ячейку, то проще будет воспользоваться ей при чтении.как в С проверить существует ли переменная(точнее эллемент массива)?
Не понял вопрос. Именно существование ? или что в нем хранится ?
Как-то странно поставлена задача: массив неизвестной длины...начинающий пояльщик писал(а):Есть массив неизвестной длинны, но заведомо меньший чем позволяет вместить память. Я думаю неиспользованную память забить нулями, тоесть в цикле пройтись по всем ячейкам памяти, и если эллемент массива для данной ячеки существует то положить туда его значение а если нет, то 0. В таком случае будет упрощено чтение. Хотя если существует функция проверяющая записанно ли что то в ячейку, то проще будет воспользоваться ей при чтении.
Не понял вопрос. Именно существование ? или что в нем хранится ?
Почему его длина неизвестна? Кому она не известна? Обычно, в нормальных программах так не бывает: всегда должно быть все известно хотя бы самому программисту... Может, тут что-то не так?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 24
- Зарегистрирован: Вт мар 20, 2007 19:09:54
- Сообщения: 232
- Зарегистрирован: Ср фев 28, 2007 17:48:07


