Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
28.10.2010, 22:22
|
|
Гражданин KAZUS.RU
Регистрация: 25.02.2008
Сообщений: 997
Сказал спасибо: 223
Сказали Спасибо 72 раз(а) в 58 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от ut1wpr
|
могу лишь выразить сочувствие тем людям, которыми "я руководить буду"
|
Не можете проще, ну и ладно. Вы тоже не совсем эксперт в СИ. Ну поймал я в таблице символов Си такую конструкцию "&-Взятие адреса" и обрадовался - мне ведь очень важно научится оперировать адресами. А в этой строчке, за которую Вы меня об.... есть такая часть. Вот я и лопухнулся. В "братанах" я ничего плохого не вижу, кстати, 70% мужского населения нашей страны сколько-нибудь отсидели. Посмеяться я люблю, это "многое объясняет".
__________________
ДА, НО НЕТ!
|
|
|
|
30.10.2010, 10:52
|
|
Гражданин KAZUS.RU
Регистрация: 25.02.2008
Сообщений: 997
Сказал спасибо: 223
Сказали Спасибо 72 раз(а) в 58 сообщении(ях)
|
Re: Вопросы от NikMih_1
Обещал сюда не ходить, попрощался, но старая любовь не ржавеет.
В руководстве
PIC24FJ64GA104 FAMILY
на стр.222 есть запись.
bit 7 BUFS: Buffer Fill Status bit (valid only when BUFM = 1)
1 = A/D is currently filling buffer 08-0F; user should access data in 00-07
0 = A/D is currently filling buffer 00-07; user should access data in 08-0F
Понимаю, что у этого АЦП буфер в 16 слов, но из какого конкретно слова читать последние данные? вот вопрос!
У меня просто, вызов АЦП, одно преобразование и запись этого числа в РАМ. Откуда его надо брать, какой бит ставить? Если бы ясно было, что буфер данных АЦП организован как СТЭК, то я без сомнения читал бы ADC1BUF0, но про организацию быфера ничего нет.
__________________
ДА, НО НЕТ!
Последний раз редактировалось NikMih_1; 30.10.2010 в 11:24.
Причина: Добавил последнюю фразу.
|
|
|
|
30.10.2010, 11:32
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от NikMih_1
|
Обещал сюда не ходить, попрощался, но старая любовь не ржавеет.
В руководстве
PIC24FJ64GA104 FAMILY
на стр.222 есть запись.
bit 7 BUFS: Buffer Fill Status bit (valid only when BUFM = 1)
1 = A/D is currently filling buffer 08-0F; user should access data in 00-07
0 = A/D is currently filling buffer 00-07; user should access data in 08-0F
Понимаю, что у этого АЦП буфер в 16 слов, но из какого конкретно слова читать последние данные? вот вопрос!
У меня просто, вызов АЦП, одно преобразование и запись этого числа в РАМ. Откуда его надо брать, какой бит ставить? Если бы ясно было, что буфер данных АЦП организован как СТЭК, то я без сомнения читал бы ADC1BUF0, но про организацию быфера ничего нет.
|
То что вы привели действительно только если бит BUFM = 1. Он разделяет 16-ти словный буфер, на 2 по 8 слов. И АЦП заполняет сначала один буфер, потом другой. Флаги указывают на то какой буфер заполняет АЦП и доступ надо осуществлять к другому буферу.
В вашем случае это не нужно, у вас же 1 16-ти словный буфер. Ваш результат одиночного преобразования будет в ADC1BUF0.
|
|
|
|
30.10.2010, 11:35
|
|
Гражданин KAZUS.RU
Регистрация: 25.02.2008
Сообщений: 997
Сказал спасибо: 223
Сказали Спасибо 72 раз(а) в 58 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от realid
|
В вашем случае это не нужно, у вас же 1 16-ти словный буфер. Ваш результат одиночного преобразования будет ADC1BUF0.
|
А зачем тогда 16 слов? Надо видно что-то устанавливать, чтоб далее не писалось в ADC1BUF1, или этот буфер всё же как стэк?
__________________
ДА, НО НЕТ!
|
|
|
|
30.10.2010, 11:40
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от NikMih_1
|
А зачем тогда 16 слов? Надо видно что-то устанавливать, чтоб далее не писалось в ADC1BUF1, или этот буфер всё же как стэк?
|
Заполнение этого буфера определяют биты SMPI‹3:0›: Sample/Convert Sequences Per Interrupt Selection bits. Если там Interrupts at the completion of conversion for each sample/convert sequence, то АЦП всегда будет результат помещать в ADC1BUF0, если Interrupts at the completion of conversion for each 2nd sample/convert sequence, то первый результат в ADC1BUF0, второй в ADC1BUF1 и так по кругу. Удобно при поочередном сканировании каналов.
|
|
|
|
30.10.2010, 11:42
|
|
Гражданин KAZUS.RU
Регистрация: 25.02.2008
Сообщений: 997
Сказал спасибо: 223
Сказали Спасибо 72 раз(а) в 58 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от realid
|
Заполнение этого буфера определяют биты SMPI‹3:0›: Sample/Convert Sequences Per Interrupt Selection bits. Если там Interrupts at the completion of conversion for each sample/convert sequence, то АЦП всегда будет результат помещать в ADC1BUF0, если Interrupts at the completion of conversion for each 2nd sample/convert sequence, то первый результат в ADC1BUF0, второй в ADC1BUF1 и так по кругу. Удобно при поочередном сканировании каналов.
|
Вот это слова не мальчика НО МУЖА!!! Ясно и конкретно. Спасибо.
__________________
ДА, НО НЕТ!
|
|
|
|
30.10.2010, 11:43
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от NikMih_1
|
Обещал сюда не ходить, попрощался, но старая любовь не ржавеет.
В руководстве
PIC24FJ64GA104 FAMILY
на стр.222 есть запись.
bit 7 BUFS: Buffer Fill Status bit (valid only when BUFM = 1)
1 = A/D is currently filling buffer 08-0F; user should access data in 00-07
0 = A/D is currently filling buffer 00-07; user should access data in 08-0F
Понимаю, что у этого АЦП буфер в 16 слов, но из какого конкретно слова читать последние данные? вот вопрос!
У меня просто, вызов АЦП, одно преобразование и запись этого числа в РАМ. Откуда его надо брать, какой бит ставить? Если бы ясно было, что буфер данных АЦП организован как СТЭК, то я без сомнения читал бы ADC1BUF0, но про организацию быфера ничего нет.
|
Код:
|
int readADC(int channel)
{
AD1CHS = channel;
AD1CON1bits.SAMP = 1;
T1CONbits.TON = 1;
TMR1 = 0;
while (TMR1 ‹ 100);
AD1CON1bits.SAMP = 0;
while (!AD1CON1bits.DONE);
return ADC1BUF0;
} |
RTFM
|
|
|
|
30.10.2010, 11:57
|
|
Гражданин KAZUS.RU
Регистрация: 25.02.2008
Сообщений: 997
Сказал спасибо: 223
Сказали Спасибо 72 раз(а) в 58 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от realid
|
Заполнение этого буфера определяют биты SMPI‹3:0›: Sample/Convert Sequences Per Interrupt Selection bits. Если там Interrupts at the completion of conversion for each sample/convert sequence, то АЦП всегда будет результат помещать в ADC1BUF0, если Interrupts at the completion of conversion for each 2nd sample/convert sequence, то первый результат в ADC1BUF0, второй в ADC1BUF1 и так по кругу. Удобно при поочередном сканировании каналов.
|
Читаю:
bit 5-2 SMPI‹3:0›: Sample/Convert Sequences Per Interrupt Selection bits
1111 = Interrupts at the completion of conversion for each 16th sample/convert sequence
1110 = Interrupts at the completion of conversion for each 15th sample/convert sequence
.....
0001 = Interrupts at the completion of conversion for each 2nd sample/convert sequence
0000 = Interrupts at the completion of conversion for each sample/convert sequence
Что это за прерывания? Мне достаточно бита DONE, для моих целей. В принципе это прерывание его заменяет, ![Обрадован](images/smilies/icon_surprised.gif) но как его использовать? Где его флаг?
__________________
ДА, НО НЕТ!
|
|
|
|
30.10.2010, 12:00
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от NikMih_1
|
Читаю:
bit 5-2 SMPI‹3:0›: Sample/Convert Sequences Per Interrupt Selection bits
1111 = Interrupts at the completion of conversion for each 16th sample/convert sequence
1110 = Interrupts at the completion of conversion for each 15th sample/convert sequence
.....
0001 = Interrupts at the completion of conversion for each 2nd sample/convert sequence
0000 = Interrupts at the completion of conversion for each sample/convert sequence
Что это за прерывания? Мне достаточно бита DONE, для моих целей. В принципе это прерывание его заменяет, но как его использовать? Где его флаг?
|
IFS0bits.AD1IF он поднимется после указанного количества преобразований. Если выбранно 1 преобразование, то после каждого.
|
|
|
|
30.10.2010, 12:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от NikMih_1
|
Читаю:
bit 5-2 SMPI‹3:0›: Sample/Convert Sequences Per Interrupt Selection bits
1111 = Interrupts at the completion of conversion for each 16th sample/convert sequence
1110 = Interrupts at the completion of conversion for each 15th sample/convert sequence
.....
0001 = Interrupts at the completion of conversion for each 2nd sample/convert sequence
0000 = Interrupts at the completion of conversion for each sample/convert sequence
Что это за прерывания? Мне достаточно бита DONE, для моих целей. В принципе это прерывание его заменяет, но как его использовать? Где его флаг?
|
Ю.С. Магда
Микроконтроллеры PIC:
архитектура и программирование
стр. 213
Цитата:
|
В микроконтроллерах PIC24F предусмотрен очень удобный вариант конфигу
рирования АЦП, позволяющий обойтись без ручного задания точных временных
интервалов, как это мы делали, например, с помощью Таймера 1 в предыдущих
двух примерах. Это позволяет в определенной степени автоматизировать про
цесс аналогоцифрового преобразования и облегчить задачу программисту.
Для работы в таком режиме нужно установить биты SSRC2…SSRC0 регистра
AD1CON1 в значение 0b111 (0xE). В этом случае временные параметры про
цесса выборки и преобразования будут определяться внутренним счетчиком,
а процесс преобразования будет запускаться автоматически по окончании эта
па выборки.
Рассмотрим пример программы, в которой будем использовать такую кон
фигурацию модуля АЦП. В качестве исходного текста возьмем тот, который мы
использовали в первом примере, и модифицируем его. Вот как выглядит текст
модифицированной программы:
|
Далее следует готовый фрагмент программы под ваши требования. С подробными комментариями. Документ у вас должен быть, я его выкладывал для вас.
RTFM
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:47.
|
|