ШИМ на PIC16F876A

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
dexart12
Родился
Сообщения: 17
Зарегистрирован: Сб фев 17, 2018 23:44:11

ШИМ на PIC16F876A

Сообщение dexart12 »

Всем, добрый день! Подскажите в чём проблема в коде, написанном на Си в MPLab. Компилятор XC8 1.34 (крякнутый). Может ли это быть связано с тем, что MPLab не куплена и что такая херь только в платной версии работать будет?

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

[color=#008000]
/*
 * File:   pwm.c
 * Author: dexart12
 *
 * Created on 14 march 2018 y., 9:08
 */

#include <xc.h>
#define _XTAL_FREQ 20000000
#define TMR1PRESCALE 8
#define OUT RC2

// CONFIG
#pragma config FOSC = HS       
#pragma config WDTE = OFF    
#pragma config PWRTE = OFF   
#pragma config BOREN = ON      
#pragma config LVP = OFF     
#pragma config CPD = OFF     
#pragma config WRT = OFF       
#pragma config CP = OFF        

unsigned long CCPR = 0;
const unsigned long total = 12500;
unsigned long current = 0.5 * total;


// прерывание 

void interrupt tmr1isr() {
if (CCP1IF == 1) {
	if (OUT == 1) {
		OUT = 0;
		CCPR = total - current;
	}
	else {
		OUT = 1;
		CCPR = current;
	}
	
// ставим значение ССРR в ССР модули регистров

	CCPR1H = CCPR >> 8;
	CCPR1L = CCPR;
	CCP1IF = 0;
	}

}


//главная функция

void main() { 

	TRISC = 0; //выходы порта С выходы
	PORTC = 0; // порты С низкий уровень
	
	T1CON = 0b00110000; // Выключен таймер 1 и установлен прскалер 8
	TMR1H = 0; //очищаем регистры
	TMR1L = 0; // очищаем регистры
	
	CCP1CON = 0x0b; //установка ССР модуля сравнение
	CCPR = 0; // установка нуля
	CCP1IF = 0; // очистим флаг прерываний 
	CCP1IE = 1; // разрешим прерывание ССР1
	INTCON = 0xC0; // разрешение глобальных и переферийных прерваний
	T1CON = 0b00110001; // запуск таймера 1
	
	while(1) {
	
	current = total * 0.5;// 50% цикл
	__delay_ms(5000); // задержка 5 сек
	current = total * 0.1; // 10% цикл
	__delay_ms(5000); // задержка 5 сек
		
			}
	
	}
	
	
[/color]
Вложения
pwm.jpg
Выдает такие ошибки
(121.2 КБ) 421 скачивание
Реклама
Vano79
Открыл глаза
Сообщения: 60
Зарегистрирован: Пт янв 11, 2013 10:54:43

Re: ШИМ на P I C 1 6 F 8 7 6 A

Сообщение Vano79 »

MPLab бесплатный продукт. На вскидку привести все типы переменных в соответствие.
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: ШИМ на PIC16F876A

Сообщение pyzhman »

Дело не в молотке, дело в руках.
Docendo discimus
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: ШИМ на PIC16F876A

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

[uquote="pyzhman",url="/forum/viewtopic.php?p=3330587#p3330587"]дело в руках.[/uquote]В крякнутых ...
Реклама
Эиком - электронные компоненты и радиодетали
Vano79
Открыл глаза
Сообщения: 60
Зарегистрирован: Пт янв 11, 2013 10:54:43

Re: ШИМ на PIC16F876A

Сообщение Vano79 »

XC8 1.38 и такое ..овно ест, хоть и предупреждениями.
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: ШИМ на PIC16F876A

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

"Нечего на зеркало пенять, коли рожей не вышел" (c)

А вот так :

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

const unsigned long total = 12500;
unsigned long current = 0.5 * total;

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

current = total * 0.5;
current = total * 0.1;
пишут только говнокодеры-ардуинщики :facepalm:
Реклама
Ответить

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