Jump to content
vv7

Pic18F452 Не Работает Мигание Светодиодом.

Recommended Posts

Всем привет !

Да, вот так вот. Опять светодиод и опять не запускается.

В чём косяк ?

Питание - от автозарядки для мобилки ( 12В -> 5В ).

Среда разработки ( IDE ): MPLAB X v3.35 Linux, компилятор C18.

Программатор: PICKit3

Прошивка, по-моему - нормальная.

Сконфигурирован - нормально. ( Или нет ? )

Элементы все рабочие.

В наличие есть кварц: 4, 8, 10 МГц.

Фотка со схемкой - в атаче.

Осциллографа под рукой - нет :(.

Исходник прошивки:

#include "config_bits.h"
#include <stdio.h>
#include <stdlib.h>
void main (void) {

   int i = 0;
   TRISA = 0x00;
   PORTA = 0x00;
   TRISB = 0x00;
   PORTB = 0xFF;
   TRISC = 0x00;
   PORTC = 0x00;
   TRISD = 0x00;
   PORTD = 0x00;
   TRISE = 0x00;
   PORTE = 0x00;
   while (1) {
    for ( i = 0; i < 1000000; i++) {
	    PORTB = !PORTB;
    }
   }
}

Файл "config_bits.h":

// PIC18F452 Configuration Bit Settings
// 'C' source line config statements
#include <p18f452.h>
// CONFIG1H
#pragma config OSC = HS		 // Oscillator Selection bits (HS oscillator)
#pragma config OSCS = OFF	   // Oscillator System Clock Switch Enable bit (Oscillator system clock switch option is disabled (main oscillator is source))
// CONFIG2L
#pragma config PWRT = OFF	   // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOR = ON		 // Brown-out Reset Enable bit (Brown-out Reset enabled)
#pragma config BORV = 20	    // Brown-out Reset Voltage bits (VBOR set to 2.0V)
// CONFIG2H
#pragma config WDT = OFF	    // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
#pragma config WDTPS = 128	  // Watchdog Timer Postscale Select bits (1:128)
// CONFIG3H
#pragma config CCP2MUX = ON	 // CCP2 Mux bit (CCP2 input/output is multiplexed with RC1)
// CONFIG4L
#pragma config STVR = ON	    // Stack Full/Underflow Reset Enable bit (Stack Full/Underflow will cause RESET)
#pragma config LVP = OFF	    // Low Voltage ICSP Enable bit (Low Voltage ICSP disabled)
// CONFIG5L
#pragma config CP0 = OFF	    // Code Protection bit (Block 0 (000200-001FFFh) not code protected)
#pragma config CP1 = OFF	    // Code Protection bit (Block 1 (002000-003FFFh) not code protected)
#pragma config CP2 = OFF	    // Code Protection bit (Block 2 (004000-005FFFh) not code protected)
#pragma config CP3 = OFF	    // Code Protection bit (Block 3 (006000-007FFFh) not code protected)
// CONFIG5H
#pragma config CPB = OFF	    // Boot Block Code Protection bit (Boot Block (000000-0001FFh) not code protected)
#pragma config CPD = OFF	    // Data EEPROM Code Protection bit (Data EEPROM not code protected)
// CONFIG6L
#pragma config WRT0 = OFF	   // Write Protection bit (Block 0 (000200-001FFFh) not write protected)
#pragma config WRT1 = OFF	   // Write Protection bit (Block 1 (002000-003FFFh) not write protected)
#pragma config WRT2 = OFF	   // Write Protection bit (Block 2 (004000-005FFFh) not write protected)
#pragma config WRT3 = OFF	   // Write Protection bit (Block 3 (006000-007FFFh) not write protected)
// CONFIG6H
#pragma config WRTC = OFF	   // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write protected)
#pragma config WRTB = OFF	   // Boot Block Write Protection bit (Boot Block (000000-0001FFh) not write protected)
#pragma config WRTD = OFF	   // Data EEPROM Write Protection bit (Data EEPROM not write protected)
// CONFIG7L
#pragma config EBTR0 = OFF	  // Table Read Protection bit (Block 0 (000200-001FFFh) not protected from Table Reads executed in other blocks)
#pragma config EBTR1 = OFF	  // Table Read Protection bit (Block 1 (002000-003FFFh) not protected from Table Reads executed in other blocks)
#pragma config EBTR2 = OFF	  // Table Read Protection bit (Block 2 (004000-005FFFh) not protected from Table Reads executed in other blocks)
#pragma config EBTR3 = OFF	  // Table Read Protection bit (Block 3 (006000-007FFFh) not protected from Table Reads executed in other blocks)
// CONFIG7H
#pragma config EBTRB = OFF	  // Boot Block Table Read Protection bit (Boot Block (000000-0001FFh) not protected from Table Reads executed in other blocks)

Проблема: Он то ли не запускается, то ли ещё что-то. Светодиод на 30 ножке ( PORTBbits.RB0 ( B0 ) ) просто горит. А ведь в программе я прописал, чтоб весь блок B периодически переключался на противоположенное значение, но этого не происходит. Менял значения цикла от 1000000 до 10 - 0 по цельсию.

Вопрос, что может быть. Может минус плохой и на монтажных схемках такого рода ( как на фотке ) собирать схемы на МК - плохая идея ? Аля нужно паять ?!

Спасибо !!!

post-195350-0-36989300-1467795631_thumb.jpg

post-195350-0-51352400-1467795655_thumb.jpg

post-195350-0-05750600-1467795674_thumb.jpg

Share this post


Link to post
Share on other sites

    while (1) {
		    for ( i = 0; i < 1000000; i++) {
				    PORTB = !PORTB;
		    }
    }

Может так :

    while (1) {
		    for ( i = 0; i < 1000000; i++) continue;
		    PORTB = !PORTB;
    }

:)

