Zx80 0 24 декабря, 2021 Опубликовано 24 декабря, 2021 · Жалоба Quote Чтобы выбрать канал - надо записать в сам Communications Register значение вида 0b00000xxx, где ххх - номер канала. ну ка найдите здесь установку номера канала Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zx80 0 24 декабря, 2021 Опубликовано 24 декабря, 2021 · Жалоба Нашел у себя ошибку. Я должен читать по коменде 0х5С а не по 0х5F. Возвращаемое значение изменилось. Но все равно возвращается один байт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 24 декабря, 2021 Опубликовано 24 декабря, 2021 · Жалоба 31 минуту назад, Zx80 сказал: Но все равно возвращается один байт Как он может возвращаться один, если такты для всех байтов генерите вы? Хотите читать 10 байтов - пошлите 10 байтов мусора, таков SPI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 227 24 декабря, 2021 Опубликовано 24 декабря, 2021 · Жалоба 6 часов назад, Zx80 сказал: Не представляю как Вам дать такую диаграмму. Осцилограф двулучевой. Скажу только что CS = 0 у меня завсегда Если CS не используется, тогда паспорт требует программно сбрасывать интерфейс 4-мя пустыми байтами. И далее, Вам здесь уже каждый первый ответил, действовать точно так же — чтобы прочитать 3 байта данных, требуется написать руками код, посылающий по SPI четыре байта, и вот этот код можно показать здесь вместо осциллограмм. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zx80 0 29 декабря, 2021 Опубликовано 29 декабря, 2021 (изменено) · Жалоба spiInit(); InitAD7714(); DDRD |= (0<<DDD2); PORTD |= (1<<PORTD2); DDRD |= (1<<DDD6); PORTD |= (0<<PORTD6); while (1) { // Place your code here // if(PIND.2 == 0) // PORTD.6 = 0; // else // PORTD.6 = 1; unsigned char res[3]={255,255,255}; if(PIND.2 == 0) { spiWrite(0x5C); spiWrite(0xFF); res[0] = spiRead(); spiWrite(0xFF); res[1] = spiRead(); spiWrite(0xFF); res[2] = spiRead(); displayAD7714Result(res); } delay_ms(20); } } void InitAD7714() { // spiWrite(0x27); /* set the channel AIN6 and set the next operation as write to the filter high */ // spiWrite(0x4F); /* set Bipolar mode, 24 bits, boost off, all 4 MSBs of filterword to 1 */ // spiWrite(0x37); /* set the next operation as a write to the filter low register channel AIN6 */ // spiWrite(0xA0); /* max filter word allowed for low part of the filterword */ // spiWrite(0x17); /* set the operation as a write to the mode register */ // spiWrite(0x20); /* set gain to 1, burnout current off, no filter sync, and do a self calibration */ spiWrite(0x24); /* set the channel AIN1-AIN2 and set the next operation as write to the filter high */ spiWrite(0x4F); /* set Bipolar mode, 24 bits, boost off, all 4 MSBs of filterword to 1 */ spiWrite(0x34); /* set the channel AIN1-AIN2 the next operation as a write to the filter low register channel AIN1/AIN2 */ spiWrite(0xA0); /* max filter word allowed for low part of the filterword */ spiWrite(0x14); /* set the channel AIN1-AIN2 the operation as a write to the mode register.*/ spiWrite(0x20); /* set gain to 1, burnout current off, no filter sync, and do a self calibration */ } void spiInit(void) { /* Set MOSI, SCK, SS as output */ DDRB |= ((1<<SPI_DDR_MOSI) | (1<<SPI_DDR_SS) | (0<<SPI_DDR_MISO) | (1<<SPI_DDR_SCK)); PORTB &= ~((1<<SPI_PORT_MOSI) | (1<<SPI_PORT_SS) | (1<<SPI_PORT_MISO) | (1<<SPI_PORT_SCK)); /* Enable SPI, Master, set clock rate fck/16 */ SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0); //SPDR = 0b00000000; } void spiWrite(unsigned char cData) { /* Start transmission */ SPDR = cData; /* Wait for transmission complete */ while(!(SPSR & (1<<SPIF))); } unsigned char spiRead() { /* Wait for reception complete */ while(!(SPSR & (1<<SPIF))); /* Return data register */ return SPDR; } Осцилограмма на SCK. Посылаются байты 0х5С, 0хFF, 0хFF, 0хFF. По идее я должен видеть байты результата на DOUT, но ничего там не вижу. Подскажите ? Изменено 29 декабря, 2021 пользователем Zx80 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zx80 0 30 декабря, 2021 Опубликовано 30 декабря, 2021 (изменено) · Жалоба Привет. Я в ступоре. Раз не работает решил записать одну команду и ее же прочитать. На SCK вижу такты для каждого из четырех комманд. На DIN вжу данные четырех комманд. на DOUT вижу ноль. Ау помогите. spiWrite(0x24); /* команда установить канал AIN1-AIN2. И передать данные в старшую часть фильтра. spiWrite(0xAA); /* данные для старшей части фильтра spiWrite(0x2C); /* прочитать данные из старшей части фильтра spiWrite(0xAA); /* байт толкатель для генерации SCK поменял чип и увидел на DOUT эт че получается чип паленый. Я не палил. А что это за шум перед переходом в ноль ? Случайно этот выход не открытый коллектор ? Изменено 30 декабря, 2021 пользователем Zx80 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 227 30 декабря, 2021 Опубликовано 30 декабря, 2021 · Жалоба 35 минут назад, Zx80 сказал: помогите Да уже много раз пробовали — начиная с того, чтобы выкинуть нерабочую схему, и заканчивая сбросом — всё без толку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 90 30 декабря, 2021 Опубликовано 30 декабря, 2021 · Жалоба 6 часов назад, Zx80 сказал: эт че получается чип паленый. Я не палил. А что это за шум перед переходом в ноль ? Случайно этот выход не открытый коллектор ? нет - это схема переходит в z-состояние и разряжается емкость монтажа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zx80 0 31 декабря, 2021 Опубликовано 31 декабря, 2021 (изменено) · Жалоба Plain, ваши ответы всегда напоминают ответы продавцов, "покупайте что мы привезли, никого не волнует то что вам надо" Quote Да уже много раз пробовали — начиная с того, чтобы выкинуть нерабочую схему, и заканчивая сбросом — всё без толку. Изменено 31 декабря, 2021 пользователем Zx80 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 6 1 января, 2022 Опубликовано 1 января, 2022 · Жалоба 19 часов назад, Zx80 сказал: Plain, ваши ответы всегда напоминают ответы продавцов, "покупайте что мы привезли, никого не волнует то что вам надо" А Ваши вопросы напоминают вопросы прогульщика уроков. 30.12.2021 в 14:50, Zx80 сказал: На SCK вижу такты для каждого из четырех комманд. На DIN вжу данные четырех комманд. Ау помогите. эт че получается чип паленый. Напоминаю Вам п.2.1.в Правил форума. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zx80 0 1 января, 2022 Опубликовано 1 января, 2022 · Жалоба Quote Да уже много раз пробовали — начиная с того, чтобы выкинуть нерабочую схему, и заканчивая сбросом — всё без толку. Извините, а как мне реагировать на первую часть этой фразы повторяемой с не виданным упорством. Я же ответил, задание мне сделать именно на AD7714. Что не понятного, зачем тогда такой ответ? Про сброс разговора не было, сброс у меня организован. Я сократил поле до записи одной команды, и ее чтения, в ответ в 50й раз у вас чип не такой. Что ж это за помощь(совет) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 6 1 января, 2022 Опубликовано 1 января, 2022 · Жалоба 2 часа назад, Zx80 сказал: в ответ в 50й раз у вас чип не такой. Что ж это за помощь(совет) ? Так Вы ещё и читать не умеете? Тогда все советы будут бесполезными. Где, хоть раз (!?) Вам написали, что у Вас "чип не такой"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 227 1 января, 2022 Опубликовано 1 января, 2022 · Жалоба 2 часа назад, Zx80 сказал: зачем тогда такой ответ? Совет был — выбросить ОУ и прочее, затем подключить датчик правильно и в мост, для измерений на переменном токе, и добавить защиту на каждый из 6-ти входных контактов, а советов выкинуть AD7714 лично я не давал — отличный АЦП, если прочитать его паспорт и затем делать так, как там написано. И ещё, Вы сразу сказали, что оригинальный экземпляр платы у Вас издох от неосторожного с ней обращения — Ваше право полагать, что её немецкие авторы тут не при чём, но другие участники форума уверены в обратном. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zx80 0 3 января, 2022 Опубликовано 3 января, 2022 · Жалоба Привет. Давайте так, у меня два топика - ацп и оу. В теме про ацп, обсуждаем ацп, в теме про оу обсуждаем оу. Не влазит слон в рот, давайте его есть по кускам. Я так и начал. Привел инициализацию старшей части фильтра и попытку ее считать. spiWrite(0x24); /* команда установить канал AIN1-AIN2. И передать данные в старшую часть фильтра. spiWrite(0xAA); /* данные для старшей части фильтра spiWrite(0x2C); /* прочитать данные из старшей части фильтра spiWrite(0xFF); /* байт толкатель для генерации SCK void spiWrite(unsigned char cData) { /* Start transmission */ SPDR = cData; /* Wait for transmission complete */ while(!(SPSR & (1<<SPIF))); } unsigned char spiRead() { /* Wait for reception complete */ while(!(SPSR & (1<<SPIF))); /* Return data register */ return SPDR; } осцилограмму на SCK показываю, что вижу такты на эти команды. На выводе DOUT вижу ноль, с некоторым различием при смене экземпляра чипа. Всего одна команда, всего одно считывание. Подскажете мою ошибку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 3 января, 2022 Опубликовано 3 января, 2022 · Жалоба 6 hours ago, Zx80 said: На выводе DOUT вижу ноль, с некоторым различием при смене экземпляра чипа. Всего одна команда, всего одно считывание. Подскажете мою ошибку. 1. Вы бы двумя каналами осциллографа работали и приводили осциллограммы с двух каналов. 2. Вы не привели марку микроконтроллера. И обычно у AVR один SPI. И по нему же он прошивается. Если вы после прошивки МК не передергиваете питание или не подаете сброс на АЦП, то возможно АЦП рассинхронизирован. Вам уже тут советовали отправлять 4-е фиктивных байта по SPI, чтобы восстановить синхронизацию. 3. Может у вас просто короткое замыкание по линии DOUT АЦП или наоборот обрыв или непропай. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться