Jump to content

Bugrim

Members
  • Content Count

    217
  • Joined

  • Last visited

Everything posted by Bugrim

  1. Не раз накалываюсь. Присваивается не правильное значение, однако программа отрабатывает правильно. Вероятней всего для данного камня это не имеет значения. Использую PIC16F886, компилятор XC8, v1.33.
  2. Объявлены массивы: unsigned char dekady[4][10],dekadyBCD[4][10]; Начальный адрес первого 0х110, второго 0х190. Функция void inc_chass(char *chas_dec,char *chas_bcd); Тогда вызов функции inc_chass(&dekady[1][0],&dekadyBCD[1][0]); должен передать указателю chas_dec значение 0х11А, а указателю chas_bcd значение 0х19А. Однако при прогоне в протеусе указателю chas_dec присваивается значение 0x0F1A, почему мне не понятно. Указателю chas_bcd присваивается правильное значение 0х19А.
  3. Да так и есть - предупреждение "illegal conversion between pointer types". Однако переписав вызов функции: inc_chass(&(dekady[1][0]),&(dekadyBCD[1][0])); //увеличить час приводит не совсем к нужному результату: chas_dec=0x0F1A, должен быть 0х11А, chas_bcd=0х19А, что есть правильно. Я знаю, однако, в дальнейшем, необходимо будет передавать указатель на разные области массива.
  4. Опять затупил. Помогите разобраться. Объявлены массивы: unsigned char dekady[4][10],dekadyBCD[4][10]; Начальный адрес первого 0х110, второго 0х190. Есть функция void inc_chass(unsigned char *chas_dec,unsigned char *chas_bcd){ if (++(*chas_dec)==24) *chas_dec=0; *chas_bcd=bin_to_bcd(*chas_dec); *(chas_bcd+1)=*chas_bcd&0x0f; *chas_bcd=(*chas_bcd>>4)&0x0f; } Ее прототип: void inc_chass(char *chas_dec,char *chas_bcd); Вызов функции: inc_chass(dekady,dekadyBCD[1][0]); //увеличить час Но в функцию передаются не те данные, которые хочу, т.е. не адрес начала массива "dekady" (0х110) и не адрес "dekadyBCD[1][0]" (0х19А), а вот что: Где не прав, подскажите. Может это длина адреса виновата, которая в char не помещается?
  5. Проверит на самой стабильной версии - работает. Теперь стабильный протеус найти надо.
  6. Может все таки протеус глючит? Подскажите стабильную версию.
  7. ANSEL=0. Но только в даташите, не сказано что данный регистр влияет на работу порта В.
  8. Добрый день. Прошу помоши. Упорно не хочет читать единицу 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 - не помогло. Чего я не так делаю?
  9. То есть устанавливать не бит а записывать порт. Тогда: //при записи единицы PORTB|=mask[kanal]; //при записи нуля PORTB&=~mask[kanal]; При таком подходе маска не нужна, необходимо канал задавать правильно (1,2,4). //при записи единицы PORTB|=kanal; //при записи нуля PORTB&=~kanal; Вроде бы просто, а не догнал. Спасибо.
  10. Доброго времени суток. Использую 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 выступала в роли смещения.
  11. А в критической ситуации защитный диод не спасет? Да и многие схемы без них, как инет показывает.
  12. Вымыл тщательно. При сборке подгоняли, поэтому забыл допаять конденсаторы в снабберной цепи (потом вспомнил), так и висят на одной ноге (выпаивал для проверки). Работает 3 день без нареканий. По пыли таки, вероятней всего, утечка была.
  13. Трансформатор выходной прозвонил мегером, нормально. Буду вымывать.
  14. Инвертор применяется на производстве, производили наплавку детали (не заземленная) все в порядке, как только бросели "-" на лестнецу в здании - инвертор вышел со строя. По предприятию применяется трёх фазгая цепь с глухо заземленной нейтралью. Да и другой инвертор в этих условиях варит же.
  15. Снабберные цепи живые ( 14 Ом, 4.7 нФ). От "-" клеммы отходит тонкий провод в цепь обратной связи с оптронами. В этой цепи (все smd элементы) резисторы все живые, оптроны звонятся как диод, претензий нет. Конденсаторы в плате емкость померять не смог, но короткого нет.
  16. Спасибо за советы, завтра, если будет время, поэксперементирую. "Пациент" на работе.
  17. Вторичку отсоеденить и закоротить, первичку закоротить в плате перемычкой, звонить между обмотками и вторичку на корпус мегером. Велика вероятность окончательного выхода из строя инвертора?
  18. Уточнения: при подсоединении "-" к заземленной заготовке проскакивает искра, выходит из строя защитный диод, выбивает сетевой автомат. Это может быть из за снаберной цепи? Я полагал что выходная цепь гальванически развязана от сети и искра между заземлением и "-" никак не модет быть, а на завтра решил мегером звонить, начиная с выходного трансформатора.
  19. при повторной поломке не проверял, при первой - резисторы живые, емкость не звонится (емкость не мерял).
  20. визуально - треснут корпус, мультиметром - закорочен. Второй, мультиметром - в обрыве, надеюсь живой.
  21. Доброго времени суток форумчане. Наблюдается следующая неисправность: при подсоединении "-" к заготовке, которая заземлена, выходит из строя защитный диод (напряжение открытия 180В), в то время если варить изделие, которое не заземлено, то проблем не возникает. Первичная и вторичная обмотка выходного трансформатора тестером не звонится, на корпус тоже. Подскажите где может скрываться проблема.
  22. именно это "неудобство".
×
×
  • Create New...