Share this post


Link to post
Share on other sites

Ну, во-первых, светодиод стоит на 28 ноге, RD5

Во-вторый, знак "!" - это логическая инверсия: даёт результат 1 или 0, а не полный байт для всех ног.

Для инверсии всех битов надо использовать PORTB = ~PORTB.

Edited by Yurkin2015

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

Спасибо вам, но всё также. Просто горит ... :help: :help: :help:

На 28 ? :unknw:

Share this post


Link to post
Share on other sites

w7, ты на ассемблере пробовал выполнить эту задачу? Смотрел, какие команды фактически прошиваются в память программ? Или сразу на высокий уровень залез?

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

Сразу писал в C. Я как-то давно знаком с C, вот и взялся. Просто ... щяс вот пытаюсь разобраться как с ним писать под мк. Вот только как-то всё так, а не пашет :D Щяс в Proteus проверю, просто только скачал WinXP для VM для этой задачки, ибо он на лине - не пашет :D

Edited by vv7

Share this post


Link to post
Share on other sites

Код покажите, который сейчас не пашет.

Share this post


Link to post
Share on other sites

Проблема в том, что МК и так, сам по себе не из простых устройство, так ещё и многие начинающие сразу лезут на высокий уровень, вообще не понимая, что и как происходит.

Я не о тебе сейчас, а в целом.

Посмотри, во что скомпилировался твой код. Потом выясняй в доках к компилятору, как организовать цикл, как происходит работа с портами.

А так - МК сам по себе, повторяюсь, очень сложен, да еще "правила игры" компилятора добавляются.

Share this post


Link to post
Share on other sites

И ещё. Может я слепой, но схемы я никакой не вижу :unknw:

Share this post


Link to post
Share on other sites

Спасибо вам, но всё также. Просто горит ... :help: :help: :help:

Сомневаюсь, что он просто горит. 99% на то, что он просто переключается с ох***ной скоростью.

P.S. Извиняюсь, не заметил код с continue.

Не является ли int 16-битным?

P.S.S Посмотрел User's Guide на C18. Точно, int 16-битный. Замените на short long - 24 бита или на long - 32 бита.

