Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Ігор59
2020-10-01 21:10:58

Спасибо, буду копаться в функциях
Может этот факт вам что-то подскажет. Функция инициализации ADS выбрасывает в сириал Config_Reg : 0 4 10 0

Honey
2020-10-01 20:19:55

Пин в AVR может быть в четырех состояниях:
1. на вход, без подтяжки - если он подключен к входам других устройств, где тоже нет подтяжки, то он будет как антенна ловить случайные состояния
2. на вход, с подтяжкой - подключается резистор между пином и питанием, делает его состоянием "по умолчанию" лог. 1
3. на выход, логический 0
4. на выход, логическая 1
Изучите библиотечные функции, как там меняется состояние пина ADS1220_CS_PIN и какое остается после выхода из функции.

Ігор59
2020-10-01 20:00:14
Honey пише:

Т.е. при обращении к ADC устанавливается CS_ADC=LOW, CS_FLASH=HIGH, а при обращении к флеш - CS_ADC=HIGH, CS_FLASH=LOW ? И во втором случае ADC воспринимает данные, предаваемые по SPI и как-то меняет свои настройки?

На костылях прекрасно работает без всяких там изменений LOW/HIGH перед опросом устройства, вообще не использую. При периодической инициализации АЦП видно оно настраивается само правильно после FLASH и при этом не мешает карте. Я пользуюсь стандартными библиотеками, которые есть в стандартном наборе ардуино, LOW/HIGH видимо самими функциями библиотек устанавливается. Все время, где бы я не проверял в программе  digitalRead(ADS1220_CS_PIN)  и digitalRead(SD_CS_PIN) = 1.
Пока лень копаться в регистрах, пользуюсь библиотеками.

Может проблема в том что я сохраняю все время файл открытым и только сбрасываю периодически данные.


Honey пише:

Или у Вас CS_ADC не равно HIGH (подтяжка есть?),

А отсюда, пожалуйста по подробнее. Как там подтяжку организовать

Honey
2020-10-01 15:36:41

Т.е. при обращении к ADC устанавливается CS_ADC=LOW, CS_FLASH=HIGH, а при обращении к флеш - CS_ADC=HIGH, CS_FLASH=LOW ? И во втором случае ADC воспринимает данные, предаваемые по SPI и как-то меняет свои настройки? Или у Вас CS_ADC не равно HIGH (подтяжка есть?), или в ADC бага. Попробуйте представить, что в ADC реально есть бага и Вам это необходимо показать производителю ADC - напишите минимальную программу только с МК и ADC, где бага четко проявляется. По мере написания придет более глубокое понимание, Вы скорее всего найдете ошибку в своей программе. Но не исключено, что докажете багу. Я обычно поступаю по такому алгоритму, так интереснее)

Ігор59
2020-10-01 14:05:18

Делаю даталогер для научки. Два устройства на SPI - АЦП(ADS1220) и карта памяти на arduino UNO. CS Ноги разные. Все делаю вроде правильно и по отдельности работает. Если сначала делаю замер, а потом сбрасываю на карту флеш, то первый замер правильный. Дальше замеры черт и что. Если ничего не сбрасываю периодически на  карту, то замеряет правильно. Пробовал каждый раз инициализировать АЦП поле каждого сбрасывания на карту -  помогает, но мне не нравятся эти костыли. Карта работает во всех случаях правильно. Видно надо глубже копать, что там происходит. Подскажите пожалуйста как выйти из ситуации.

Підвал форуму