Страница 41 из 103
Re: Програмирование pic на СИ.
Добавлено: Сб янв 30, 2016 01:27:16
const1105
По поводу подтягивающих резисторов КРАМ ответил. Вместо них можно использовать ноги МК, переключая их на вход на время гашения.
Как бы у входа наоборот, высокое входное сопротивление.
Если подтяжка нулем на выходе не помогает, то перевод на вход......
база транзистора висит в воздухе.
Re: Програмирование pic на СИ.
Добавлено: Сб янв 30, 2016 16:13:14
Darkmaster
Значит поставил я pnp транзистор..И это сильно снизило засветку индикатора(пауза менее 1мс) правда тупит немного.видимо пересчитать резистор базы надо..я думаю еще лучше ставить полевики.Вроде они намного быстрее переключаются..
Заодно спасибо

и может кто подскажет типа аналога uln2003 .?только чтобы нагрузка подключалась не перед ней (uln2003) а после нее /него (драйвера )
Re: Програмирование pic на СИ.
Добавлено: Вс фев 14, 2016 22:47:23
TNT116
Собственно чтобы научиться писать на Си, собственно для PIC это основной язык программирования, вам потребуется всего ничего.
1. Четко выучить синтаксис языка, любая вменяемая книга по Си в помощь, для начала нужно знать где правильно ставить точку с запятой и пару операторов.
2. Представлять структуру микроконтроллера под который пишете код. без этого вы ничего вменяемого не напишите.
3. Основательно изучить описание на ваш компилятор, этот хитрый парень может напутать вам все карты, в своей манией оптимизации все вам может изгадить.
4. Правильные примеры исходников и структуры проектов.
удачи
Re: Програмирование pic на СИ.
Добавлено: Сб апр 02, 2016 17:01:48
arhimed2007
Мяу, народ!
Начал осваивать С для пиков через протеус и наткнулся на странный прикол. У меня не компилируется больше ОДНОЙ функции! Причём поменял хайтековский с на ХС8 - та же хрень! На синтаксис софтина не матерится, симуляцию запускает, но в листинге напротив всех функций, кроме первой, опкоды ОТСУТСТВУЮТ и обращение к оным в пошаговом режиме просто проскакивается, как комментарий.
Это какое-то ограничение самого Протеза, бесплатной версии компилятора или я что-то пропустил?
Re: Програмирование pic на СИ.
Добавлено: Сб апр 02, 2016 17:29:03
КРАМ
Может примерчик?
Re: Програмирование pic на СИ.
Добавлено: Сб апр 02, 2016 17:45:52
arhimed2007
Хотя бы вот. Стащить сам листинг пока не знаю, как, сделал скриншот.
Re: Програмирование pic на СИ.
Добавлено: Сб апр 02, 2016 18:10:51
botchin
С язък хорошии и мощнъй, но не терпит своеволия
Как оределяется функция
Пример:
int - тип возвращаемого резултата
my_func( - имя функции
int a, int b) - тип и имя параметров
{
return a+b; - тело функции
}
- здесь ничего не надо ставить, даже и ;
можно директивъ препроцессора, но ето плохой стил
void main(void)
{
....
думаю что у тебя компилятор ругается из за наличие ; там где ему не место.
Re: Програмирование pic на СИ.
Добавлено: Сб апр 02, 2016 18:24:51
arhimed2007
Для нерусских

повторю: компилятор НЕ РУГАЕТСЯ. Он честно и без ошибок переводит остаток программы в код и запускает симулятор. Но для приведённых в листинге ПУСТЫХ (void) функций (т.е. процедур) даже адресов не назначает!
При этом если в них нарушить синтаксис, компилятор выматерится.
Re: Програмирование pic на СИ.
Добавлено: Сб апр 02, 2016 18:58:13
botchin
Лично для тебя даю ссълку на "БИБЛИЮ" -
Brian W. Kernighan, Dennis M. Ritchie - The C programming Language
http://cpp.com.ru/kr_cbook/index.html#content
Почитай на досуге.
Re: Програмирование pic на СИ.
Добавлено: Сб апр 02, 2016 19:27:24
arhimed2007

Спасибо, брат-славянин! Книга сия у меня есть, но, пока размышлял, что тебе могло не понравиться, обратил внимание, что процедуры типа void всё равно при вызове должны содержать скобки. О чём я, не писавши на Си уже добрых лет 15, благополучно забыл. Можно было сразу носом ткнуть.
Re: Програмирование pic на СИ.
Добавлено: Сб апр 16, 2016 09:29:17
Stewart
Собственно, вопрос не вопрос, но интересно.
Компилятор МикроСи для PIC от Микроэлектронники.
Писал код для 16Ф628. Т.к. код получился больше и не компилировался, указал 16Ф648. Потихоньку оптимизировал, получилось ровно 2048.

Вернул тип камня 16Ф628 и код скомпилировался ещё меньше.

Въедливо разницу меж камнями не вычитывал, кроме объёма флеши, но на вскидку они не отличаются. Тем более, что код не имеет аппаратнозависимых функций, используется только прерывание по таймеру, софт-UART и библиотека 1602. Интересно, почему компилируется разный объём прошивки?
И более существенный вопрос. В МикроСи есть возможность задавать уровень оптимизации? Полазив по менюшкам - не нашёл.
Re: Програмирование pic на СИ.
Добавлено: Сб апр 16, 2016 11:44:58
Roman Venom
Немного глупый вопрос. В С есть функции для работы с WDT? Нужно просто менять время срабатывания в коде. А компилятор даёт вроде только через #pragma. Регистра CW1 ваще нету в дефайнах. Или только __asm ("") делать?
Re: Програмирование pic на СИ.
Добавлено: Ср май 18, 2016 07:24:58
Alpout
Всем привет! А нельзя ли использовать модуль CCP, конкретнее PWM стандартный режим в любых портах выводить? Мне пока известно, что выход CCP1 настроен только на один вывод, а мне нужно в трех пинах? ECCP не нужен.
Re: Програмирование pic на СИ.
Добавлено: Пн май 23, 2016 07:39:37
Dmitry888
Пытаюсь использовать bootloader на PIC18F25K80.
Взял код из примера MikroC для PIC18F45K22, заменив лишь UART1 на UART2
Спойлер
Код: Выделить всё
#pragma orgall 0x7CC0
#define BOOTLOADER_START_ADDR 0x7CC0
#define START_PROGRAM_ADDR 0x7FC0
static char block[64];
void Start_Program() org START_PROGRAM_ADDR{
}
unsigned short UART_Write_Loop(char send, char receive){
unsigned int rslt = 0;
while(1){
Delay_5ms();
UART2_Write(send);
Delay_5ms();
rslt++;
if (rslt == 0x0200)
return 0;
if (UART2_Read() == receive)
return 1;
}
}
void Write_Begin(){
FLASH_Erase_Write_64(START_PROGRAM_ADDR, block);
//--- goto main
block[0] = 0x60; //0xF03EEF60
block[1] = 0xEF;
block[2] = 0x3E;
block[3] = 0xF0;
}
void Start_Bootload(){
char i = 0, xx, yy;
long j = 0;
while (1) {
if (i == 64) {
//--- If 32 words (64 bytes) recieved then write to flash
if (!j)
Write_Begin();
if (j<BOOTLOADER_START_ADDR){
FLASH_Erase_Write_64(j, block);
}
i = 0;
j += 0x40;
}
//--- Ask for yy
UART2_Write('y');
while (!UART2_Data_Ready()) ;
//--- Read yy
yy = UART2_Read();
//--- Ask for xx
UART2_Write('x');
while (!UART2_Data_Ready()) ;
//--- Read xx
xx = UART2_Read();
//--- Save xxyy in block[i]
block[i++] = yy;
block[i++] = xx;
}
}
void main() org BOOTLOADER_START_ADDR{
// ANSELC = 0; // Configure PORTC pins as digital
UART2_Init(115200); // Init USART at 115200
if (UART_Write_Loop('g','r')) { // Send 'g' for ~5 sec, if 'r'
Start_Bootload(); // received start bootload
}
else {
Start_Program(); // else start program
}
}
В результате: соединение устанавливается, прошивка заливается через бутлоадер. Но после ресета, загрузки залитой программы не происходит. Почему то всё время загружается бутлоадер.
Подскажите, в чем может быть дело?
Re: Програмирование pic на СИ.
Добавлено: Чт июл 14, 2016 09:11:05
____Eugene____
здравствуйте . подскажите пожалуйста существуют ли переменные длинной в 64 бита под pic16 pic18
если нет то как выйти из положения если требуется простая арифметика с числами в 64бита и болие
спасибо!
Re: Програмирование pic на СИ.
Добавлено: Чт июл 14, 2016 13:16:13
Аlex
В PIC16 и PIC18 нет переменных. В них есть область памяти, которая выделяется компилятором под переменные. Соответственно, всё зависит от компилятора, а не платформы.
Re: Програмирование pic на СИ.
Добавлено: Чт июл 14, 2016 15:11:11
____Eugene____
Аlex писал(а):В PIC16 и PIC18 нет переменных
это я понимаю ,спасибо постараюсь изъяснятся точнее
Покажите пожалуйста пример создания целочисленной без знаковой переменной длиной в 64 бита
и еще хотелось бы знать какой именно компилятор "такое проглотит"
Re: Програмирование pic на СИ.
Добавлено: Чт июл 14, 2016 15:36:21
ARV
____Eugene____ писал(а):пример создания целочисленной без знаковой переменной длиной в 64 бита
Re: Програмирование pic на СИ.
Добавлено: Чт июл 14, 2016 15:39:56
botchin
unsigned char a[8];
Вот здесь возникает вопрос - 1. Кто и как напишет код для "простой арифметикой" с переменной в 64 бита?
и 2. Зачем вам такие числа 2^64? Въ атомъ в Вселенную будете считать?
Re: Програмирование pic на СИ.
Добавлено: Чт июл 14, 2016 16:08:44
Аlex
____Eugene____ писал(а):и еще хотелось бы знать какой именно компилятор "такое проглотит"
Вообще, как бы, наоборот - нам хотелось знать какой Вы компилятор используете. Тогда уже можно ответить на Ваш вопрос.