Edited by Vitemk

Share this post


Link to post
Share on other sites

Ещё раз проверьте, куда подключён светодиод. На Вашей фотографии - это нога 28, это не порт В.

Для порта В надо выбрать другую ногу, из таблицы. Ноги считаются по кругу.

post-193952-0-49217400-1467809367_thumb.png

post-193952-0-77669300-1467809730.png

Edited by Yurkin2015

Share this post


Link to post
Share on other sites

Ура-а !!! Заработало. ( Почти :clapping: )

Проблема была в том, что светодиод стоял на 28 ножке. Я не с той стороны считал их.

Но, появилась другая проблема.Светодиод моргает хаотично. Иногда через 5 секунд, иногда через 0.5, а бывает и просто мерцает. И всё это в промежутке 10 секунд. То есть определённого какого-то промежутка - нема. Из-а чего такое может быть ?!

+ В Протеусе всё работает ;)

Всем огромное спасибо !

Код на данный момент:

#include "config_bits.h"
#include <stdio.h>
#include <stdlib.h>
void main (void) {

int i = 0;
TRISA = 0x00;
PORTA = 0x00;
TRISB = 0x00;
PORTB = 0xFF;
TRISC = 0x00;
PORTC = 0x00;
TRISD = 0x00;
PORTD = 0x00;
TRISE = 0x00;
PORTE = 0x00;
while (1) {
for ( i = 0; i < 10000; i++) continue;
PORTB = ~PORTB;
}
}

Файл "config_bits.h":

// PIC18F452 Configuration Bit Settings
// 'C' source line config statements
#include <p18f452.h>
// CONFIG1H
#pragma config OSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config OSCS = OFF // Oscillator System Clock Switch Enable bit (Oscillator system clock switch option is disabled (main oscillator is source))
// CONFIG2L
#pragma config PWRT = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOR = ON // Brown-out Reset Enable bit (Brown-out Reset enabled)
#pragma config BORV = 20 // Brown-out Reset Voltage bits (VBOR set to 2.0V)
// CONFIG2H
#pragma config WDT = OFF // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
#pragma config WDTPS = 128 // Watchdog Timer Postscale Select bits (1:128)
// CONFIG3H
#pragma config CCP2MUX = ON // CCP2 Mux bit (CCP2 input/output is multiplexed with RC1)
// CONFIG4L
#pragma config STVR = ON // Stack Full/Underflow Reset Enable bit (Stack Full/Underflow will cause RESET)
#pragma config LVP = OFF // Low Voltage ICSP Enable bit (Low Voltage ICSP disabled)
// CONFIG5L
#pragma config CP0 = OFF // Code Protection bit (Block 0 (000200-001FFFh) not code protected)
#pragma config CP1 = OFF // Code Protection bit (Block 1 (002000-003FFFh) not code protected)
#pragma config CP2 = OFF // Code Protection bit (Block 2 (004000-005FFFh) not code protected)
#pragma config CP3 = OFF // Code Protection bit (Block 3 (006000-007FFFh) not code protected)
// CONFIG5H
#pragma config CPB = OFF // Boot Block Code Protection bit (Boot Block (000000-0001FFh) not code protected)
#pragma config CPD = OFF // Data EEPROM Code Protection bit (Data EEPROM not code protected)
// CONFIG6L
#pragma config WRT0 = OFF // Write Protection bit (Block 0 (000200-001FFFh) not write protected)
#pragma config WRT1 = OFF // Write Protection bit (Block 1 (002000-003FFFh) not write protected)
#pragma config WRT2 = OFF // Write Protection bit (Block 2 (004000-005FFFh) not write protected)
#pragma config WRT3 = OFF // Write Protection bit (Block 3 (006000-007FFFh) not write protected)
// CONFIG6H
#pragma config WRTC = OFF // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write protected)
#pragma config WRTB = OFF // Boot Block Write Protection bit (Boot Block (000000-0001FFh) not write protected)
#pragma config WRTD = OFF // Data EEPROM Write Protection bit (Data EEPROM not write protected)
// CONFIG7L
#pragma config EBTR0 = OFF // Table Read Protection bit (Block 0 (000200-001FFFh) not protected from Table Reads executed in other blocks)
#pragma config EBTR1 = OFF // Table Read Protection bit (Block 1 (002000-003FFFh) not protected from Table Reads executed in other blocks)
#pragma config EBTR2 = OFF // Table Read Protection bit (Block 2 (004000-005FFFh) not protected from Table Reads executed in other blocks)
#pragma config EBTR3 = OFF // Table Read Protection bit (Block 3 (006000-007FFFh) not protected from Table Reads executed in other blocks)
// CONFIG7H
#pragma config EBTRB = OFF // Boot Block Table Read Protection bit (Boot Block (000000-0001FFh) not protected from Table Reads executed in other blocks)
#pragma target clock 4_000_000

