Програмирование pic на СИ.

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Програмирование pic на СИ.

Сообщение dosikus »

Chettuser, здесь почитай http://www.microchip.su/showpost.php?p= ... ostcount=2
Реклама
Chettuser

Re: Програмирование pic на СИ.

Сообщение Chettuser »

Дык, хидеры из /docs юзаются регулярно. На разных сериях по разному :-) Где то хавает, где то нет. В мануале User Guide описаны оба способа, но один из них не рекомендован.
Реклама
Аватара пользователя
AVT-28
Потрогал лапой паяльник
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

Re: Програмирование pic на СИ.

Сообщение AVT-28 »

Вчера тоже столкнулся с pragma.
16f1824 нужно в коде конфиг прописать.
Вот это никак не прокатывает причём ошибка какая то очень странная.

Код: Выделить всё

#pragma config FOSC = INTOSC, WDTE = OFF, PWRTE = OFF, MCLRE = ON, CP = OFF
Error [715] D:\mplab\TermoScooter\termo.c; 19. bad pragma "F"
Error [715] D:\mplab\TermoScooter\termo.c; 19. bad pragma "x"
Error [715] D:\mplab\TermoScooter\termo.c; 19. bad pragma "W"
Error [715] D:\mplab\TermoScooter\termo.c; 19. bad pragma "x"
Error [715] D:\mplab\TermoScooter\termo.c; 19. bad pragma "P"
Error [715] D:\mplab\TermoScooter\termo.c; 19. bad pragma "x"
Error [715] D:\mplab\TermoScooter\termo.c; 19. bad pragma "M"
Error [715] D:\mplab\TermoScooter\termo.c; 19. bad pragma "x"
Error [715] D:\mplab\TermoScooter\termo.c; 19. bad pragma "C"

Компилятор hi-tech 9.82
Так и не понял как прописать.
На 18f46k20 работает с hi-tech pic18
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение urry »

16f1824 нужно в коде конфиг прописать.
беда... Для хайтека залезаем C:\Program Files\HI-TECH Software\PICC\9.83\include\наш камень
и смотрим, как оно правильно пишется,

Для хс8 залезаем C:\Program Files\Microchip\xc8\v1.33\dat\cfgmap\наш камень
и ищем, как битики нашего камня обзываются там.

(с) Мы ленивы и нелюбопытны ... Пушкин
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
AVT-28
Потрогал лапой паяльник
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

Re: Програмирование pic на СИ.

Сообщение AVT-28 »

Нее я не про то..
В общем нарыл где то древний проект и там оказалось так. И заработало.

Код: Выделить всё

__CONFIG(STVREN_OFF &  FOSC_INTOSC & WDTE_OFF & PWRTE_OFF & MCLRE_OFF & LVP_OFF & CP_OFF & CPD_OFF
 & BOREN_OFF & CLKOUTEN_OFF & IESO_OFF & FCMEN_OFF & PLLEN_ON);
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

AVT-28 писал(а):В общем нарыл где то древний проект и там оказалось так. И заработало
urry писал(а):беда... Для хайтека залезаем C:\Program Files\HI-TECH Software\PICC\9.83\include\наш камень
и смотрим, как оно правильно пишется,
:)
Реклама
Аватара пользователя
Demonit88
Открыл глаза
Сообщения: 43
Зарегистрирован: Сб авг 14, 2010 05:26:04
Откуда: Воронеж

Re: Програмирование pic на СИ.

Сообщение Demonit88 »

Всем привет! друзья подскажите, начал писать код скомпилировал для проверки в протеусе но проц молчит, что я не так прописал посмотрите плиз, я только учусь...
Спойлерprogram open_door;

var Rez :byte; // Режим работы портов, присвоение имени портам

door1 : sbit at GPIO.B0; //передний левый модуль

door2 : sbit at GPIO.B1; // задний левый модуль

door3 : sbit at GPIO.B2; //Задний правый модуль

Button_door1 : sbit at GPIO.B3; //Кнопка передняя левая

Button_door2 : sbit at GPIO.B4; //Кнопка задняя левая

Button_door3 : sbit at GPIO.B5; //Кнопка задняя правая

begin
begin // тест модулей при запуске.
delay_ms (150);
door1:= 1; // включение 1 модуля
delay_ms (500);
door2:= 1; // включение 2 модуля
delay_ms (500);
door3:= 1; // включение 3 модуля
delay_ms (3000);
door1:= 0; // выключение 1 модуля
door2:= 0; // выключение 2 модуля
door3:= 0; // выключение 3 модуля
end;
end.
Неважен цвет шерсти ,главное как ты пользуешся головой ,усами ,лапами.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

Demonit88, я Вас предупреждал.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Програмирование pic на СИ.

Сообщение dosikus »

Demonit88 писал(а): начал писать код
Каким боком пасксраль относится с С, да еще в убогой реализации от MikroE ?
Demonit88, я же предлагал набросать план изучения, что ж все в позу то встаем?
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: Програмирование pic на СИ.

Сообщение alex_ »

