Здравствуйте!
Как можно обойти это:
EXAMPLE FOR PORTB:
#asm
.equ __i2c_port=0x18
.equ __sda_bit=3
.equ __scl_bit=4
#endasm
#include <ds1307.h>
я хочу чтобы порт и линии конфигурировались из EEPROMа во время выполнения
чтобы можно было в любое место подключать датчик
Изменить линии i2c или 1-wire в runtime
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18673
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Изменить линии i2c или 1-wire в runtime
написать свои билиотечки для 1-wire и i2c
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Изменить линии i2c или 1-wire в runtime
Директива .equ - это не выполняемый опрератор, а просто константе присваивается символьное имя, и если в десятке мест эта константа использована в операторах, то при ее изменении не надо править код в десятке мест, а только в одном - в .equ. Если адреса или значения надо менять в процессе работы, то нужно выделить переменные, значение которых определяется в процессе выполениея программы. И я сильно сомневаюсь в нужности такого переопределения. А если это аппаратный I2C, то такая затея вообще невыполнима.ESWANT писал(а):Здравствуйте!
Как можно обойти это:
EXAMPLE FOR PORTB:
#asm
.equ __i2c_port=0x18
.equ __sda_bit=3
.equ __scl_bit=4
#endasm
#include <ds1307.h>
я хочу чтобы порт и линии конфигурировались из EEPROMа во время выполнения
чтобы можно было в любое место подключать датчик
Re: Изменить линии i2c или 1-wire в runtime
Директива .equ - это не выполняемый опрератор, а просто константе присваивается символьное имя, и если в десятке мест эта константа использована в операторах, то при ее изменении не надо править код в десятке мест, а только в одном - в .equ. Если адреса или значения надо менять в процессе работы, то нужно выделить переменные, значение которых определяется в процессе выполениея программы. И я сильно сомневаюсь в нужности такого переопределения. А если это аппаратный I2C, то такая затея вообще невыполнима.[/quote]
а как он может быть аппартный если линии и порт можно менять,
или в атмегах любая линия может быть SDA? SCL?
если бы я нашел исходники реализации то исправил бы.
а вообще где они могут быть,?? в exe-шнике что ли зашиты
в DS1307.H и DS1307.LIB и i2c.h реализации нет.
а как он может быть аппартный если линии и порт можно менять,
или в атмегах любая линия может быть SDA? SCL?
если бы я нашел исходники реализации то исправил бы.
а вообще где они могут быть,?? в exe-шнике что ли зашиты
в DS1307.H и DS1307.LIB и i2c.h реализации нет.
Re: Изменить линии i2c или 1-wire в runtime
Смотря в каких Атмегах. Есть со встроенным аппаратным I2C ( только называется он TWI ) - типы МК по памяти врать не буду ( к примеру, Атмега48) . Так там пины под SDA , SCL уже определены, но зато голова не болит : закинул в регистр и забыл, оно само передает ( это я упрощаю, конечно ).ESWANT писал(а): а как он может быть аппартный если линии и порт можно менять,
или в атмегах любая линия может быть SDA? SCL?
Неясна задача - рулить несколькими слейвами ? Тогда или писа'ать на каждое направление свою подпрограмму, или в одной делать ветвление по направлениям. Это в случае, если всех их нельзя посадить на одну шину и заадресовать каждого. Но в любом случае - не изменением в процессе работы констант директивой .equ -- это невозможно в принципе. Директива .equ существует только в момент компиляции.
- Реклама