Edited by vv7

Share this post


Link to post
Share on other sites

Контакт плохой?

Контакт в первую очередь проверил ! Может с питанием ? Хотя Мультиметр стабильно показывает 5.05В. Хоть и подключен с аккумулятора на 12В через автозарядку для телефона.

Edited by vv7

Share this post


Link to post
Share on other sites

Не только контакт питания. Контакт ножки МК, резистора, светодиода, кварца, конденсаторов кварца. Они не должны болтаться, а жестко сидеть. Для надежности, лучше всё это спаять (хотя бы навесом), а не использовать макетку. Корпус кварца лучше посадить на землю. Но только не припаивать, а прикрутить жесткую проволочку.

Edited by Vitemk

Share this post


Link to post
Share on other sites

Последний вопрос. Из-за чего он может быть такая ситуёвина:

Включаю питание, работает, работает ( мигает светодиод ) и через какое-то время перестаёт и без перезагрузки не пашет до след. раза.

Больше склоняюсь, что из-за питания. Вот вы, как питаете ваши устройства ? От аккумуляторов или с генераторов ?!

Edited by vv7

Share this post


Link to post
Share on other sites

питание на 31, 32 подай как положено... и и керамику по 0,1мкф

Share this post


Link to post
Share on other sites

Спасибо за совет !! Керамика, я так понимаю - конденсатор на 0.1мкф ? Вы советуете поставить его между + и - ?

Как тут ? http://forum.cxem.ne...showtopic=10698

Пока нет в наличии, но обязательно поставлю !

Edited by vv7

Share this post


Link to post
Share on other sites
void main (void) {

PORTB = 0xFF; // правильная инициализация порта....
LATB=0xFF;
TRISB = 0x00;


while (1) {
 for ( i = 0; i < 1000000; i++) {
	 LATB^=0b11111111; // правильная инверсия , бит требующий инверсии устанавливается в лог.1
 }
}
}

Share this post


Link to post
Share on other sites

Исправил. Теперь всё работает так как надо ! Не знаю почему, но если ставить PORTB = ~PORTB в main while for цикл, то светодиод мигает хаотично, но если воспользоваться таймером, то всё - почти как часики !!! :thank_you2: Пока вот только интересно рассчитать и запрограммировать всё это дело ровно на 1 секунду, но это уже попробую сам ! Вам всем огромнейшое спасибо !!!

config_bits.h не изменялся.

Вот код на 4 светодиода.

#include "config_bits.h"
#include <stdio.h>
#include <stdlib.h>
#include <timers.h>

void high_isr (void);
#pragma code high_vector=0x08
void interrupt_at_high_vector(void)
{
_asm GOTO high_isr _endasm
}
int o = 0;
#pragma interrupt high_isr
void high_isr (void) {

if (INTCONbits.TMR0IF){
 INTCONbits.TMR0IF = 0;				
 TMR0H = 0x85;
 TMR0L = 0xEE;

 if ( o == 0 ) { PORTB = 0x0E; o = 1; } else // -+++ RB0
 if ( o == 1 ) { PORTB = 0x0D; o = 2; } else // +-++ RB1
 if ( o == 2 ) { PORTB = 0x0B; o = 3; } else // ++-+ RB2
 if ( o == 3 ) { PORTB = 0x07; o = 4; } else // +++- RB3
 if ( o == 4 ) { PORTB = 0x0B; o = 5; } else
 if ( o == 5 ) { PORTB = 0x0D; o = 0; }

}
}

