-
Постов
235 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Сообщения, опубликованные Bugrim
-
-
ANSEL=0. Но только в даташите, не сказано что данный регистр влияет на работу порта В.
0 -
Добрый день.
Прошу помоши. Упорно не хочет читать единицу RB0. МК - PIC16F886. Для моделирования использую MPLABX+Proteus 8.4, язык ХС8 v1.33.
#include <xc.h> /*#include "I2Cmay.h" #include "LCD.h" #include "Monitor.h" #include "main.h"*/ #define _XTAL_FREQ (8000000) #include <stdio.h> #include <stdlib.h> // CONFIG1 #pragma config FOSC = EXTRC_CLKOUT// Oscillator Selection bits (RC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, RC on RA7/OSC1/CLKIN) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = OFF // RE3/MCLR pin function select bit (RE3/MCLR pin function is digital input, MCLR internally tied to VDD) #pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled) #pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled) #pragma config BOREN = OFF // Brown Out Reset Selection bits (BOR disabled) #pragma config IESO = OFF // Internal External Switchover bit (Internal/External Switchover mode is disabled) #pragma config FCMEN = ON // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is enabled) #pragma config LVP = OFF // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming) // CONFIG2 #pragma config BOR4V = BOR40V // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V) #pragma config WRT = OFF // Flash Program Memory Self Write Enable bits (Write protection off) void main(void) { unsigned int temp; //nastroyka (); TRISB=0b00000001; while(1){ if (RB0==0){ RB1=1; RB1=0; } NOP(); } }
Внешнея подтяжка к 5В, однако постоянно заходит на строки в условии. Состояние регистров ANSELH=0, CCP1CON=0, CM2CON1=2, IOCB=0, INTCON=1, TRISB=1. В чем проблема не понимаю, грешил на протеус, переустановил с 8.1 на 8.4 - не помогло.
Чего я не так делаю?0 -
То есть устанавливать не бит а записывать порт. Тогда:
//при записи единицы PORTB|=mask[kanal]; //при записи нуля PORTB&=~mask[kanal];
При таком подходе маска не нужна, необходимо канал задавать правильно (1,2,4).
//при записи единицы PORTB|=kanal; //при записи нуля PORTB&=~kanal;
Вроде бы просто, а не догнал.
Спасибо.
0 -
Доброго времени суток.
Использую XC8 v1.3
Есть задача общаться программно по 1wire в PIC. Для этого выделено 3 вывода (RB0, RB1, RB2). На каждом весит свой датчик. Для работы с каждым выводом будут использоваться одинаковые функции (например:
void wire_vivod_byte(char data, char kanal)
). Как можно в теле функции обратиться к RB0, RB1 или RB2 в зависимости от переменной kanal. Через if (kanal==0)..., или swith (kanal)..., я реализовать могу, а вот хочется что бы переменная kanal выступала в роли смещения.
0 -
А в критической ситуации защитный диод не спасет? Да и многие схемы без них, как инет показывает.
0 -
Вымыл тщательно. При сборке подгоняли, поэтому забыл допаять конденсаторы в снабберной цепи (потом вспомнил), так и висят на одной ноге (выпаивал для проверки). Работает 3 день без нареканий. По пыли таки, вероятней всего, утечка была.
0 -
13 часа назад, oleg1ma сказал:
собственная емкость трансформатора
А в каких пределах? У моего между обмотками ёмкость 0.5нФ.
0 -
Трансформатор выходной прозвонил мегером, нормально.
2 часа назад, KRAB сказал:причина - утечка
Буду вымывать.
0 -
Инвертор применяется на производстве, производили наплавку детали (не заземленная) все в порядке, как только бросели "-" на лестнецу в здании - инвертор вышел со строя. По предприятию применяется трёх фазгая цепь с глухо заземленной нейтралью. Да и другой инвертор в этих условиях варит же.
0 -
Снабберные цепи живые ( 14 Ом, 4.7 нФ). От "-" клеммы отходит тонкий провод в цепь обратной связи с оптронами. В этой цепи (все smd элементы) резисторы все живые, оптроны звонятся как диод, претензий нет. Конденсаторы в плате емкость померять не смог, но короткого нет.
0 -
Спасибо за советы, завтра, если будет время, поэксперементирую. "Пациент" на работе.
0 -
Вторичку отсоеденить и закоротить, первичку закоротить в плате перемычкой, звонить между обмотками и вторичку на корпус мегером.
Велика вероятность окончательного выхода из строя инвертора?
0 -
Уточнения:
при подсоединении "-" к заземленной заготовке проскакивает искра, выходит из строя защитный диод, выбивает сетевой автомат.
Это может быть из за снаберной цепи? Я полагал что выходная цепь гальванически развязана от сети и искра между заземлением и "-" никак не модет быть, а на завтра решил мегером звонить, начиная с выходного трансформатора.
0 -
при повторной поломке не проверял, при первой - резисторы живые, емкость не звонится (емкость не мерял).
0 -
визуально - треснут корпус, мультиметром - закорочен. Второй, мультиметром - в обрыве, надеюсь живой.
0 -
Доброго времени суток форумчане.
Наблюдается следующая неисправность: при подсоединении "-" к заготовке, которая заземлена, выходит из строя защитный диод (напряжение открытия 180В), в то время если варить изделие, которое не заземлено, то проблем не возникает. Первичная и вторичная обмотка выходного трансформатора тестером не звонится, на корпус тоже. Подскажите где может скрываться проблема.
0 -
55 минут назад, IMXO сказал:
когда метка стояла на команде которую удалили
именно это "неудобство".
0 -
точку останова убрал, а программа все равно там останавливается, приходится регулярно Resetом, который в Debug пользоваться. Протеус 8.1.
Ну ничего прорвемся.
0 -
На глаз код выглядит по другому, точки останова (которые криво работают, по крайней мере на моей версии протеуса), просмотр/задание значений переменных и т.д. в MPLABе мне более по душе. Можно и
15 минут назад, IMXO сказал:нажать запуск симуляции в протезе????
Поэтому всего лишь "неудобств", а не проблем.
0 -
Для железа программа СИЛЬНО сырая.
0 -
Доброго времени суток!
Помогите, вероятно что то с настройками, при отладке в MPLABX, XC8, в Proteuse PIC16F886 не хочет воспринимать данные EEPROM, определенные в программе через процедуру __EEPROM_DATA(). При этом, из среды MPLABX, в окошке EEPROM, данные изменены, в Proteuse, данные EEPROM, все равны FF. Если запустить Proteus отдельно, то данные EEPROM отображаются корректно, т.е. записанные через __EEPROM_DATA(). Для моделирования использую COF файл. Это доставляет ряд неудобств, хотелось бы непосредственно из MPLABX полноценно отлаживать программу.
За ранее спасибо.
0 -
Не знаю, протеус или что то не так настраивал, но задействовал CCP1 вместо CCP2 и моделируется все нормально. Всем спасибо.
0 -
Доброго времени суток ув. форумчане. Прошу помощи по работе модуля CCP в режиме захвата. Ситуация следующая: после генерирования первого события (передний фронт внешнего сигнала) CCP2, программа переходит на обработку прерывания (строка №245), где сбрасывается флаг прерывания, далее независимо от внешнего сигнала (останься он в 1 или перейдет в 0) периодически, через разные промежутки времени, возникает прерывание CCP2, хотя передний фронт на вход CCP2 не приходил. Откуда берется прерывание?
0 -
Если ставлю в цепь коллектора светодиод (вместо индикатора), то он светит? И не моргает?
0
Начинающим с нуля (PIC)
в PIC
Опубликовано
ANSELH=0, я это указывал.