Перейти к содержанию

24c04 для Pic16f84


Рекомендуемые сообщения

Привет Всем.

Собсно сабж.

Как правильно подключить 24C04 к PIC16F84 и какие сигналы посылать, чтобы изпользовать 24C04 как дополнительную память?

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Привет Всем.

Собсно сабж.

Как правильно подключить 24C04 к PIC16F84 и какие сигналы посылать, чтобы изпользовать 24C04 как дополнительную память?

Почитай про шину I2C :) Поскольку PIC16F84 не имеет аппаратного I2C, то придётся использовать программную эмуляцию этой шины. Если сильно не хочешь заморачиваться с написанием кода, то советую поставить MikroC, там есть готовые функции для софтового I2C.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Смотря в качестве какой памяти использовать:

1) если в качестве памяти данных - то можно, но в PIC16F84 нет аппаратной поддержки I2C, придется написать свой драйвер или использовать готовый из библиотеки.

2) если в качестве памяти программ - то не получится.

P.S. Аппаратную поддержку I2C имеет например PIC16F873, он не намного дороже, за то больше портов, таймеров, есть АЦП, больше памяти и т. д.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Мне для памяти данных. А драйвер можно попробовать и вручную написать, все равно в какойто степени интересно самому написать ;)

А вот как правильно подключать 24C04?

Ссылка на комментарий
Поделиться на другие сайты

Обмен идет по двум проводам SCL - синхронизация и SDA - данные, вот и подключай их к контроллеру в принципе к любым портам, но с учетом, что некоторые порты контроллера однонаправленные или имеют открытый сток на выходе и естественно драйвер I2C должен работать именно с теми портами, к которым подключена микра. В твоем варианте шина SCL - однонаправленная в сторону памяти, а SDA - двунаправленная, в зависимости от действия (передача адреса, чтение, запись, подтверждение и т.д.). Чтобы написать драйвер необходимо знать протокол I2C. Инфы много, даже есть даташите на 24C04, почитай там есть вся нужная инфа.

Изменено пользователем ВВЛ
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Не понятно, что именно тебе не понятно.

Про I2C море инфы по русски.

Цоколевка микры из PDF и по англ. все понятно. Задай конкретный вопрос (вопросы), я тебе обьясню. Нет смысла сюда набивать то, что можно прочитать в другом месте.

Ссылка на комментарий
Поделиться на другие сайты

Мне нужно подключить к PIC микросхему 24С04. Для этого, я так понял, нада написать драйвер, т. к. 16F84 не поддерживает I2C. Вот это мне и надо - написать драйвер, и понять, когда и какие сигналы нужно посылать на 24С04, чтобы считать\записать инфу. Вот.

Ссылка на комментарий
Поделиться на другие сайты

У меня есть русское описание 24С04 с достаточно подробно расписанным I2C и командами, я по нему писал свой первый драйвер I2C для PIC, но оно отсканированное в JPG - формате, 10 листов (файлов), занимает в архиве 3,855 метра, через форум не получится, могу на мыло, скажи куда.

P.S. Может кто преобразует в PDF и выложит для всех.

Изменено пользователем ВВЛ
Ссылка на комментарий
Поделиться на другие сайты

Извини, не успеваю, надо бежать, пришлю завтра, обещаю.

Да ниче страшного, и так помагаешь.

Я так понял, чтобы записать данные(побайтовая запись) надо:

(СТАРТ) на линию SDA нада подать низкий уровень (я так понял, первоначально стоит высокий уровень, т.к. через резисторы линия SDA подключена к питанию +), а на линии SCL высокий уровень... а дальше немного запутался

Тут получается, надо посылать цепочку сигналов. Так?

Извини, не успеваю, надо бежать, пришлю завтра, обещаю.

Да ниче страшного, и так помагаешь.

Я так понял, чтобы записать данные(побайтовая запись) надо:

(СТАРТ) на линию SDA нада подать низкий уровень (я так понял, первоначально стоит высокий уровень, т.к. через резисторы линия SDA подключена к питанию +), а на линии SCL высокий уровень... а дальше немного запутался

Тут получается, надо посылать цепочку сигналов. Так?

Ссылка на комментарий
Поделиться на другие сайты

Я так понял, чтобы записать данные(побайтовая запись) надо:

(СТАРТ) на линию SDA нада подать низкий уровень (я так понял, первоначально стоит высокий уровень, т.к. через резисторы линия SDA подключена к питанию +), а на линии SCL высокий уровень... а дальше немного запутался

Тут получается, надо посылать цепочку сигналов. Так?

Все правильно, условием не занятой шины является наличие "1" на SCL и SDA (ведь на шине могут висеть и другие устройства, в том числе и другие "ведущие"), поэтому корректный драйвер должен проверить шину на свободность перед подачей условия "старт". После условия "старт" передается байт идентификации (в твоем случае если выводы 2 и 3 микросхемы памяти на земле этот байт равен при записи - A0h), после этого в след такте синхросигнала SCL надо принять подтверждение от памяти, для этого контроллер должен "отпустить" шину SDA т.е. перевести этот порт на ввод и прочитать "0", если нуля не было - значит идентификация не произошла - и надо начать все с начала. После успешной идентификации надо передать байт адреса и снова принять подтверждение, потом надо передать байт данных, снова принять подтверждение, далее условие "стоп", все - шина свободна. Это была процедура побайтовой записи. другие операции делаются почти также просто - читай внимательно, там все написано.

Вот текст моего драйвера, но только он для микры 24С256, в принципе все тоже самое, разница лишь в том, что здесь для передачи адреса надо передать два байта, а в остальном один в один. Драйвер написан для порта PORTB, причем SCL - это PORTB,6 а SDA - это PORTB,7.

Предварительно установив значение адреса - I2CADR0, I2CADR1 и данных (при записи) - I2CDATA, вызываешь подпрограмму:

WRITEI2C - для записи

READI2C - для чтения

и все. Для микросхемы 24С04 элементарно переделать, попробуй сам. Успехов.

;==========================================================================

; ***** WAR *****

I2CADR0 EQU H'25' ;ML. ADRES FLASH

I2CADR1 EQU H'26' ;ST. ADRES FLASH

I2CDATA EQU H'27' ;DANNYE FLASH

I2CPROM EQU H'28' ;PROM. HRANENIE W I2C

SLVADR EQU H'29' ;Slave address for I2C routines.

ATEMPT EQU H'2A' ;KOLICESTWO POPYTOK

FLAG EQU H'2B' ;NABOR FLAGOW

; ***** CONST *****

I2CBUSY EQU H'04' ;FLAG ZANJATOSTI SHINY I2C

NOACK EQU H'05' ;FLAG NEPODTWERGDENIJA SHINY I2C

BUSFAULT EQU H'06' ;FLAG NEISPRAWNOSTI SHINY I2C

SCL EQU H'06'

SDA EQU H'07'

; ***** P/P ZAPISI BAJTA I2CDATA PO ADRESU I2CADR0,I2CADR1 *****

WRITEI2C: MOVLW 0A0H

MOVWF SLVADR

BTFSC I2CADR1,0

BSF SLVADR,1

BSF FLAG,I2CBUSY

CALL GOMASTER ;-START-,-DEVICE ADRES-,-ACK-

BTFSC FLAG,BUSFAULT

GOTO ERR ;OSHIBKA

BTFSC FLAG,NOACK

GOTO ERR ;OSHIBKA

MOVF I2CADR0,W

CALL SENDBYTE ;PERED. ML. BAITA ADRESA

BTFSC FLAG,NOACK

GOTO ERR ;OSHIBKA

MOVF I2CDATA,W

CALL SENDBYTE ;PERED. BAITA DANNYH

BTFSC FLAG,NOACK

GOTO ERR ;OSHIBKA

CALL SENDSTOP ;PERED. -STOP-

BCF FLAG,I2CBUSY

RETURN

; ***** P/P CHTENIJA BAJTA I2CDATA PO ADRESU I2CADR0,I2CADR1 *****

READI2C: MOVLW 0A0H

MOVWF SLVADR

BTFSC I2CADR1,0

BSF SLVADR,1

BSF FLAG,I2CBUSY

CALL GOMASTER ;-START-,-DEVICE ADRES-,-ACK-

BTFSC FLAG,BUSFAULT

GOTO ERR ;OSHIBKA

BTFSC FLAG,NOACK

GOTO ERR ;OSHIBKA

MOVF I2CADR0,W

CALL SENDBYTE ;PERED. ML. BAITA ADRESA

BTFSC FLAG,NOACK

GOTO ERR ;OSHIBKA

CALL SENDSTOP ;PERED. -STOP-

CALL RCVDATA ;PRIEM PO I2C

BTFSC FLAG,BUSFAULT

GOTO ERR ;OSHIBKA

BTFSC FLAG,NOACK

GOTO ERR ;OSHIBKA

BCF FLAG,I2CBUSY

RETURN

ERR: CALL SENDSTOP

BCF FLAG,I2CBUSY

RETURN

;*************************************

; P/P PRIEMA BAITA DANNYH

; SlvAdr - KOD WYBORA USTROJSTWA DLJA PEREDACHI PO I2C

;*************************************

RCVDATA: INCF SLVADR,F

CALL GOMASTER

BTFSC FLAG,NOACK

GOTO RDEX ;OSHIBKA

BCF INTCON,GIE

BSF STATUS,RP0

BSF TRISB,SDA

BCF STATUS,RP0

BSF INTCON,GIE

CALL RCVBYTE

BCF INTCON,GIE

BSF STATUS,RP0

BCF TRISB,SDA

BCF STATUS,RP0

BSF INTCON,GIE

RDEX: CALL SENDSTOP

RETURN

;*************************************

; P/P PEREDACHI -START-,

; KODA WYBORA USTROJSTWA DLJA PEREDACHI PO I2C

;*************************************

GOMASTER: BCF INTCON,GIE

BSF STATUS,RP0

BSF TRISB,6

BSF TRISB,7

BCF STATUS,RP0

BSF INTCON,GIE

MOVLW 0AH

MOVWF ATEMPT ;CHISLO POPYTOK

GOMASTER3: BCF FLAG,NOACK

BCF FLAG,BUSFAULT

BTFSS PORTB,SCL

GOTO FAULT

BTFSS PORTB,SDA

GOTO FAULT

BSF PORTB,SCL

BSF PORTB,SDA

BCF INTCON,GIE

BSF STATUS,RP0

BCF TRISB,6

BCF TRISB,7

BCF STATUS,RP0

BSF INTCON,GIE

BCF PORTB,SDA

CALL BITDLY

BCF PORTB,SCL

CALL BITDLY

MOVF SLVADR,W

CALL SENDBYTE

BTFSS FLAG,NOACK

GOTO GOMASTER1

DECFSZ ATEMPT,F

GOTO GOMASTER2

GOMASTER1: RETURN

GOMASTER2: CALL SENDSTOP

GOTO GOMASTER3

FAULT: BSF FLAG,BUSFAULT

RETURN

;*************************************

; P/P PEREDACHI BAITA IZ W I KONTROL PODTWERGDENIJA

;*************************************

SENDBYTE: MOVWF I2CPROM

MOVLW 8

MOVWF BITCNTI2C

SBLOOP: RLF I2CPROM,F

BTFSS STATUS,C

GOTO SBLOOP1

BSF PORTB,SDA

GOTO SBLOOP2

SBLOOP1: BCF PORTB,SDA

SBLOOP2: CALL BITDLY

CALL SCLHIGH

CALL BITDLY

BCF PORTB,SCL

CALL BITDLY

DECFSZ BITCNTI2C,F

GOTO SBLOOP

BCF INTCON,GIE

BSF STATUS,RP0

BSF TRISB,SDA

BCF STATUS,RP0

BSF INTCON,GIE

CALL SCLHIGH

CALL BITDLY

BTFSC PORTB,SDA

BSF FLAG,NOACK

BCF PORTB,SCL

CALL BITDLY

BCF INTCON,GIE

BSF STATUS,RP0

BCF TRISB,SDA

BCF STATUS,RP0

BSF INTCON,GIE

RETURN

;*************************************

; P/P PEREDACHI -STOP- PO I2C

;*************************************

SENDSTOP: BCF PORTB,SDA

CALL SCLHIGH

CALL BITDLY

BSF PORTB,SDA

CALL BITDLY

RETURN

;*************************************

; P/P ZADERGKI NA 5 MKS DLJA I2C

;*************************************

BITDLY: NOP

NOP

RETURN

;*************************************

; P/P USTANOWKI SCL W 1

;*************************************

SCLHIGH: BSF PORTB,SCL

RETURN

;*************************************

; P/P PRIEMA BAITA PO I2C

; I2CDATA - PRINJATYJ BAIT

;*************************************

RCVBYTE: MOVLW 8H

MOVWF BITCNTI2C

MOVLW 0

MOVWF I2CDATA

RBLOOP: CALL SCLHIGH

CALL BITDLY

BTFSC PORTB,SDA

GOTO RBLOOP1

BCF STATUS,C

GOTO RBLOOP2

RBLOOP1: BSF STATUS,C

RBLOOP2: RLF I2CDATA,F

BCF PORTB,SCL

CALL BITDLY

DECFSZ BITCNTI2C,F

GOTO RBLOOP

BSF PORTB,SDA

BCF INTCON,GIE

BSF STATUS,RP0

BCF TRISB,SDA

BCF STATUS,RP0

BSF INTCON,GIE

CALL SCLHIGH

CALL BITDLY

BCF PORTB,SCL

CALL BITDLY

RETURN

Изменено пользователем ВВЛ
Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...
Спасибо большое. Сижу разбираюсь. Есть над чем помучица :)

Если что-то не получится - заглыдывайте на форум microchip.ru (а также microchip.su) - там люди живее помогут и исходниками, и советом.

Эту ветку читал и плакалЪ - целый месяц мучений..., а в результате бросили какой-то код...

Ссылка на комментарий
Поделиться на другие сайты

Спасибо большое. Сижу разбираюсь. Есть над чем помучица :)

Если что-то не получится - заглыдывайте на форум microchip.ru (а также microchip.su) - там люди живее помогут и исходниками, и советом.

Эту ветку читал и плакалЪ - целый месяц мучений..., а в результате бросили какой-то код...

Не бросили, а помогли разобраться на рабочем примере. Чел сам хотел всё сделать.

Ссылка на комментарий
Поделиться на другие сайты

Если что-то не получится - заглыдывайте на форум microchip.ru (а также microchip.su)

Спасибо за сайт.

Но, действительно я хотел сам разобраться, но нет времени, поэтому мало что из этого вышло.

Ссылка на комментарий
Поделиться на другие сайты

  • 3 года спустя...
У меня есть русское описание 24С04 с достаточно подробно расписанным I2C
Инфа интимная?Выложили-бы здесь.Я например с удовольствием прочитаю.
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...