Добрый день! пытаюсь написать код в ССS для PIC16F873A для управления сервомоторами и LCD.
Помогите с прошивкой!
помогите с прошивкой для PIC16F873A
- Реклама
Re: помогите с прошивкой для PIC16F873A
подскажите что необходимо написать в начале кода для PIC16F84 и PIC16F873А
есть вот такой код для серводвигателя:
unsigned short MotorA_Speed = 127; // Ширина импульса ШИМ по умолчанию 50%
unsigned short MotorB_Speed = 127; // для обоих двигателей
// Переменные для работы с двигателями
unsigned short MotorA_Status = 0; // 0 - Выключен, 1 - Вперед, 2 - Назад
unsigned short MotorB_Status = 0;
unsigned short MotorA_CurrentSpeed = 255;
unsigned short MotorB_CurrentSpeed = 255;
unsigned short MotorInitStatus = 0; // Статус функции инициализации
const unsigned long PWMFreq = 5000;// Частота ШИМ
// Подключение моторов:
// *** Motor A *****
// RD0 ====> 1A
// RD1 ====> 1B
// RC2 ====> 1E (PWM1)
// *** Motor B *****
// RB1 ====> 2A
// RB2 ====> 2B
// RC1 ====> 2E (PWM2)
// Инициализация модулей ШИМ и двигателей
void MotorInit (void){
if (MotorInitStatus == 0) { // Это первый вызов функции?
MotorInitStatus = 1; // Установка состояния
ANSELH.F0 = 0; // RB1 - цифровой вход/выход
ANSELH.F2 = 0; // RB2 - цифровой вход/выход
TRISB.RB1 = 0; // Motor B 2A
TRISB.RB2 = 0; // Motor B 2B
TRISD.RD0 = 0; // Motor A 1A
TRISD.RD1 = 0; // Motor A 1B
PWM1_Init(PWMFreq); // Инициализация модулей ШИМ
PWM2_Init(PWMFreq);
}
}
есть вот такой код для серводвигателя:
unsigned short MotorA_Speed = 127; // Ширина импульса ШИМ по умолчанию 50%
unsigned short MotorB_Speed = 127; // для обоих двигателей
// Переменные для работы с двигателями
unsigned short MotorA_Status = 0; // 0 - Выключен, 1 - Вперед, 2 - Назад
unsigned short MotorB_Status = 0;
unsigned short MotorA_CurrentSpeed = 255;
unsigned short MotorB_CurrentSpeed = 255;
unsigned short MotorInitStatus = 0; // Статус функции инициализации
const unsigned long PWMFreq = 5000;// Частота ШИМ
// Подключение моторов:
// *** Motor A *****
// RD0 ====> 1A
// RD1 ====> 1B
// RC2 ====> 1E (PWM1)
// *** Motor B *****
// RB1 ====> 2A
// RB2 ====> 2B
// RC1 ====> 2E (PWM2)
// Инициализация модулей ШИМ и двигателей
void MotorInit (void){
if (MotorInitStatus == 0) { // Это первый вызов функции?
MotorInitStatus = 1; // Установка состояния
ANSELH.F0 = 0; // RB1 - цифровой вход/выход
ANSELH.F2 = 0; // RB2 - цифровой вход/выход
TRISB.RB1 = 0; // Motor B 2A
TRISB.RB2 = 0; // Motor B 2B
TRISD.RD0 = 0; // Motor A 1A
TRISD.RD1 = 0; // Motor A 1B
PWM1_Init(PWMFreq); // Инициализация модулей ШИМ
PWM2_Init(PWMFreq);
}
}
Re: помогите с прошивкой для PIC16F873A
#include <16F877.h>
#use delay (clock = 4M)
void main() {
unsigned short MotorA_Speed = 127; // Ширина импульса ШИМ по умолчанию 50%
unsigned short MotorB_Speed = 127; // для обоих двигателей
// Переменные для работы с двигателями
unsigned short MotorA_Status = 0; // 0 - Выключен, 1 - Вперед, 2 - Назад
unsigned short MotorB_Status = 0;
unsigned short MotorA_CurrentSpeed = 255;
unsigned short MotorB_CurrentSpeed = 255;
unsigned short MotorInitStatus = 0; // Статус функции инициализации
const unsigned long PWMFreq = 5000;// Частота ШИМ
// Подключение моторов:
// *** Motor A *****
// RD0 ====> 1A
// RD1 ====> 1B
// RC2 ====> 1E (PWM1)
// *** Motor B *****
// RB1 ====> 2A
// RB2 ====> 2B
// RC1 ====> 2E (PWM2)
// Инициализация модулей ШИМ и двигателей
void MotorInit (void){
if (MotorInitStatus == 0) { // Это первый вызов функции?
MotorInitStatus = 1; // Установка состояния
ANSELH.F0 = 0; // RB1 - цифровой вход/выход
ANSELH.F2 = 0; // RB2 - цифровой вход/выход
TRISB.RB1 = 0; // Motor B 2A
TRISB.RB2 = 0; // Motor B 2B
TRISD.RD0 = 0; // Motor A 1A
TRISD.RD1 = 0; // Motor A 1B
PWM1_Init(PWMFreq); // Инициализация модулей ШИМ
PWM2_Init(PWMFreq);
}
}
}
при компилировании ССS пишет ошибка линии:
if (MotorInitStatus == 0) { // Это первый вызов функции?
MotorInitStatus = 1; // Установка состояния
ANSELH.F0 = 0;
ANSELH.F2 = 0; // RB2 - цифровой вход/выход
TRISB.RB1 = 0; // Motor B 2A
TRISB.RB2 = 0; // Motor B 2B
TRISD.RD0 = 0; // Motor A 1A
TRISD.RD1 = 0; // Motor A 1B
PWM1_Init(PWMFreq); // Инициализация модулей ШИМ
PWM2
что не так?
#use delay (clock = 4M)
void main() {
unsigned short MotorA_Speed = 127; // Ширина импульса ШИМ по умолчанию 50%
unsigned short MotorB_Speed = 127; // для обоих двигателей
// Переменные для работы с двигателями
unsigned short MotorA_Status = 0; // 0 - Выключен, 1 - Вперед, 2 - Назад
unsigned short MotorB_Status = 0;
unsigned short MotorA_CurrentSpeed = 255;
unsigned short MotorB_CurrentSpeed = 255;
unsigned short MotorInitStatus = 0; // Статус функции инициализации
const unsigned long PWMFreq = 5000;// Частота ШИМ
// Подключение моторов:
// *** Motor A *****
// RD0 ====> 1A
// RD1 ====> 1B
// RC2 ====> 1E (PWM1)
// *** Motor B *****
// RB1 ====> 2A
// RB2 ====> 2B
// RC1 ====> 2E (PWM2)
// Инициализация модулей ШИМ и двигателей
void MotorInit (void){
if (MotorInitStatus == 0) { // Это первый вызов функции?
MotorInitStatus = 1; // Установка состояния
ANSELH.F0 = 0; // RB1 - цифровой вход/выход
ANSELH.F2 = 0; // RB2 - цифровой вход/выход
TRISB.RB1 = 0; // Motor B 2A
TRISB.RB2 = 0; // Motor B 2B
TRISD.RD0 = 0; // Motor A 1A
TRISD.RD1 = 0; // Motor A 1B
PWM1_Init(PWMFreq); // Инициализация модулей ШИМ
PWM2_Init(PWMFreq);
}
}
}
при компилировании ССS пишет ошибка линии:
if (MotorInitStatus == 0) { // Это первый вызов функции?
MotorInitStatus = 1; // Установка состояния
ANSELH.F0 = 0;
ANSELH.F2 = 0; // RB2 - цифровой вход/выход
TRISB.RB1 = 0; // Motor B 2A
TRISB.RB2 = 0; // Motor B 2B
TRISD.RD0 = 0; // Motor A 1A
TRISD.RD1 = 0; // Motor A 1B
PWM1_Init(PWMFreq); // Инициализация модулей ШИМ
PWM2
что не так?
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: помогите с прошивкой для PIC16F873A
Экстрасенсы в отпуске.
- Реклама

