Объявление

Свернуть
Пока нет объявлений.

Работа с EEPROM типа 24LCxx.

Свернуть
X
Свернуть

  • Работа с EEPROM типа 24LCxx.


    Компания Microchip выпускает широкий спектр недорогой энергонезависимой памяти с последовательным интерфейсом I2C. Емкость этих EEPROM начинается со 128 бит и может достигать 256 и более кбит, что позволяет применять ее в различных областях электроники. И хотя сейчас многие микроконтроллеры имеют EEPROM данных на своем кристалле, ее может оказаться недостаточно. Поэтому в некоторых случаях применение внешней памяти будет вполне оправданно (примеры применения данных микросхем имеются и на этом сайте).
    Полное описание технических характеристик EEPROM можно найти на сайте производителя, а на этой странице приведены лишь тексты подпрограмм для работы с данными микросхемами. Подпрограммы написаны для PIC-контроллеров и позволяют производить запись или чтение одного байта по заданному адресу EEPROM. Эти подпрограммы применимы для работы с микросхемами емкостью до 16 кбит. Для больших емкостей необходимо приведенные ниже подпрограммы модифицировать таким образом, что бы адрес ячейки памяти передавался двумя байтами. Так же, если за один цикл необходимо считать/записать более одного байта, то нижеприведенные подпрограммы так же необходимо модифицировать.

    Текст программы: LIST p=16c505, r=hex
    include P16C505.INC
    cblock 0x08 ;Регистры
    AddrLo ;Младший байт адреса в EEPROM
    AddrHi ;Старший байт адреса в EEPROM
    Cnt ;Счетчик
    Temp ;Регистры для хранения переменных разного назначения
    TempTr ;
    endc
    ;Константы для инициализации
    InitOption equ b'00000000'
    InitPortC equ b'00000000'
    InitPortB equ b'00000000'
    SDARecPortC equ b'00010000' ;Константа для переключения линии SDA на вход
    #define SCL PORTC,3
    #define SDA PORTC,4
    goto Begin
    Init ;Общая инициализация
    movlw InitPortB ;
    tris PORTB ;
    movlw InitPortC ;
    tris PORTC ;
    movlw InitOption ;
    option ;
    return ;
    SwReceive ;Переключение SDA на вход
    movlw SDARecPortC
    tris PORTB
    return
    Transmitt
    movwf TempTr ;
    bsf SDA ;
    call Init ;Переключить линию для передачи
    bcf SDA ;Start
    bcf SCL ;
    bcf STATUS,C ;Передача байта управления
    rlf AddrHi,0 ;и трех старших бит адреса
    iorlw b'10100000' ;
    call SendByte ;
    call SwReceive ;Переключить линию для приема подтверждения
    bsf SCL ;Прием подтверждения
    btfsc SDA ;
    goto Transmitt ;Подтверждение отсутствует
    bcf SCL ;
    call Init ;Переключить на передачу
    movf AddrLo,0 ;Передать младший байт адреса
    call SendByte ;
    call SwReceive ;Переключить линию для приема подтверждения
    bsf SCL ;прием подтверждения
    btfsc SDA ;
    goto Transmitt ;Подтверждение отсутствует
    bcf SCL ;
    call Init ;Переключить на передачу
    movf TempTr,0 ;Передача байта
    call SendByte ;
    call SwReceive ;Переключить линию для приема подтверждения
    bsf SCL ;Прием подтверждения
    btfsc SDA ;
    goto Transmitt ;Подтверждение отсутствует
    bcf SCL ;
    call Init ;Переключить на передачу
    bcf SDA ;Stop
    bsf SCL ;
    bsf SDA ;
    return
    SendByte ;Подпрограмма передачи одного байта
    movwf Temp
    movlw 0x8
    movwf Cnt
    SendBt
    clrwdt
    bcf SDA
    rlf Temp,1
    btfsc STATUS,C
    bsf SDA
    bsf SCL
    bcf SCL
    decfsz Cnt,1
    goto SendBt
    return
    Receive
    bsf SDA ;
    call Init ;Переключить на передачу
    bcf SDA ;Start
    bcf SCL ;
    bcf STATUS,C ;Передача байта управления
    rlf AddrHi,0 ;и трех старших бит адреса
    iorlw b'10100000' ;
    call SendByte ;
    call SwReceive ;Переключить на прием
    bsf SCL ;Прием подтверждения
    btfsc SDA ;
    goto Receive ;Подтверждение отсутствует
    bcf SCL ;
    call Init ;Переключить на передачу
    movf AddrLo,0 ;Передать младший байт адреса
    call SendByte ;
    call SwReceive ;Переключить на прием
    bsf SCL ;Прием подтвержедния
    btfsc SDA ;
    goto Receive ;Подтверждение отсутствует
    bcf SCL ;
    call Init ;Переключить на передачу
    bsf SDA ;Повторный Start
    bsf SCL ;
    bcf SDA ;
    bcf SCL ;
    bsf STATUS,C ;Передача байта управления
    rlf AddrHi,0 ;и трех старших бит адреса
    iorlw b'10100000' ;
    call SendByte ;
    call SwReceive ;Переключить на прием
    bsf SCL ;прием подтверждения
    btfsc SDA ;
    goto Receive ;Подтверждение отсутствует
    bcf SCL ;
    call ReceiveByte ;Прием байта
    bcf SDA ;
    call Init ;Переключить на передачу
    bsf SCL ;Передача подтверждения
    bsf SDA ;Stop
    return
    ReceiveByte ;Подпрограмма приема одного байта
    movlw 0x8
    movwf Cnt
    ReceiveBt
    clrwdt
    bsf SCL
    bcf STATUS,C
    btfsc SDA
    bsf STATUS,C
    rlf Temp,1
    bcf SCL
    decfsz Cnt,1
    goto ReceiveBt
    movf Temp,0
    movwf TempTr
    return
    Begin
    ;Пример использования подпрограмм:
    movlw 0xbc ;Запись значения 0x55 по адресу 0x2bc
    movwf AddrLo ;
    movlw 0x02 ;
    movwf AddrHi ;
    movlw 0x55 ;
    call Transmitt ;
    movlw 0xbc ;Чтение байта по адресу 0x2bc
    movwf AddrLo ;
    movlw 0x02 ;
    movwf AddrHi ;
    call Receive ;Полученное значение будет в регистре w
    goto $
    end

      Возможность размещать комментарии к сообщениям отключена.

    Метки статей

    Свернуть

    Меток пока нет.

    Новые статьи

    Свернуть

    • «NO EXCUSES» — специальная программа компании MOTOROLA
      admin
      Дмитрий Панфилов
      «NO EXCUSES» — специальная программа компании MOTOROLA

      Ни для кого не секрет, что микропроцессоры и микроконтроллеры находят самое широкое применение в различных областях науки и техники. Сегодня трудно указать область электроники, где не использовались бы микроконтроллеры. Количество простейших применений, требующих интеллектуального управления процессом, возрастает лавинообразно. Реализация гибких алгоритмов управления на базе микроконтроллеров дает широкому кругу разработчиков уникальный инструмент для создания «интеллектуальных» систем управления. Умение разумно его применять во многом определяет успех оборудования в конкурентной борьбе на рынке.

      MOTOROLA штурмует трехмиллиардный рубеж

      Статистика гласит, что наибольшую долю рынка встраиваемых систем управления занимают восьмиразрядные микроконтроллеры. Здесь показателен...
      10.02.2017, 14:56
    • Частотомер на PIC16F873 с двух строчным ЖКИ способный измерять частоты
      admin
      alt="" />Частотомер на PIC16F873 с двух строчным ЖКИ способный измерять частоты от 10Гц до 45МГц. Чувствительность по входу около 50мВ, входное сопротивление 250 Ком, входная ёмкость 15пФ. Питание девятивольтная батарея 6F22.В память можно вносить значения, которые будут, прибавлены к входной частоте или вычтены из неё.

      При входной частоте меньше 655.35 КГц вес младшего разряда 10Гц, при входной частоте меньше 6.5535 МГц вес младшего разряда 100Гц, при входной частоте больше 6.5535 МГц вес младшего разряда 1 КГц. Переключение диапазона измерения происходит автоматически.
      Схема прибора изображена на рис.1.Входной сигнал проходит через цепь J3, R8, R9, C7, C6...
      10.02.2017, 14:56
    • Управление нагрузкой 220В переменного напряжения с использованием симисторов
      admin
      Для плавного управления нагрузкой, например, лампой освещения, можно использовать симистор. Открывается симистор током при подачи на управляющий электрод импульса. Закрывается, когда ток, проходящий через него, становится равным нулю, когда переменное напряжение меняет знак.
      ...
      10.02.2017, 14:56
    • Управление модулем Ke-USB24A из Excel
      admin
      Всю прелесть программирования USB модуля Ke-USB24A можно оценить когда встает вопрос о необходимости написания программы на каком-либо не очень широко распространенном языке или для какой-либо среды, которая, казалось бы не предусматривает возможность работы с USB устройствами. Как тут быть? - разбираться с подключением библиотек, вызовами системных функци и т.д.? Все это зачастую бывает сложно. Модуль Ke-USB24A совсем другое дело!...
      10.02.2017, 14:55
    • Управление матрицей 8х8 - легко!
      admin
      Матрица управляется так же как и 7-сегментные индикаторы - динамически. Мега16 портом А управляет одной координатой (выбирает сторку для вывода инфы), порт С - выводит ту самую информацию. Информация берётся из массива.
      />

      />
      Что бы пользоваться редактором, нужно переменную STROKA из примера переименовать в rows_arr.
      Вложения: matrica8x8.fcf_avr (56 Кб) Любители ПИКов, вам не составит труда пореколбасить этот пример под ПИКи. Пришлось себя з...
      10.02.2017, 14:55
    • То, что улучшает нашу жизнь (микросхемы для домашних и игровых устройств)
      admin
      Журнал «Компоненты и технологии» №8 2001 г.
      Ракович Н. Н.

      "В человеке все должно быть прекрасно… и у него в доме тоже"
      (Почти по А. П. Чехову)
      В последнее время при чтении профессиональных электронных журналов и статей, посвященных использованию электронных компонентов, у меня возникло и окрепло унылое ощущение, что вся гигантская индустрия полупроводников существует лишь для создания компьютеров, интеллектуального промышленного оборудования и прочих столь же серьёзных изделий. Полное осознание этой тенденции произошло после знакомства с продукцией фирмы Holtek. Приятно удивило большое количество микросхем, которые не только улучшают быт или делают жизнь более безопасной, но и не дадут соскучиться при избытке свободного времени.
      Итак, что же предлагает Holtek для разработчиков бытовой электроники?
      Отдельной линейкой представлены микросхемы для цифровых медицинских термометров. Однокристальные КМОП ИС НТ7500, НТ7501, НТ7510 позволяют измерять температуру в диапазоне от +32°С до +42°С с точностью ±0,1°С. В приборах предусмотрена звуковая сигнализация окончания измерения, а автоматическое отключение питания и вывод информации на ЖКИ-дисплей в сочетании с 1,5 В батарейкой делают его очень экономичным. Модели НТ7500 и НТ7501 практически одинаковы, различаясь лишь тем, что в НТ7500 предусмотрены две шкалы (Цельсия и Фаренгейта), а в НТ7501 реализована только шкала Цельсия и функция самотестирования при включении. ИС НТ7510 идентична НТ7500, но при подключении к ней синтезатора речи НТ84018-0D можно создать "говорящий" термометр.
      Термометр фиксирует нездоровье. А причиной его могут стать самые разные проблемы, в том числе и расшалившиеся нервы. Помогая сохранить здоровье, Holtek предлагает семейство кодеров и декодеров, основное назначение которых - системы сигнализации и охраны: защита от взлома, противопожарная сигнализация, управление гаражными воротами, автомобильные охранные системы, системы безопасности, радиотелефоны и другие системы дистанционного управления.
      Рассмотрим кодеры и декодеры серий 212, 312, 318.
      Кодеры серии 212 (НТ12А/НТ12Е) - КМОП БИС для систем дистанционного управления. Они шифруют информацию, содержащую N адресных бит и 12-N бит данных. Каждый вход адреса/данных может быть установлен в одно из двух логических состояний (отсюда название серии). Зашифрованные адреса/данные передаются, начиная со старшего бита, через радиоканал или ИК-канал. Для увеличения функциональной гибкости предусмотрено управление передачей по сигналу ТЕ (НТ12Е) или по сигналам D8-D11. В НТ12Е дополнительно предусмотрен выход 38 кГц для ИК-систем.
      Декодеры серии 212 (НТ12D/НТ12F) - пара к кодерам этой же серии. Они принимают последовательные адреса и данные от кодера по радио- или по ИК-каналу. После троекратной проверки входных данных при отсутствии ошибок эти данные декодируются и поступают на выход. Декодеры серии 212 могут обрабатывать информацию, аналогичную для кодеров (N адресных бит и 12-N бит данных). НТ12D обеспечивает обработку 8 адресных бит и 4 бит данных, а НТ12F используется для декодирования 12-разрядной адресной информации.
      В кодерах серий 312 и 318 каждый вход адреса/данных может быть запрограммирован на три состояния, при...
      10.02.2017, 14:55
    Обработка...
    X