Для чего нужно чтение от текущего адреса, если адрес и так инкрементируется? Дело в том, что без стоп - старта адрес инкрементируется только в пределах блока. Т.е. только байт младшего адреса. По аналогии - при записи адрес инкрементируется только в пределах страницы (сам не проверял, но верю :)
В конце блока, для приращения старшего адреса, необходимо выполнить стоп - старт. Можно конечно все ячейки считывать в режиме "от текущего адреса", но это будет избыточно (не так изящно).
Альберт, аппаратные последствия стоп-старта могут быть бОльшими, чем адресное "разруливание". То есть, приобретя одно, можно потерять другое. Все тонкости этого "действа" ведомы только разработчикам. Подобного рода идеи нужно проверять в железе. Конечно было бы совсем не плохо, если бы получилось.
Не понял... Именно при отладке программы(платы) это и обнаружилось. Пользуюсь только MPLAB-ом и IC-Prog с JDM программатором. Нет даже возможности прочитать 24С64. Поэтому отлаживал на реальном устройстве, которое делаю для станка с ЧПУ. Приходится все делать тщательно вдвойне. Шаг влево.. шаг вправо.. так сказать.. и ничечем не проверишь. Считанную информацию скидывал во внутреннюю EEPROM 16F628A, работает безотказно (далее JDM). Считывал с нулевого адреса. При попытке считать больше 256 байт получаю ошибку. Т.е. Читаю 260 байт. это 104h байт. Первые четыре байта читаются нормально. дальше идет или FF FF FF... или белиберда из другого участка памяти (из разных, закономерность выяснять не стал) Для начала проверил, что в 24С64 действительно записано то что надо. Считал с заданного адреса (старший 01h, младший 00h). Читается нормально. Остается "чтение от текущего адреса". Изменил программу так что первый байт с адресом 0100h читался "от текущего адреса" и все стало читаться. Evgeny Korabelnikov пишет:
цитата:
Конечно было бы совсем не плохо, если бы получилось.
Так получилось же! Я счастлив. Это моя вторая программа на пиках. И все так "серьезно". Последний раз я баловался программированием чуть ли не на "спектруме". Может и последняя. В принципе, мне сейчас только станок нужен. Надо "жизнь налаживать", на обочине не уютно. Как можно заработать программированием не представляю. Кажется я опять отвлекся, язык чешется, а поговорить не с кем.
Пост N: 2
Зарегистрирован: 03.11.09
Откуда: г.Иркутск
Рейтинг:
0
Отправлено: 31.01.10 09:38. Заголовок: проблема с записью 24С64
Добрый День. Разбираюсь с разделом 2.2 практикума, с записью 24С64. Не получается запись всех 32 блоков памяти. Программа write_5 практикума записывала данные в пределах одной страницы. Я увеличил время паузы после записи страницы до 13 миллисекунд-стало записываться 12.5 блоков и не болле того. Я ввёл дополнительное стоп-условие после записи 8-го блока и также паузу-всё безрезультатно-записывается 12 блоков и баста. Пока не могу понять в чём ошибка. Может кто подскажет, кто сталкивался с подобной ситуацией.
Пост N: 1640
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг:
4
Отправлено: 31.01.10 20:45. Заголовок: Вы м/схему купили ..
Вы м/схему купили или откуда-то взяли? В первом случае это ненормально, а во втором, может быть установлена защита части памяти от записи (можно только считать то, что записано на заводе-изготовителе). На сколько я знаю, снять такую защиту весьма затруднительно (если вообще возможно).
PS: приличное количество лет назад (конец 90-х годов --- начало столетия. Точно не помню, но давно), в журнале "Радио", была серия статей, посвященных I2C/24Схх. В одной из них говорилось о том, как именно устанавливается защита от записи (запись специального кода). На мой взгляд, было бы совсем не плохо "просканировать" это направление и поделиться результатами. Я с большим удовольствием опубликую такую статью в "Обмене...".
Эти микросхемы здесь у нас продаются-купил в магазине в корпусе dip-8. Евений Александрович, если начать запись скажем с адреса 0A00 или выше, то запись в ту часть памяти,которая не записывалась происходит.но опять же ограничивается 12 блоками. Я усложнил Вашу программу тремя нажатиями кнопки-при первом нажатии записывается 12 блоков, при втором -12 блоков, при третьем-8 блоков,тогда записал таки все 32 блока. Проверял пайку, программу-ошибок не нашёл.
Пост N: 1102
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг:
3
Фото:
Отправлено: 01.02.10 16:01. Заголовок: selive пишет: в пре..
selive пишет:
цитата:
в пределах одной страницы
А это похоже и есть ключ к разгадке, раз страницу пишет, почему остальные не пишет... Смотрите тщательней, прогоните в протеусе с отладчиком I2C, очень помогает... Если мы не видим черную кошку в темной комнате, это еще не значит что ее нет...
Пост N: 5
Зарегистрирован: 03.11.09
Откуда: г.Иркутск
Рейтинг:
0
Отправлено: 01.02.10 18:18. Заголовок: у меня нет отладчика..
у меня нет отладчика I2C(если б был наверное я б не задавал глупых вопросов), но интересно другое-я взял 24С256,попробовал писать её-там всё пишется без проблем. Честно говоря ничего не понимаю, но думаю что дело в микросхеме
Пост N: 145
Зарегистрирован: 13.12.07
Откуда: г.Макеевка
Рейтинг:
1
Отправлено: 08.02.10 12:10. Заголовок: Нашел на этом сайте ..
Нашел на этом сайте http://www.microchip.su/showthread.php?t=5164 Proteus7.6 sp4 Скачал, установил(он установился поверх моего старого Р_7.2.2) Проверял старые свои проекты на новом Proteus7.6 sp4, все работают. Как то ранее пробовал открыть проект Р_7.4.0 в своем Р_7.2.2 - не открывается. Получается, что ранние проекты открыть можно, а те которые уже поздние(с более высокой цифрой, по сравнению с твоим) нет. Вот и задача. А стоит ли менять(из-за нужного элемента стоит) или нет? Думаю, что нужно иметь два Proteusа - для универсальности.
Все даты в формате GMT
3 час. Хитов сегодня: 13
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет