реклама на сайте
подробности

 
 
> I2C EEPROM, проблема.
ControllerZ
сообщение Aug 9 2005, 05:35
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 6-08-05
Пользователь №: 7 409



Есть такая проблема с микросхемой 24C08 После Start на микросхему могу записывать данные считывать все нормально но как только отправляю на нее Stop все микруха молчит и больше не реагирует на Start в чем проблема? smile3046.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Major
сообщение Aug 9 2005, 10:12
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



Тогда подождем кода.
Может acknowledge не дожидаетесь?
Go to the top of the page
 
+Quote Post
ControllerZ
сообщение Aug 9 2005, 10:26
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 6-08-05
Пользователь №: 7 409



Цитата(Major @ Aug 9 2005, 15:12)
Тогда подождем кода.
Может acknowledge не дожидаетесь?
*

У меня в программе алгоритм такой же как в датащите для того чтобы дождаться acknowledge:

....
call STOP

acknowledge_White
call START
btfsc ERROR
goto acknowledge_White

...... ; далее код программы.


Но на acknowledge_White он зацикливается т.к. акноун атвета в старте нет хотя перед формированием стоп ответ на старт был. (может проблема в 24С08 хотя я очень в этом сомневаюсь). twak.gif
Go to the top of the page
 
+Quote Post
ControllerZ
сообщение Aug 9 2005, 17:19
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 6-08-05
Пользователь №: 7 409



Вот моя программа где после Стоп микруха не откликается на Старт может кто подскажет:
list p=16F84
#include <p16F84.inc>

SDA equ 0
SCL equ 1
Byte equ 0x0C
n equ 0x0D
Err equ 0x0E

ReadEEPROM equ 0xAE
WriteEEPROM equ 0xAF

org 0x00

Start
clrf PORTB
bsf STATUS, RP0
clrw
movwf TRISB
bcf STATUS, RP0

call SetupI2C ; Установки для I2C шины SDA - RA0, SCL - RA1
call StartI2C ; Установка ЕЕПРОМ в режим Старт
movlw WriteEEPROM ; Насроить ЕЕПРОМ для записи в нее данных
movwf Byte

call SendByte
call ACKTest ; Байт принят?
btfsc Err, 0 ; Если не принят то обработка ошибки
call OnError

clrf Byte ; Устанавливаем адрес на 0
call SendByte
call ACKTest ; Байт принят?
btfsc Err, 0 ; Если не принят то обработка ошибки
call OnError

movlw 0xAA ; Записываем b'10101010' по заданному адресу
movwf Byte
call SendByte
call ACKTest ; Байт принят?
btfsc Err, 0 ; Если не принят то обработка ошибки
call OnError

call StopI2C ; Установка ЕЕПРОМ в режим Стоп

;ПОСЛЕ ЭТОЙ ЛЕБУДЫ МИКРОСХЕМА НЕ ПРИНИМАЕТ START


movlw 0xAA
movwf PORTB
goto $

SetupI2C
clrf PORTA
bsf STATUS, RP0
movlw b'00011100'
movwf TRISA
bcf STATUS, RP0

bsf PORTA, SDA
bsf PORTA, SCL

return

StartI2C
bsf PORTA, SDA
bsf PORTA, SCL
nop
nop
nop
nop
bcf PORTA, SDA
nop
nop
nop
nop
bcf PORTA, SCL
return

StopI2C
bcf PORTA, SCL
bcf PORTA, SDA
bsf PORTA, SCL
nop
nop
nop
nop
bsf PORTA, SDA
return

SendByte
movlw 8
movwf n
SBL
btfsc Byte, 7
bsf PORTA, SDA
btfss Byte, 7
bcf PORTA, SDA
bsf PORTA, SCL
nop
nop
nop
nop
bcf PORTA, SCL
rlf Byte, f
decfsz n, f
goto SBL
bcf PORTA, SDA
return

ACKTest
clrf Err

clrf PORTA
bsf STATUS, RP0
movlw b'00011101'
movwf TRISA
bcf STATUS, RP0

bsf PORTA, SCL
nop
nop
nop
nop
btfsc PORTA, SDA
bsf Err, 0
bcf PORTA, SCL

clrf PORTA
bsf STATUS, RP0
movlw b'00011100'
movwf TRISA
bcf STATUS, RP0
return

OnError
movlw 0xFF
movwf PORTB
goto $
return

end
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 00:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016