06.04.2015, 21:42
|
|
Прохожий
Регистрация: 05.04.2015
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
MT8889c имеет несколько функций и сложных да видел книжный магазин , но не так, как заставить его работать , один , чтобы подать пример , который работает здесь я могу загрузить полный пример , что я нашел не
Последний раз редактировалось marianoarias; 06.04.2015 в 21:45.
|
|
|
|
18.04.2015, 05:32
|
|
Прописка
Регистрация: 14.02.2010
Адрес: СССР
Сообщений: 286
Сказал спасибо: 141
Сказали Спасибо 51 раз(а) в 43 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Народ, я как-то забыл - корректно ли выключать обработку прерываний в обработчике? Чёт не могу найти...
камень 16F1936
как-то так:
Код:
|
#INT_TIMER1
void TIMER1_isr(void)
{
DISABLE_INTERRUPTS(GLOBAL);
Period++;
LCD_PRINT(DATA) - условно.... Медленная операция
ENABLE_INTERRUPTS(GLOBAL);
} |
|
|
|
|
18.04.2015, 07:13
|
|
Прописка
Регистрация: 29.01.2005
Адрес: Киев
Сообщений: 227
Сказал спасибо: 50
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
В даташите (раздел 7.1) пишут, что GIE снимается при входе в прерывание и устанавливается инструкцией RETFIE. Т.е. руками в прерывании его дергать нет нужды.
__________________
Невежество всегда на что-нибудь испражняется.
|
|
|
Сказали "Спасибо" lisergin
|
|
|
21.04.2015, 13:07
|
|
Частый гость
Регистрация: 25.10.2006
Сообщений: 16
Сказал спасибо: 0
Сказали Спасибо 61 раз(а) в 13 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
|
|
|
Эти 7 пользователя(ей) сказали Спасибо 26165 за это сообщение:
|
|
|
27.04.2015, 04:09
|
|
Прописка
Регистрация: 14.02.2010
Адрес: СССР
Сообщений: 286
Сказал спасибо: 141
Сказали Спасибо 51 раз(а) в 43 сообщении(ях)
|
Опять указатели и константы....
Народ, такая ситуация: надо строки из const копировать в RAM. (строк много, все в раму не влезают) Указатели на const CCS не делает. Несколько дней уже ломаю голову...
Вот примерно так выглядит:
Код:
|
const char menus[4][17]={"настр.яркости ","настр. ШИМ ","наст. откл.по U ","наст. откл по t "};
char st[16];
unsigned int i;
main{
.
[скипнуто]
.
strcpy(st,menus[i]);
lcd_puts(st);
.
.
}
void lcd_puts(char* cu)
{
char s;
while(*cu)
{
s=*cu++;
lcd_send_byte(1,s);
}
} |
соответственно, strcpy не работает.
лепить подпрограммы вывода по каждому элементу, или делать глобальный case - выглядит безнравственно..
Кто что может посоветовать?
|
|
|
|
27.04.2015, 09:05
|
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от Old_Monster
|
соответственно, strcpy не работает.
лепить подпрограммы вывода по каждому элементу, или делать глобальный case - выглядит безнравственно..
Кто что может посоветовать?
|
strcpy работает только с RAM? Если так, то должна быть в библиотеке функция, которая копирует строку из программной памяти. Поищите сначала ее.
|
|
|
|
27.04.2015, 12:48
|
|
Прописка
Регистрация: 14.02.2010
Адрес: СССР
Сообщений: 286
Сказал спасибо: 141
Сказали Спасибо 51 раз(а) в 43 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
memcpy (destination, source, n) - работает по указателям.
есть ещё
read_program_memory( ),
но
Код:
|
READ_PROGRAM_MEMORY (address, dataptr, count );
address is 16 bits on PCM parts and 32 bits on PCH parts . The least significant bit should always be 0 in PCM.
dataptr is a pointer to one or more bytes.
count is a 8 bit integer on PIC16 and 16-bit for PIC18 |
- но тут 2 вопроса.
1. не уверен, что данные PROGRAM_MEMORY располагаются подряд одним куском - что-то такое мне встречалось, причём в контексте "не работает".
2. Не могу понять, как мне получить адрес константы, если компилятор не может указатель на неё предоставить. И тем более - адрес второй и далее константы а массиве - см п.1
У меня менюшка на lcd, таких массивов штук 10...
Но по идее - должно быть нормальное решение, просто я его не вижу.
Правильным ходом было бы задать вопрос на форуме производителя, но и компилятор у меня "бесплатный" и с языком вероятного противника - не фонтан.
|
|
|
|
27.04.2015, 13:22
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Посмотрите в хелпе описание strcpy. В HI-TECH всё работает. На худший случай напишите свой strcpy, например
http://netlib.narod.ru/library/book0003/ch05_05.htm
|
|
|
|
27.04.2015, 13:51
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
В CCS извечные проблемы с указателями что в RAM что в ROM .
Советую перейти на XC8 .
На счет const :
Цитата:
|
#DEVICE
Syntax:
#DEVICE chip options
---cut----
PASS_STRINGS=IN_RAM
A new way to pass constant strings to a function by first copying the string to RAM and then passing a pointer to RAM to the function.
CONST=READ_ONLY
Uses the ANSI keyword CONST definition, making CONST variables read only, rather than located in program memory.
CONST=ROM
Uses the CCS compiler traditional keyword CONST definition, making CONST variables located in program memory.
---cut----
|
__________________
Осторожно , злой кот
|
|
|
|
27.04.2015, 15:41
|
|
Прописка
Регистрация: 14.02.2010
Адрес: СССР
Сообщений: 286
Сказал спасибо: 141
Сказали Спасибо 51 раз(а) в 43 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
STM32F0, я очень рад, что в hitech оно работает и разумеется, я курил хелп по strcpy
dosikus, мне кажется, что из-за одной, редко используемой(мной) функции менять компилятор - не серьёзно. И да, я видел(и даже понял) приведённый Вами кусок, но не понял - зачем Вы его сюда. Поясните плиз.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:12.
|
|