void main (void) {

TRISA = 0x00;
PORTA = 0x00;
TRISB = 0xF0;
PORTB = 0x0F;
TRISC = 0x00;
PORTC = 0x00;
TRISD = 0x00;
PORTD = 0x00;
TRISE = 0x00;
PORTE = 0x00;

ADCON1=0x0F;
T0CON = 0x85;
TMR0H = 0x85;
TMR0L = 0xEE;
INTCON = 0x20;			
INTCON2 = 0x04;
RCONbits.IPEN = 1;
T0CON = 0x85;
TMR0H = 0x85;
TMR0L = 0xEE;				
INTCONbits.GIEH = 1;

while (1) {
}
}

На 4 МГц мигает почти в секунду. :buba:

Всем доброго вечера !!!

Edited by vv7

Share this post


Link to post
Share on other sites

Поздравляю :i-m_so_happy:

Небольшие советы.

Переменная o используется только в функции high_isr, значит излишне выносить её в глобальную область. Занесите её в саму функцию и объявите с квалификатором static, чтобы при выходе из функции она не уничтожалась.

Далее, все if'ы с проверкой переменной и присваиванием ей значений, можно заменить на :

o++;
if(o>=5) o=0;

и блок switch-case.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By admin
      В ролике показано как скомпилировать и установить библиотеку OpenCV 4.1.0 на Raspberry Pi 3.
      Используйте промокод CXEMNET и получите скидку 10% в магазине https://www.seeedstudio.com/ при покупке от 150$!
      https://www.seeedstudio.com/category/Raspberry-pi-c-1010/Raspberry-Pi-3-Model-B--p-3037.html малинка
      https://www.seeedstudio.com/category/Raspberry-pi-c-1010/Raspberry-PI-VGA666-DPI-dtoverlays-Module.html модуль vga666
      https://www.seeedstudio.com/category/Raspberry-pi-c-1010/Raspberry-Pi-Camera-Module-V2-p-2800.html камера
      Команды из видео.
      Открыть настройки raspberry Pi: 
      sudo raspi-config
      Далее выбираем Advanced Options → Expand Filesystem. Перезагружаемся.

      Установка требуемых пакетов:
      sudo apt-get install cmake cmake-curses-gui libgtk2.0-dev
      sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libx264-dev libxvidcore-dev
      sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev
      sudo apt-get install gfortran libatlas-base-dev
      Увеличение размера файла подкачки. 
      sudo nano /etc/dphys-swapfile
      Находим строчку CONF_SWAPSIZE=100
      И увеличиваем число например до 1024.
      Перезапускаем службу.
      sudo /etc/init.d/dphys-swapfile stop
      sudo /etc/init.d/dphys-swapfile start
      Создаем папку opencv в домашнем каталоге и переходим в нее
      cd /home/pi
      mkdir opencv
      cd opencv
      Скачиваем архивы с исходниками с помощью утилиты wget
      wget https://github.com/opencv/opencv/archive/4.1.0.zip -O opencv_source.zip
      wget https://github.com/opencv/opencv_contrib/archive/4.1.0.zip -O opencv_contrib.zip
      Распаковываем архивы.
      unzip opencv_source.zip
      unzip opencv_contrib.zip
      И теперь можно их удалить
      rm opencv_source.zip
      rm opencv_contrib.zip
      Теперь переходим в папку opencv-4.1.0 и создаем в ней папку build
      cd opencv-4.1.0
      mkdir build
      cd build
      Настраиваем параметры сборки. Обратите внимание на путь до дополнительных модулей!
      cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_C_EXAMPLES=OFF \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv/opencv_contrib-4.1.0/modules \
      -D BUILD_EXAMPLES=ON \
      -D BUILD_DOCS=ON \
      -D ENABLE_NEON=ON ..
      Компиляция в 1 поток
      make -j1

      Компиляция в 4 потока (только если у вас хорошее охлаждение малинки)
      make -j4

      Установка библиотеки
      sudo make install

      Настройка динамического связывания
      sudo ldconfig

      Проверка работоспособности библиотеки.
      python3
      import cv2
      cv2.__version__

      В результате, библиотека должна выдать номер версии, которую вы установили.
    • By Tulen
      Здарова, железячники. 
      Собираю клавиатуру из 12-ти кнопок, которую подключаю к пичку (PIC18F25K80). Но про клавиатуру не важно, там все разобрано и код сделал уже. Проблема в том, что сейчас нет времени самому писать библиотеку для работы с LCD дисплеем (через недельку-две я сяду и разберусь), поэтому я ищу готовые библиотеки. Дисплей - LM016L, контроллер - HD44780. 
      Нашел одну библиотеку, добавил в код. Компилятор ругается на выводы строчек и не хочет выводить переменные. 
      Прилагаю код:
      IDE - MPLAB X v4.05
      Компилятор - XC8 бесплатный.
      Варнинги от компилятора + строчки:
          PORTC = (data & 0x0F)*16; // newmain.c:46: warning: (373) implicit signed to unsigned conversion     PORTC = (data >> 4)*16; // newmain.c:54: warning: (373) implicit signed to unsigned conversion     PORTC = (data & 0xF)*16; // newmain.c:57: warning: (373) implicit signed to unsigned conversion     WriteByte(addLUT[row] + col); // newmain.c:65: warning: (373) implicit signed to unsigned conversion     SetLCDPosition(LCD_Line+1,0);  // newmain.c:87: warning: (373) implicit signed to unsigned conversion     WriteByte(i); // newmain.c:116: warning: (373) implicit signed to unsigned conversion     ShowStr(b); // newmain.c:160: warning: (357) illegal conversion of integer to pointer     ShowStr("BAD"); // newmain.c:172: warning: (359) illegal conversion between pointer types  
    • By Qwer11
      Здравствуйте.
      Собрал простую схему мигания светодиодом,
      использую pickit3 и  flowcode7 триал версию,
      в симуляции светодиод мигает.
      pic18f4550 определяется в MPLAB IPE v4.05 и прошивается,
      но не могу понять если запитывать от ПК и программатора схему,
      откуда в этом случае идет земля ,  где схема в этом случае замыкается.
      Спасибо.
      Target folder: C:\Users\Public\DOCUME~1
      Source name:   C:\Users\Public\Documents\Flowcode1.fcfx
      Title:         
      Description:   
      Device:        PIC.18F.18F4550
      Generated by:  Flowcode v7.2.1.4
      Date:          Monday, November 20, 2017 14:30:34
      Users:         1
      Registered to: 

      Launching the compiler...
      C:\Program Files\Microchip\MPLABX\v4.05\mplab_ipe\ipecmd.exe  /P18F4550 /F"C:\Users\Public\DOCUME~1\Flowcode1.hex" /TPPK3 /M /OL /W3.3
      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
      *****************************************************
      Connecting to MPLAB PICkit 3...
      Currently loaded firmware on PICkit 3
      Firmware Suite Version.....01.51.06
      Firmware type..............PIC18F
      . .
      Programmer to target power is enabled - VDD = 3,250000 volts.
      Target device PIC18F4550 found.
      Device ID Revision = 7
      . . . . .
      Device Erased...
      Programming...
      The following memory area(s) will be programmed:
      program memory: start address = 0x0, end address = 0xff
      configuration memory
      program memory
      Address: e Expected Value: 44 Received Value: 40
      Failed to program device
      Programming Target Failed.
      . . . . .
      C:\Program Files\Microchip\MPLABX\v4.05\mplab_ipe\ipecmd.exe reported error code 7
      FINISHED
       


    • By RC7LI
      Добрый день. Собираю вот эту конструкцию http://www.dh8bqa.de/universal-banddecoder-for-station-automation/ И на этапе программирования PIC возникли проблемы.
      В статье написано, что PIC18F452 нужно "прожечь", записав в него бутлоадер. И уже дальше вставить "проженный" микроконтроллер в готовое устройство и записать в него программу. Я собрал вот этот программатор http://labkit.ru/html/programmators_shm?id=72 и попытался "прожечь" микроконтроллер с помощью программ ICProg, WinPic800. Результат один- ошибка проверки по адресу 0000h.
      Вопрос следующий - как "прожечь" микроконтроллер? Может бутлоадер прожигается по-другому? Не через программатор и используя не эти программы?
      P.S. Прошивать микроконтроллер пытаюсь первый раз в жизни. Поэтому извините за глупые вопросы.
    • By mandruk1331
      Я новичок в программировании PIC. Я создал тестовую программу, чтобы проверить, все ли работает нормально, но светодиод не мигает. Программатор: Pickit3. Микроконтроллер: PIC16F628A
      Возможно, я что-то неправильно делаю в разделе кода:
      #include <stdio.h> #include <stdlib.h> #include <pic16f628a.h> void delay_ms(int); int main() { TRISA2 = 0; //RB0 as Output PIN while(1) { RA2 = 0xFF; delay_ms(1000); RA2 = 0x00; delay_ms(1000); } return 0; } //General short delay void delay_ms(int x) { int y, z; for ( ; x > 0 ; x--) for ( y = 0 ; y < 4 ; y++) for ( z = 0 ; z < 176 ; z++); }  

  • Сообщения

    • Линейка, бесспорно, тоже нужна! Для плоскостных измерений, приносит удобство. А сверло, мечик или плашку линейкой уже не измерить. Тогда на помощь приходит штангенциркуль и таблица в помощь. Для хорошего мастера не помешает иметь и то и другое. Перелистывать страницы справочника - это тоже потеря времени. А так, глянул в таблицу и сразу получил ответ соответствия. И не надо считать деления на линейке. Это преимущество особенно ярко выражено, если величина перевода не кратная. Полезные таблицы, вообще желательно распечатать на принтере, наклеить на жёсткую картонку и магнитиком прихватить возле рабочего стола. Например: нужно реставрировать предохранитель, глянул в эту таблицу, и за считанные минуты запаял требуемый волосок калиброванного провода для данного тока. Помимо этой таблицы, желательно повесить и таблицу с ESR параметрами. Для ремонтника и не только она не будет лишней.
    • Для чего? Руки чесались? От трансформатора наводки, пробовали трансформатор вынести из коробки подальше от плат? Опередили
    • Попробуйте трансформатор питания повернуть или подальше от плат отодвинуть, это могут быть от него наводки.
    • И за что их "травят" в детской такими пульсациями.
    • "Поменяно местами, заменено, грешу", а должно быть - с помощью осциллографа или высокоомных наушников, обнаружено, что гул начинается после определённого каскада, иначе и 10001 тем будет мало.
    • Все эти светодиодные лампы, полное говнище. Причём 99% ламп что есть на прилавках магазинов, фуфло дичайшее. И дело не в схеме питания, а в охлаждении. Для китайских светодиодов низкого и среднего ценового диапазона, требуется МИНИМУМ 30 см2 площади радиатора на 1 Вт номинальной мощности. И то, радиатор при этом греется до 55-60 С° при 25 С° окружающей среды. Я уже десятки светильников себе собрал и каждый гонял часами в разных положения радиаторов, записывая все показатели температуры радиаторов, подложек, температуры люминофора, силе света и прочего. Сначала расчёты, потом натурные испытания. Лампа с площадью коруса, от силы 100 см2 не может долго работать на 10 Вт, как обещает производитель. Если нужно нормальное освещение, лучше много маломощных источников света, чем один мощный. Свет получается равномерный и охлаждать проще.
  • Покупай!

×
×
  • Create New...