Изменить линии i2c или 1-wire в runtime

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
ESWANT
Встал на лапы
Сообщения: 98
Зарегистрирован: Пн дек 06, 2010 12:26:45

Изменить линии i2c или 1-wire в runtime

Сообщение ESWANT »

Здравствуйте!
Как можно обойти это:

EXAMPLE FOR PORTB:

#asm
.equ __i2c_port=0x18
.equ __sda_bit=3
.equ __scl_bit=4
#endasm
#include <ds1307.h>

я хочу чтобы порт и линии конфигурировались из EEPROMа во время выполнения
чтобы можно было в любое место подключать датчик
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18673
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Изменить линии i2c или 1-wire в runtime

Сообщение ARV »

написать свои билиотечки для 1-wire и i2c
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6321
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Изменить линии i2c или 1-wire в runtime

Сообщение Jack_A »

ESWANT писал(а):Здравствуйте!
Как можно обойти это:

EXAMPLE FOR PORTB:

#asm
.equ __i2c_port=0x18
.equ __sda_bit=3
.equ __scl_bit=4
#endasm
#include <ds1307.h>

я хочу чтобы порт и линии конфигурировались из EEPROMа во время выполнения
чтобы можно было в любое место подключать датчик
Директива .equ - это не выполняемый опрератор, а просто константе присваивается символьное имя, и если в десятке мест эта константа использована в операторах, то при ее изменении не надо править код в десятке мест, а только в одном - в .equ. Если адреса или значения надо менять в процессе работы, то нужно выделить переменные, значение которых определяется в процессе выполениея программы. И я сильно сомневаюсь в нужности такого переопределения. А если это аппаратный I2C, то такая затея вообще невыполнима.
ESWANT
Встал на лапы
Сообщения: 98
Зарегистрирован: Пн дек 06, 2010 12:26:45

Re: Изменить линии i2c или 1-wire в runtime

Сообщение ESWANT »

Директива .equ - это не выполняемый опрератор, а просто константе присваивается символьное имя, и если в десятке мест эта константа использована в операторах, то при ее изменении не надо править код в десятке мест, а только в одном - в .equ. Если адреса или значения надо менять в процессе работы, то нужно выделить переменные, значение которых определяется в процессе выполениея программы. И я сильно сомневаюсь в нужности такого переопределения. А если это аппаратный I2C, то такая затея вообще невыполнима.[/quote]


а как он может быть аппартный если линии и порт можно менять,
или в атмегах любая линия может быть SDA? SCL?

если бы я нашел исходники реализации то исправил бы.
а вообще где они могут быть,?? в exe-шнике что ли зашиты
в DS1307.H и DS1307.LIB и i2c.h реализации нет.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6321
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Изменить линии i2c или 1-wire в runtime

Сообщение Jack_A »

ESWANT писал(а): а как он может быть аппартный если линии и порт можно менять,
или в атмегах любая линия может быть SDA? SCL?
Смотря в каких Атмегах. Есть со встроенным аппаратным I2C ( только называется он TWI ) - типы МК по памяти врать не буду ( к примеру, Атмега48) . Так там пины под SDA , SCL уже определены, но зато голова не болит : закинул в регистр и забыл, оно само передает ( это я упрощаю, конечно ).
Неясна задача - рулить несколькими слейвами ? Тогда или писа'ать на каждое направление свою подпрограмму, или в одной делать ветвление по направлениям. Это в случае, если всех их нельзя посадить на одну шину и заадресовать каждого. Но в любом случае - не изменением в процессе работы констант директивой .equ -- это невозможно в принципе. Директива .equ существует только в момент компиляции.
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»