Пакаль сдесь однозначно не к месту, кстати я пишу на MikroC. Я пока не ас в прогромировании но пока он меня вполне устраивает, почти все стандартные библиотеки есть, вот только мне интересно чем же он плох?
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Програмирование pic на СИ.

Сообщение dosikus »

alex_ писал(а): Я пока не ас в прогромировании
Увы я то же, я даже не знаю что это такое - прогромировании . :)))
alex_ писал(а): почти все стандартные библиотеки есть,
Под стандартными либами, я так понимаю, имеем ввиду встроенные плюшки MikroE ?
alex_ писал(а): вот только мне интересно чем же он плох?
Помимо пакостей присущих всем продуктам MikroE, паскаль еще и мертв.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: Програмирование pic на СИ.

Сообщение alex_ »

Согласен накосячил в программировании
Помимо пакостей присущих всем продуктам MikroE
хотелось бы знать про эти пакости, что они из себя представляют :dont_know:
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Програмирование pic на СИ.

Сообщение dosikus »

Закрытые "универсальные" либы, уход от стандарта- это основные . Или этого мало? :)))
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: Програмирование pic на СИ.

Сообщение alex_ »

Ну мне это не мешает.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Програмирование pic на СИ.

Сообщение dosikus »

Мешает да еще как, только ты это не осознаешь .
Когда перестанешь копипастить чужие куски кода , тогда и придет облом... :)))
Chettuser

Re: Програмирование pic на СИ.

Сообщение Chettuser »

Что то не пойму я как преобразовать типы в XC8.
Имеется:
unsigned int A, B;
double C;

C=A*sin(B);

далее C идёт в функцию, которая кушает только int (unsigned int).

Помнится на Delphi'ях я как то выкручивался с типами, а тут...
Что тут можно сделать?
Спасибо.
Аватара пользователя
A. Fig Lee
Потрогал лапой паяльник
Сообщения: 306
Зарегистрирован: Сб мар 17, 2012 20:31:44
Откуда: Нью Йорк

Re: Програмирование pic на СИ.

Сообщение A. Fig Lee »

Как во всех сях:

double C;

void f (uint32_t i);

вызываем функцию с кастом:

f( (uint32_t) C);

компиляторконвертнет наш дабл С в uint32_t
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: Програмирование pic на СИ.

Сообщение alex_ »

dosikus писал(а):Мешает да еще как, только ты это не осознаешь .
Когда перестанешь копипастить чужие куски кода , тогда и придет облом... :)))
Неа не мешает, можно использовать готовую либу если не устраивает пишешь её сам и потом инклудишь и все дела. :))
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Програмирование pic на СИ.

Сообщение dosikus »

А вот здесь непонятно зачем нужны тогда продукты MikroE . :)))
Обычно эти продукты пользуют те кто не в состояние написать свое ...
Аватара пользователя
Siarzhuk
Потрогал лапой паяльник
Сообщения: 353
Зарегистрирован: Вс янв 19, 2014 22:41:55

Re: Програмирование pic на СИ.

Сообщение Siarzhuk »

Chettuser писал(а):Что то не пойму я как преобразовать типы в XC8.
Имеется:
unsigned int A, B;
double C;

C=A*sin(B);

далее C идёт в функцию, которая кушает только int (unsigned int).

Помнится на Delphi'ях я как то выкручивался с типами, а тут...
Что тут можно сделать?
Спасибо.
unsigned int B - у вас в каких единицах? Описание функции sin() в юзер гайде компилятора не указывает единицы для параметра функции - но при взгляде на пример мне мой склероз почему-то нашёптывает что это очень похоже на радианы.

Код: Выделить всё

#include <math.h>
 
double sin (double f)

Description
 This function returns the sine function of its argument.

Example
#include <math.h>
#include <stdio.h>
#define C 3.141592/180.0
void 
main (void)
{
    double i;
    for(i = 0 ; i <= 180.0 ; i += 10)
        printf("sin(%3.0f) = %f\n", i, sin(i*C));
        printf("cos(%3.0f) = %f\n", i, cos(i*C));
}
Если B у вас в градусах, можно сделать так:

Код: Выделить всё

C = A * sin(M_PI * B / 180.);

Далее, выхлоп sin() - это double - домножаете его на unsigned int A - результат неявно преобразуется к double - но при достаточно большом значении A double нам здесь больше и не нужен - т.е. переменную C разумно объявить unsigned int. Компилятор-же совершенно справедливо заметит нам о потере точности при присвоении double в unsigned int. Что-же, устроим ему явное преобразование - мы ведь знаем что точности нам хватит:

Код: Выделить всё

C = (unsigned int)(A * sin(M_PI * B / 180.));
После этого с функцией, что кушает переменную C проблем не возникнет.

Вообще с явными и особенно неявными преобразованиями типов имеет смысл досконально разобраться - понимание происходящего позволит вам писать оптимальнее и избежать популярных проблем, когда, например, явное приведение типа было использовано чтобы заткнуть пасть компилятору но попутно прикопало хорошие грабли - которые выскакивают как правило неожиданно и бъют не того кого следовало-бы. :-)
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)
Ответить

Вернуться в «PIC»