Easyelectronics.ru

Электроника для всех
Текущее время: 16 ноя 2018, 13:28

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с внешней EEPROM 24lc512 и PIC16F628
СообщениеДобавлено: 07 апр 2018, 20:00 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 28 дек 2015, 22:08
Сообщения: 31
Откуда: Омск
Здравствуйте. Проблема в чтении данных, записанных в микрочиповскую 24LC512. Пытаюсь считывать данные последовательно, с произвольного адреса. Читается только первый байт, вместо остального массива данных - нули. На скриншоте видно инициализацию обмена, запрос данных, ответ - 9E, расположенный по адресу AA, а далее - нули. Данные в микросхему писал адаптером CH341A.
Код подпрограммы, используемой для чтения данных привожу ниже. FSR указывает на регистр TRISB. Ноги SDA и SCL - RB4 и RB5 соответственно, RB4 прописана в конфигурации как I/0, PGM отключен. С адресацией все в порядке, пробовал подтягивать выводы 24lc по-разному. Подпрограммы для работы с I2C писал по книге Катцена
Изображение
Код:
;==============================================================================
; ПОДПРОГРАММА ПОЛУЧЕНИЯ БАЙТА ПО ШИНЕ I2C
; ФУНКЦИЯ - принимает байт от ведомого, отсылая в ответ ACK или NACK
; ВХОД - ACKNO = 00 для отсылки ACK, иначе NACK
; РЕСУРСЫ - подпрограммы START_I2C и STOP_I2C, DELAY600
; ВЫХОД - байт данных от ведомого в DATA_IN, ведомому отправлен ACK или NACK,
; на линии SCL - НИЗКИЙ уровень
;=============================================================================
I2C_IN
bcf   INDF,SCL      ; гарантируем наличие НИЗКОГО уровня на SCL
movlw d'8'          ; счетчик цикла = 8
movwf COUNT         ;
I2C_IN_LOOP
bcf   INDF,SCL      ; формирование на тактовой линии отрицательного импульса
nop
nop
bsf   INDF,SCL      ; минимальной длительности
bcf   STATUS,C      ; сброс флага переноса
btfsc INDF,SDA      ; проверка значения принятого бита
  bsf  STATUS,C      ; если 1, то установить флаг С
rlf   DATA_IN,f     ; и вдвинуть его в регистр
decfsz COUNT,f      ; декремент счетчика цикла
  goto I2C_IN_LOOP   ; и повторить 8 раз
                     ; отправка ACK или NACK
bcf   INDF,SCL      ; выставить на SCL НИЗКИЙ уровень
bsf   INDF,SDA      ; освободить линию данных (NACK)
movf  ACKNO,f       ; проверить регистр
btfsc STATUS,Z      ; если не равно 0, то ничего не делать
  bcf INDF,SDA       ; иначе выставить на линию данных НИЗКИЙ уровень (ACK)
                     ; удерживать на тактовой линии НИЗКИЙ уровень
nop
nop
bsf  INDF,SCL       ; затем выставить ВЫСОКИЙ уровень
nop
bcf  INDF,SCL       ; на линии SCL оставить НИЗКИЙ уровень
return


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с внешней EEPROM 24lc512 и PIC16F628
СообщениеДобавлено: 07 апр 2018, 20:17 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2450
Ууууу... Не думал, что в наше время еще кто-нибудь будет заниматься PICами, да еще и на ассемблере, да еще и с программным I2C. Это было лет 10-15 назад. Небольшой шанс сейчас встретить того, кто еще помнит..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с внешней EEPROM 24lc512 и PIC16F628
СообщениеДобавлено: 07 апр 2018, 23:47 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 28 дек 2015, 22:08
Сообщения: 31
Откуда: Омск
Добавлю, чтение текущего адреса работает корректно, и в цикле читает всю EEPROM, то есть с самого начала - Старт-запрос чтения - ответ - nack - стоп. А вот в режиме последовательного чтения нет


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с внешней EEPROM 24lc512 и PIC16F628
СообщениеДобавлено: 08 апр 2018, 00:36 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 28 дек 2015, 22:08
Сообщения: 31
Откуда: Омск
Разобрался. Возможно я ошибаюсь, и эту функцию нужно использовать иначе, но мне кажется что в книге Сида Катцена 2010 года на 439 странице опечатка, в конце функции приема байта нет команды освободить линию данных, поэтому она остается прижатой к земле контроллером, в то время как вы шлете сигналы тактирования. Что ж, в любом случае полезный урок, не стоит слепо верить книгам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с внешней EEPROM 24lc512 и PIC16F628
СообщениеДобавлено: 08 апр 2018, 00:48 
Старожил

