Програмирование pic на СИ.
Re: Програмирование pic на СИ.
Chettuser, здесь почитай http://www.microchip.su/showpost.php?p= ... ostcount=2
- Реклама
-
Chettuser
Re: Програмирование pic на СИ.
Дык, хидеры из /docs юзаются регулярно. На разных сериях по разному
Где то хавает, где то нет. В мануале User Guide описаны оба способа, но один из них не рекомендован.
Re: Програмирование pic на СИ.
Вчера тоже столкнулся с pragma.
16f1824 нужно в коде конфиг прописать.
Вот это никак не прокатывает причём ошибка какая то очень странная.
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
16f1824 нужно в коде конфиг прописать.
Вот это никак не прокатывает причём ошибка какая то очень странная.
Код: Выделить всё
#pragma config FOSC = INTOSC, WDTE = OFF, PWRTE = OFF, MCLRE = ON, CP = OFFError [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 на СИ.
беда... Для хайтека залезаем C:\Program Files\HI-TECH Software\PICC\9.83\include\наш камень16f1824 нужно в коде конфиг прописать.
и смотрим, как оно правильно пишется,
Для хс8 залезаем C:\Program Files\Microchip\xc8\v1.33\dat\cfgmap\наш камень
и ищем, как битики нашего камня обзываются там.
(с) Мы ленивы и нелюбопытны ... Пушкин
Re: Програмирование pic на СИ.
Нее я не про то..
В общем нарыл где то древний проект и там оказалось так. И заработало.
В общем нарыл где то древний проект и там оказалось так. И заработало.
Код: Выделить всё
__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 на СИ.
AVT-28 писал(а):В общем нарыл где то древний проект и там оказалось так. И заработало
urry писал(а):беда... Для хайтека залезаем C:\Program Files\HI-TECH Software\PICC\9.83\include\наш камень
и смотрим, как оно правильно пишется,
Re: Програмирование pic на СИ.
Всем привет! друзья подскажите, начал писать код скомпилировал для проверки в протеусе но проц молчит, что я не так прописал посмотрите плиз, я только учусь...
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.
Спойлер
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 на СИ.
Demonit88, я Вас предупреждал.
Re: Програмирование pic на СИ.
Каким боком пасксраль относится с С, да еще в убогой реализации от MikroE ?Demonit88 писал(а): начал писать код
Demonit88, я же предлагал набросать план изучения, что ж все в позу то встаем?
Re: Програмирование pic на СИ.
Пакаль сдесь однозначно не к месту, кстати я пишу на MikroC. Я пока не ас в прогромировании но пока он меня вполне устраивает, почти все стандартные библиотеки есть, вот только мне интересно чем же он плох?
Re: Програмирование pic на СИ.
Увы я то же, я даже не знаю что это такое - прогромировании .alex_ писал(а): Я пока не ас в прогромировании
Под стандартными либами, я так понимаю, имеем ввиду встроенные плюшки MikroE ?alex_ писал(а): почти все стандартные библиотеки есть,
Помимо пакостей присущих всем продуктам MikroE, паскаль еще и мертв.alex_ писал(а): вот только мне интересно чем же он плох?
Re: Програмирование pic на СИ.
Согласен накосячил в программировании

хотелось бы знать про эти пакости, что они из себя представляютПомимо пакостей присущих всем продуктам MikroE
Re: Програмирование pic на СИ.
Закрытые "универсальные" либы, уход от стандарта- это основные . Или этого мало? 
Re: Програмирование pic на СИ.
Ну мне это не мешает.
Re: Програмирование pic на СИ.
Мешает да еще как, только ты это не осознаешь .
Когда перестанешь копипастить чужие куски кода , тогда и придет облом...
Когда перестанешь копипастить чужие куски кода , тогда и придет облом...
-
Chettuser
Re: Програмирование pic на СИ.
Что то не пойму я как преобразовать типы в XC8.
Имеется:
unsigned int A, B;
double C;
C=A*sin(B);
далее C идёт в функцию, которая кушает только int (unsigned int).
Помнится на Delphi'ях я как то выкручивался с типами, а тут...
Что тут можно сделать?
Спасибо.
Имеется:
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 на СИ.
Как во всех сях:
double C;
void f (uint32_t i);
вызываем функцию с кастом:
f( (uint32_t) C);
компиляторконвертнет наш дабл С в uint32_t
double C;
void f (uint32_t i);
вызываем функцию с кастом:
f( (uint32_t) C);
компиляторконвертнет наш дабл С в uint32_t
Re: Програмирование pic на СИ.
Неа не мешает, можно использовать готовую либу если не устраивает пишешь её сам и потом инклудишь и все дела.dosikus писал(а):Мешает да еще как, только ты это не осознаешь .
Когда перестанешь копипастить чужие куски кода , тогда и придет облом...
Re: Програмирование pic на СИ.
А вот здесь непонятно зачем нужны тогда продукты MikroE .
Обычно эти продукты пользуют те кто не в состояние написать свое ...
Обычно эти продукты пользуют те кто не в состояние написать свое ...
Re: Програмирование pic на СИ.
unsigned int B - у вас в каких единицах? Описание функции sin() в юзер гайде компилятора не указывает единицы для параметра функции - но при взгляде на пример мне мой склероз почему-то нашёптывает что это очень похоже на радианы.Chettuser писал(а):Что то не пойму я как преобразовать типы в XC8.
Имеется:
unsigned int A, B;
double C;
C=A*sin(B);
далее C идёт в функцию, которая кушает только int (unsigned int).
Помнится на Delphi'ях я как то выкручивался с типами, а тут...
Что тут можно сделать?
Спасибо.
Код: Выделить всё
#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));
}
Код: Выделить всё
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.));
Вообще с явными и особенно неявными преобразованиями типов имеет смысл досконально разобраться - понимание происходящего позволит вам писать оптимальнее и избежать популярных проблем, когда, например, явное приведение типа было использовано чтобы заткнуть пасть компилятору но попутно прикопало хорошие грабли - которые выскакивают как правило неожиданно и бъют не того кого следовало-бы.
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! 


