13.11.2014, 23:52
|
#1481
|
Прохожий
Регистрация: 11.10.2006
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 3 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
|
|
|
Сказали "Спасибо" SparkTJ
|
|
|
14.11.2014, 11:08
|
#1482
|
Почётный гражданин KAZUS.RU
Регистрация: 22.02.2008
Адрес: Ukraine, рядом с Полтавой
Сообщений: 9,702
Сказал спасибо: 5,498
Сказали Спасибо 25,129 раз(а) в 5,644 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Попытки с четвёртой он таки сливается. Какие-то косяки с капчей на руфолдере.
__________________
«Совершенство — это не тогда, когда уже нечего больше добавить, а тогда, когда уже нечего отнять.»
/Эйнштейн/
моя домашняя страничка: http://www.eddy.com.ua/
|
|
|
|
16.11.2014, 00:14
|
#1483
|
Вид на жительство
Регистрация: 12.12.2012
Сообщений: 368
Сказал спасибо: 31
Сказали Спасибо 204 раз(а) в 112 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Здравствуйте, уважаемые знатоки.
Вот столкнулся с засадой.
Суть- RA0-измерение напряжения от датчика тока 1
RA1-измерение напряжения от датчика тока 2
RA2-измерение температуры ds1820
RA3-измерение температуры ds1820
неудачное расположение не спорю.
но платы от предыдущих проектов.
Да и функций запросили , что у 18f452 ног и не осталось.
Перевожу порт А в аналог . Читаю токи без проблем.
Выключаю АDC и setup_adc( NO_ANALOGS )
Чтобы поработать с термометрами и ничего.
Порт А не сбросился, в ADCON1 по идее должно быть 0x07
Пришлось применить вставку АСМ в виде лома.
Всё работает чудесно , но это не совсем корректно.
кто как выкручивается или я не дочитал где-то?
Код:
|
void I_meazire( void)
{
setup_adc_ports( ALL_ANALOG );
setup_adc(ADC_CLOCK_DIV_32);
delay_ms (5);
set_adc_channel( 0 );
delay_ms (5);
I_1 = read_adc();
set_adc_channel( 1 );
delay_ms (5);
I_2 = read_adc();
setup_adc( ADC_OFF );
setup_adc( NO_ANALOGS );
#ASM
movlw 0x07
movwf ADCON1
#ENDASM |
Код:
|
26: setup_adc( ADC_OFF );
06B0 90C2 BCF 0xfc2, 0, ACCESS
27: setup_adc( NO_ANALOGS );
06B2 9CC1 BCF 0xfc1, 0x6, ACCESS
06B4 9CC2 BCF 0xfc2, 0x6, ACCESS
06B6 9EC2 BCF 0xfc2, 0x7, ACCESS
06B8 8EC1 BSF 0xfc1, 0x7, ACCESS
06BA 80C2 BSF 0xfc2, 0, ACCESS
28: #ASM
29: movlw 0x07
06BC 0E07 MOVLW 0x7
30: movwf ADCON1
06BE 6EC1 MOVWF 0xfc1, ACCESS
31:
32: #ENDASM |
|
|
|
|
16.11.2014, 11:13
|
#1484
|
Временная регистрация
Регистрация: 04.06.2010
Сообщений: 52
Сказал спасибо: 43
Сказали Спасибо 13 раз(а) в 7 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Почитать help по
#USE STANDARD_IO
#USE FIXED_IO
#USE FAST_IO
По умолчанию используется #USE STANDARD_IO, возможно, поможет #USE FAST_IO.
Как то давно была похожая проблема с вводом/выводом по разным ногам одного порта, решилась именно через
#USE FAST_IO
|
|
|
|
16.11.2014, 12:08
|
#1485
|
Вид на жительство
Регистрация: 12.12.2012
Сообщений: 368
Сказал спасибо: 31
Сказали Спасибо 204 раз(а) в 112 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Знаю про эти функции и пользуюсь.
Тем более их выполнение хорошо видно в листинге.
Но вот из практики и документации, если соответствующие настройкам каналы были выделены под adc, то функции #USE STANDARD_IO
#USE FIXED_IO, #USE FAST_IO не действуют на эти пины.
Они "забраны" adc и их "нет". Настройки ADCON1 имеют приоритет.
Похожая проблема была с 16 пиками и настройкой компаратора.
|
|
|
|
16.11.2014, 12:42
|
#1486
|
Прописка
Регистрация: 29.01.2005
Адрес: Киев
Сообщений: 227
Сказал спасибо: 50
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Так говорилось же вроде не раз: выкидываем все эти setup_adc() и пишем в стиле
ADCON0 = 0bxxxxxxxx;
ADCON1 = 0bxxxxxxxx;
TRISA = ...;
ну, там, возможно
ADCON1 |= ...
ADCON0 &= ...
или
ADCON0.ADON = x;
предварительно сгенерировав соответствующий *.inc.
Все эти #USE xxx_IO() только путают текст, а в проектах с более чем одним файлом имеют обыкновение постепенно превращаться в кошмарик.
Ассемблер, конечно, круто, но не всегда переносимо, и, как по мне, оправдывается только в совсем критичных ко времени кусках кода.
__________________
Невежество всегда на что-нибудь испражняется.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо lisergin за это сообщение:
|
|
|
16.11.2014, 14:06
|
#1487
|
Вид на жительство
Регистрация: 12.12.2012
Сообщений: 368
Сказал спасибо: 31
Сказали Спасибо 204 раз(а) в 112 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Цитата:
|
Так говорилось же вроде не раз: выкидываем все эти setup_adc() и пишем в стиле
ADCON0 = 0bxxxxxxxx;
ADCON1 = 0bxxxxxxxx;
TRISA = ...;
ну, там, возможно
ADCON1 |= ...
ADCON0 &= ...
или
ADCON0.ADON = x;
|
Спасибо за исчерпывающий ответ.
Ясно, что некоторые моменты надо делать, как вы говорите.
Очень долго писал всё на АСМ.
Обложился подпрограммами и на всё поплёвывал, но арксинус меня сломал несколько лет назад.
И перешёл на CCS. Теперь пишу всё на нём.
(Первые ощущения-Слаще морковки ничего в жизни не ел.
Но ближе к ботве пошли червячки.)
|
|
|
|
17.11.2014, 17:52
|
#1488
|
Временная регистрация
Регистрация: 27.02.2012
Адрес: Николаев
Сообщений: 98
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от _Артём_
|
Обычное дело при отладке - оптимизатор так генеритрует код, что привязаться к номеру строки невозможно. Или у вас отпимизация не включена?
Такое не только с ПИКами происходит.
|
Да, действительно. Уровень оптимизации понизил - всё стало на свои места.
|
|
|
|
24.11.2014, 23:01
|
#1489
|
Гражданин KAZUS.RU
Регистрация: 06.08.2006
Сообщений: 694
Сказал спасибо: 24
Сказали Спасибо 38 раз(а) в 31 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Привет форумчане. камень 24hj128gp506. задача выдать посылку по УАРТУ через ДМА.
пишу
setup_dma(0,DMA_OUT_UART1, DMA_BYTE);
dma_start(0, DMA_ONE_SHOT|DMA_FORCE_NOW,&buf[0],cnt);
в buf предварительно пишу "WORD" , cnt=4.
Смотрю в SIOW(в комплекте с ЦЦСПИКОМ) а там выходит 5 байт но блин явно не "WORD". убираю выдачу через ДМА а напрямую через FPRINTF то все нормально "WORD".
самое обидное что не могу найти описания настройки ДМА для ЦЦСПИКа.
может кто подскажет че не так делаю. Заранее благодарен.
|
|
|
|
25.11.2014, 09:18
|
#1490
|
Временная регистрация
Регистрация: 23.05.2006
Сообщений: 60
Сказал спасибо: 8
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Изучение PIC C Compiler(CCS C)
по моему на ассемблерные вставки ругаются в первую очередь те, кто его не знает.
movlw 0x07
movwf ADCON1
что может быть проще?
а вот что там оптимизатор компилятора на оптимизирует еще фиг знает ...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:23.
|
|