Зарегистрирован: 15 янв 2018, 18:52
Сообщения: 762
BusMaster писал(а):
Ууууу... Не думал, что в наше время еще кто-нибудь будет заниматься PICами, да еще и на ассемблере, да еще и с программным I2C. Это было лет 10-15 назад. Небольшой шанс сейчас встретить того, кто еще помнит..

не ну рили прикольно же, чел с лог анализатором ковыряется в пиках :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с внешней EEPROM 24lc512 и PIC16F628
СообщениеДобавлено: 10 апр 2018, 03:04 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 28 дек 2015, 22:08
Сообщения: 31
Откуда: Омск
mazahakka v2.0 писал(а):
BusMaster писал(а):
Ууууу... Не думал, что в наше время еще кто-нибудь будет заниматься PICами, да еще и на ассемблере, да еще и с программным I2C. Это было лет 10-15 назад. Небольшой шанс сейчас встретить того, кто еще помнит..

не ну рили прикольно же, чел с лог анализатором ковыряется в пиках :)


Не понимаю, что в "наше время" может помешать человеку заниматься чем-то пусть даже и устаревающим, но легкодоступным и простым в понимании. В качестве хобби для моих задач 16F628-го хватает за глаза. Простые программы для автоматизации, без особых математических вычислений, мне вполне под силу написать на ассемблере, а большего пока и не требуется. Мне кажется, являясь любителем, лучше "ковыряться в пиках", чем лепить ARDUINO-монстров из кусков чужого кода.
И если уж вы так критикуете PIC и ASM для него, то посоветуйте что можно освоить относительно простого, я имею ввиду какой тип контроллеров сейчас в тренде у радиолюбителей?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с внешней EEPROM 24lc512 и PIC16F628
СообщениеДобавлено: 10 апр 2018, 09:07 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 1186
В тренде STM32 и C.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с внешней EEPROM 24lc512 и PIC16F628
СообщениеДобавлено: 10 апр 2018, 21:47 
Старожил

Зарегистрирован: 08 янв 2011, 21:54
Сообщения: 215
Откуда: Ставрополь
можно освоить PIC18F67J60 (PIC18F97J60) и С. Освоить микрочиповский TCP стек и делать простые устройства с ВЕБ интерфейсом. Времени не очень много понадобится. Зато интересней чем Ардуино и возможностей больше. А потом PIC32 если быстродействие и память потребуется. В течении года точно можно освоить .
Недавно на pic16f628 и ASM делал устройство.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с внешней EEPROM 24lc512 и PIC16F628
СообщениеДобавлено: 11 апр 2018, 02:48 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 28 дек 2015, 22:08
Сообщения: 31
Откуда: Омск
smart_pic, спасибо за совет.
Я пытаюсь сделать на основе PIC16F628 преобразователь автомобильного интерфейса, чтобы скормить блоку климат-контроля необходимые данные, которые при прямом подключении он считать не может, из-за различия физической и программной реализации обмена. Это отдельная тема. Но суть в том, что PIC16 вполне способен решить эту задачу. Да, на более мощном контроллере с двумя модулями USART и хотя бы 512 RAM памяти это сделать в разы проще, в том числе и в плане схемы, но удовольствия от решения задачи ограниченными средствами несравненно больше.
И еще вопрос, что можно почитать свежего по PIC-контроллерам? Книга Сида Катцена хороша и понятна, но не далее чем 16 серия, и опять же там упор на ASM.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с внешней EEPROM 24lc512 и PIC16F628
СообщениеДобавлено: 11 апр 2018, 06:09 
Заглядывает иногда

Зарегистрирован: 03 июл 2012, 19:16
Сообщения: 115
Swordfish писал(а):
И еще вопрос, что можно почитать свежего по PIC-контроллерам? Книга Сида Катцена хороша и понятна, но не далее чем 16 серия, и опять же там упор на ASM.


Да тысячи книг в сети по микрочипам!
Programming [ваша разрядность]-Bit PIC Microcontrollers in C. Люсио Жасио, Мартин Бейтс или другие. Правда свежесть понятие относительное :) Пару толковых книг достаточно для понимания, а далее - даташиты и аппноты.
И Ц мало смысла имеет на 16ых, вот 18ые уже под Ц хорошо заточены.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB