Перейти к содержанию

Помогите стартонуть с Pic на Си


LiSiY5

Рекомендуемые сообщения

Ребята помогите, Я начинаю изучение Pic и не могу создать первую прогу. Сам программирую на LD, FBD, ASM, но тут не могу стартонуть, с выходами все получается, а вот с входами проблемка. Есть код на Си, подскажите в чем ошибка. Буду очень благодарен любой информации.


// PIC16F18877 Configuration Bit Settings

// 'C' source line config statements

// CONFIG1
#pragma config FEXTOSC = HS     // External Oscillator mode selection bits (HS (crystal oscillator) above 4MHz; PFM set to high power)
#pragma config RSTOSC = EXT1X   // Power-up default value for COSC bits (EXTOSC operating per FEXTOSC bits)
#pragma config CLKOUTEN = OFF   // Clock Out Enable bit (CLKOUT function is disabled; i/o or oscillator function on OSC2)
#pragma config CSWEN = ON       // Clock Switch Enable bit (Writing to NOSC and NDIV is allowed)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable bit (FSCM timer enabled)

// CONFIG2
#pragma config MCLRE = ON       // Master Clear Enable bit (MCLR pin is Master Clear function)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config LPBOREN = OFF    // Low-Power BOR enable bit (ULPBOR disabled)
#pragma config BOREN = ON       // Brown-out reset enable bits (Brown-out Reset Enabled, SBOREN bit is ignored)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (VBOR) set to 1.9V on LF, and 2.45V on F Devices)
#pragma config ZCD = OFF        // Zero-cross detect disable (Zero-cross detect circuit is disabled at POR.)
#pragma config PPS1WAY = ON     // Peripheral Pin Select one-way control (The PPSLOCK bit can be cleared and set only once in software)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or Underflow will cause a reset)

// CONFIG3
#pragma config WDTCPS = WDTCPS_31// WDT Period Select bits (Divider ratio 1:65536; software control of WDTPS)
#pragma config WDTE = ON        // WDT operating mode (WDT enabled regardless of sleep; SWDTEN ignored)
#pragma config WDTCWS = WDTCWS_7// WDT Window Select bits (window always open (100%); software control; keyed access not required)
#pragma config WDTCCS = SC      // WDT input clock selector (Software Control)

// CONFIG4
#pragma config WRT = OFF        // UserNVM self-write protection bits (Write protection off)
#pragma config SCANE = available// Scanner Enable bit (Scanner module is available for use)
#pragma config LVP = ON         // Low Voltage Programming Enable bit (Low Voltage programming enabled. MCLR/Vpp pin function is MCLR.)

// CONFIG5
#pragma config CP = OFF         // UserNVM Program memory code protection bit (Program Memory code protection disabled)
#pragma config CPD = OFF        // DataNVM code protection bit (Data EEPROM code protection disabled)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>
#define _XTAL_FREQ 20000000


void main(void) {
    TRISB=0;
    PORTB=0;
    TRISA=11111111;
    PORTA=11111111;
    TRISA=11111111;
    if(PORTAbits.RA0 == 1) { RB0 = 1;}

    return;
}
 

Ссылка на комментарий
Поделиться на другие сайты

я дико извиняюсь , а вы вкуда по return выйти пытаетесь?.

первый раз вижу чтобы стартовали с F18877 .... у мня даже компилятор о нем не знает :)

а так любой код на Си

выглядит

void main(void)
{
  // секция инициализации МК
  // ....
  // ....
while(1)
{
  // здесь основной код
  // в бесконечном цикле
} // end while(1)
}// end main

if(PORTAbits.RA0 == 1) { RB0 = 1;}  записывается как

if(PORTbits.RA0) { LATBbits.LATB0=1;}

PS выкладывая код пользуйтесь тегами КОД:  <> на панели сообщений

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Увы не получается, может у кого то есть код на данный контроллер на Си или ассемблере с конфигурационными байтами. Первый код хочу по входу А0 включается выход В0.

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

3 часа назад, LiSiY5 сказал:

Увы не получается.

Что конкретно не получается? Если речь идет о первоначальном коде, то там написана ахинея. Вам сказали выше, что проверку нужно делать В БЕСКОНЕЧНОМ ЦИКЛЕ. Вы зачем то вставили return... Вы знаете что такое return в Си?

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

5 часов назад, LiSiY5 сказал:

может у кого то есть код на данный контроллер на Си или ассемблере с конфигурационными байтами.

