Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
31.07.2006, 22:21
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Вариации...
Код:
|
#include ‹16F877A.h›
#device ADC=10
#use delay(clock=10000000)
#fuses HS, NOWDT,NOLVP
#byte ADCON0 =0x1F
#bit GO=0x1F.2
int n;
#int_AD
AD_isr()
{
n =read_adc() / 102;
output_C((2 ‹‹ n - 1));
GO=1;
}
void main()
{
set_TRIS_C(0x00);
setup_adc_ports(RA0_ANALOG);
setup_adc(ADC_CLOCK_DIV_32);
set_adc_channel(0);
enable_interrupts(INT_AD);
enable_interrupts(GLOBAL);
GO=1;
WHILE(1);
} |
Код:
|
#include ‹16F877A.h›
#device ADC=10
#use delay(clock=10000000)
#fuses HS, NOWDT,NOLVP
#byte ADCON0 =0x1F
int n;
#int_AD
AD_isr()
{
n =read_adc() / 102;
output_C((2 ‹‹ n - 1));
bit_set(ADCON0,2);
}
void main()
{
set_TRIS_C(0x00);
setup_adc_ports(RA0_ANALOG);
setup_adc(ADC_CLOCK_DIV_32);
set_adc_channel(0);
enable_interrupts(INT_AD);
enable_interrupts(GLOBAL);
bit_set(ADCON0,2);
WHILE(1);
} |
|
|
|
|
31.07.2006, 22:39
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Да , а вот почему побитовое И не работает
это и мне интересно...
|
|
|
|
31.07.2006, 22:48
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Блин ничего не понимаю,
и это то же заработало
Код:
|
#include ‹16F877A.h›
#device ADC=10
#use delay(clock=10000000)
#fuses HS, NOWDT,NOLVP
#byte ADCON0 =0x1F
int n;
#int_AD
AD_isr()
{
n =read_adc() / 102;
output_C((2 ‹‹ n - 1));
ADCON0 |= 4;
}
void main()
{
set_TRIS_C(0x00);
setup_adc_ports(RA0_ANALOG);
setup_adc(ADC_CLOCK_DIV_32);
set_adc_channel(0);
enable_interrupts(INT_AD);
enable_interrupts(GLOBAL);
ADCON0 |= 4;
WHILE(1);
} |
|
|
|
|
31.07.2006, 23:24
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Так, нашел почему пример в книге для 18
пиков не работал--
там ADCON0 дается адрес 0x1F то для 16 пиков
а надо 0xFC2
|
|
|
|
31.07.2006, 23:42
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Вот пожалуйте ....
Да видно не всему верить можно, что напечатано...
-- Прилагается рисунок: --
|
|
|
|
31.07.2006, 23:52
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
to zelanez
У тебя та же ошибка была
за место адреса для ADCON
ты давал ему данные
Код:
|
#byte ADCON0 = 0x85 /* F/32_RA0_GO=1_0_IN */ |
Читайте Даташиты...
http://www.microchip.ru/lit/?mid=1x0
|
|
|
|
01.08.2006, 09:24
|
|
Вид на жительство
Регистрация: 23.04.2006
Сообщений: 308
Сказал спасибо: 14
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
|
Так... Только вот смысл непонятен - почему нужно явно указывать адрес регистра ADCON0? А вот почему-то TRISA, PORTC - не надо. Да и при запуске преобразования ещё несколько регистров задействуется. Ведь есть же хедер, там должно быть всё описано.
Например в Асме - не нужно указывать адрес служебного регистра, если имя указал.
|
|
|
|
01.08.2006, 17:36
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Сообщение от zelanez
|
Так... Только вот смысл непонятен - почему нужно явно указывать адрес регистра ADCON0? А вот почему-то TRISA, PORTC - не надо. Да и при запуске преобразования ещё несколько регистров задействуется. Ведь есть же хедер, там должно быть всё описано.
Например в Асме - не нужно указывать адрес служебного регистра, если имя указал.
|
А ты хедер и посмотрел бы , там упоминания о ADCON0
нет .
|
|
|
|
01.08.2006, 18:23
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Да и что мешает создать свой хедер ,
или изменить родной ?
Кстати там есть встроенная функция
которая решает твои проблемы
read_adc() при аргументе start_only
она выставляет ADCON0.2
т.е. запускает преобразование.
И тебе решать будешь ли ты юзать
эту функцию или напишишь свой драйвер
работы с ADC.
Странно другое, почему у Шпака ее в проекте нет.
|
|
|
|
02.08.2006, 20:01
|
|
Вид на жительство
Регистрация: 23.04.2006
Сообщений: 308
Сказал спасибо: 14
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
|
А я-то понял так, что аргумент (start_only) Только запускает преобразование, при этом результат не возвращается. Т.е. read_adc() ничего не даст.
Но проверить это ничто не мешает, чем и займусь.
Насчёт редактирования хедера - и что, я и это должен делать?! 8O
Всё-таки среду для асма делали более разумные люди.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
CCS PICC+ TERMINAL
|
Gladkih |
Микроконтроллеры, АЦП, память и т.д |
0 |
24.07.2009 23:30 |
CCS PICC 4.088
|
dosikus |
Микроконтроллеры, АЦП, память и т.д |
12 |
19.06.2009 21:23 |
CCS PICC 4.037
|
fmssp |
Proteus, KiCAD и другие ECAD |
10 |
18.05.2007 20:25 |
CCS-PICC и EEPROM
|
double_dash |
Микроконтроллеры, АЦП, память и т.д |
1 |
22.04.2007 01:57 |
о CCS-PICC
|
double_dash |
Proteus, KiCAD и другие ECAD |
1 |
02.03.2007 23:19 |
Часовой пояс GMT +4, время: 15:39.
|
|