и что это Вам даст? конфигирация пишется под обвязку МК и применяемый программатор , в соответствии с описанием компилятора

можно конечно попробовать помочь , от Вас  html на МК с описанием битов конфигурации из папки доков компилятора, инклюд , схема обвязки МК , и модель программатора и метод програмирования.

Ссылка на комментарий
Поделиться на другие сайты

28.08.2020 в 18:49, IMXO сказал:

и что это Вам даст? конфигирация пишется под обвязку МК и применяемый программатор , в соответствии с описанием компилятора

можно конечно попробовать помочь , от Вас  html на МК с описанием битов конфигурации из папки доков компилятора, инклюд , схема обвязки МК , и модель программатора и метод програмирования.

Спрыгиваю на более простой МК PIC16F877A, использую програматор РicKit3, компилятор ХС8, программа MPLAB X IDE, биты конфигурации:

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF       // Watchdog Timer (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (Power-up Timer is enabled)
#pragma config CP = OFF 

 

Хочу программу, при RA0==1 включается RB0=1.

Подскажите пожалуйста.

Изменено пользователем LiSiY5
Ссылка на комментарий
Поделиться на другие сайты

Скрытый текст

#include <xc.h>	// Required to interface with delay routines

// __CONFIG(LVPDIS & WDTEN & PWRTEN & BORDIS & HS);

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF       // Watchdog Timer (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (Power-up Timer is enabled)
#pragma config CP = OFF  
#pragma config LVP = OFF
#pragma config BOREN = ON

//*******************************************************************
void init(void)
{
 INTCON = 0; 
 PIE1 = 0;
 ADCON1 = 0b00000111; // Цифровые выводы
 TRISA = 0b11111111; //входы
 TRISB = 0; // выходы
 TRISC = 0b11111111;
 TRISD = 0;
 PORTA = 0; 
 PORTB = 0; 
 PORTC = 0;
 PORTD = 0;
 OPTION = 0b00000000; 

}
//**********************************************************

//***************************************************************
void main (void)
{
init();
while(1)
    { 
      if(PORTAbits.RA0) 
	     { PORTBbits.RB0=1;} 
	   else 
	     { PORTBbits.RB0=0;} 
// можно еще так записать
      	PORTBbits.RB0= PORTAbits.RA0;
	} // end while(1)

}

 

 

Ссылка на комментарий
Поделиться на другие сайты

Задачка стала по-сложнее, надо организовать АЦП преобразователь, кто то работал? Подскажите, а то с Google не могу договориться. Исходные конфигурационные данные и обвязку прилагаю(работа: по изменению потенциала на AN0 меняются выходы RB0-RB7). Всем спасибо за помощь.


// PIC16F877A Configuration Bit Settings

// 'C' source line config statements

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = ON        // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = ON         // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>

#define _XTAL_FREQ 20000000

 

ADC.PDF

Изменено пользователем LiSiY5
Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, LiSiY5 сказал:

работа: по изменению потенциала на AN0 меняются выходы RB0-RB7

шикарное описание... Вы точно программист?

Скрытый текст

void init_ADC_AN0 (void)
{
	TRISA |= (1<<0); // RA0 = input;
	ADCON1 0b10001110; // RA0(AN0) = analog input;
	ADCON0 = 0b11000001; // Fadc=Fosc/32; AN0; ADC=ON;    	
}

unsigned int ReadADC_AN0(void)
{ static unsigned char s_ucCount;
  static unsigned int  m_TempResalt[32];
  static unsigned int  s_uiSymm;
  
  s_ucCount++;
  s_ucCount&=0b00011111;
  s_uiSymm -= m_TempResalt[s_ucCount];
  __delay_us(20);  
  ADCON0bits.GO_DONE=1;
  while(ADCON0bits.GO_DONE) continue;
  __delay_us(5); 
  m_TempResalt[s_ucCount] = ADRESH;
  m_TempResalt[s_ucCount]<<=8;
  m_TempResalt[s_ucCount]+= ADRESL;
  s_uiSymm += m_TempResalt[s_ucCount];
  return s_uiSymm/32;	
}

 

 

Ссылка на комментарий
Поделиться на другие сайты

Разрешите объяснить, Я хочу полный код под мои конфигурационные биты на Pic16f877a. Мне необходимо получить переменную, назовем ADC, которая меняет значение от 0 до 1023, при изменении напряжения на входе AN0 от 0В до 5В. Далее сравнивая переменную с задаными const постараюсь получить на выходе то что задумано. Не судите строго, после перенесенного менингита сложно все вспоминаеться...

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...