• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!

4 сообщения в этой теме

Дуч    0

Здравствуйте.

Есть два программатора Pickit3. Один из них китайский клон, другой оригинал от Microchip.

Китаец стирает калибровочную константу Pic12f629, а оригинал прошивает и проблем нет. Подскажите причину стирания константы?

Поделиться сообщением


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

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
Дуч    0

#pragma config FOSC =  INTRCIO      // INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
#pragma config WDTE =  ON           // WDT enabled
#pragma config PWRTE = ON           // PWRT enabled
#pragma config MCLRE = ON          // MCLR/VPP pin function is digital input - причина оказалось в этом. Было OFF (шилось с бубном и стиралась константа)
#pragma config CP =    ON           // Program memory code protection is enabled
#pragma config CPD =   ON           // Data memory code protection is enabled
#pragma config BOREN = ON           // Brown-out Reset enabled Сброс по понижению питания включен

Расскажите умные люди почему? я не пойму 

Изменено пользователем Дуч

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2jas    15

такое случается если проседает напряжение питания микроконтроллера или mclr. попробуйте снять микроконтроллер с платы и прошить отдельно. у вас на китайском клоне отладка работает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4uvak    124

Попробуй нормальную универсальную программу, которая и со вторым и с третьим пиккитом работает. У меня клон  отлично работает с этой прогой. Возможно придется пиккит3 перепрошить. Для этого открой меню Tools, и нажми на пункт Download PICkit Operating System, и выбери тот hex файл из папки пиккит3, который виден. Программатор перепрошьется сам через усб

PICkit3.rar

Поделиться сообщением


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: 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
       


    • Автор: SDD39
      Изучая пару месяцев язык программирования Си  , решил попробовать написать данную программу для закрепления и углубления знаний.
      В чём её суть.  Ну к примеру нам надо спаять мост Винна. Для него , как известно нужны пары деталей конденсаторов и резисторов с желательно близкими значениями. Особенно трудно обычно подобрать конденсаторы но не в этом сейчас суть.  Так вот , пускай у нас есть несколько десятков  конденсаторов  и мы можем соединив параллельно по два конденсатора получить нужный номинал . Но при этом имеется вероятность , что подобрав пары  должным образом , мы можем получить весьма низкое отклонение  подобранных  пар , соединённых последовательно или параллельно.  Так вот , если к примеру у нас имеется 31 промеренный конденсатор (что я сделал и занеёс в таблицу для МБМ конденсаторов 0.1 мкФ , чтобы иметь практические данные это не так уж долго и вполне осуществимо на практике)  , то количество только возможных не повторяющихся  комбинаций будет составлять (31*31 - 31)/2= 465 . Просчитать  такое  количество  в ручную , отсеить невозможные комбинации где один и тот же конденсатор присутствует более одного раза , да ещё выбрать наилучший вариант задача компьютера , а не человека.   И он справляется с ней  за секунду.
      По скольку в программировании я не очень силён то какой то графической оболочки у меня нет (я вообще пока не знаю как это делается). Так же не придумал способа ввода данных в программу. Наверно надо будет попробовать как то делать это из текстового файла. Результаты программа уже выводит на экран и создаёт текстовый файл Rezalts.txt с результатами вычислений. Хотелось бы что бы опытные программисты взглянули на мой труд и указали на недочеты , ошибки и возможные решения в лучшем направлении. В общем буду благодарен за незлобные указания моих ошибок . Прилагаю исходник на Си и сопутствующие файлы данных и результатов в архиве . А так же скриншот результатов вывода на экран.
       
       
       
       
         
       
       
       
       
        
       

      Rezalts.rar
    • Автор: ximik_se
      Всем привет.

      Решил сделать небольшую домашнюю метеостанцию.

      Есть приемник с экраном, куда выводится инфа (построено на ATMEGA 328P) и есть передатчик, который посылает инфу по возудху (построено на ATtiny85).

      В передатчике использую обычные DHT22. В принципе качество чуть ниже среднего. Но главный недостаток - порой сбоит, присылая данные в 2 раза больше предидущих, потом опять приходит в себя. и так повторяется постоянно.

      При этом время между измерениями не меньше 20 сек.

      В общем заказал я себе с Китаюшки более точные датчики - 

      CJMCU-1080 HDC1080
      Вещица прекрасная, но общается по I2C.

      А библиотеку рабочую под нее я смог найти только одну "ClosedCube_HDC1080.h" и никаких модификаций под ATtiny я найти не смог.

      Для ее работы соответственно нужен Wire.h

      В общем решил я его поковырять самостоятельно, хоть и не прогер. Забрался во внутренности ClosedCube_HDC1080.cpp и везде заменил Wire на TinyWireM (некий аналог Wire для ATtiny).

      И у меня даже получилось считывать валжность, но вот вместо температуры приходит гадость. Ибо при компиляции Arduino IDE ругалась на строку (я ее ниже в коде закомментировал)
      uint8_t buf[4]; for (int i = 1; i < (seconds*66); i++) { TinyWireM.beginTransmission(_address); TinyWireM.write(0x00); TinyWireM.endTransmission(); delay(20); TinyWireM.requestFrom(_address, (uint8_t)4); // TinyWireM.readBytes(buf, (size_t)4); } Ошибку пишет следующую:

      \ClosedCube_HDC1080.cpp: In member function 'void ClosedCube_HDC1080::heatUp(uint8_t)':

      \ClosedCube_HDC1080.cpp:81:13: error: 'class USI_TWI' has no member named 'readBytes'

      TinyWireM.readBytes(buf, (size_t)4);
      Может есть ребята более понимающие в коде и сумеющие победить эту проблему, чтобы и температуру этот датчик смог передавать через ATtiny85.

      Вот полный текст файла ClosedCube_HDC1080.cpp (уже замененный ну и строчка закоментирована):
      #include <TinyWireM.h> #include "ClosedCube_HDC1080.h" ClosedCube_HDC1080::ClosedCube_HDC1080() { } void ClosedCube_HDC1080::begin(uint8_t address) { _address = address; TinyWireM.begin(); // Heater off, 14 bit Temperature and Humidity Measurement Resolution TinyWireM.beginTransmission(_address); TinyWireM.write(CONFIGURATION); TinyWireM.write(0x0); TinyWireM.write(0x0); TinyWireM.endTransmission(); } HDC1080_Registers ClosedCube_HDC1080::readRegister() { HDC1080_Registers reg; reg.rawData = (readData(CONFIGURATION) >> 8); return reg; } void ClosedCube_HDC1080::writeRegister(HDC1080_Registers reg) { TinyWireM.beginTransmission(_address); TinyWireM.write(CONFIGURATION); TinyWireM.write(reg.rawData); TinyWireM.write(0x00); TinyWireM.endTransmission(); delay(10); } void ClosedCube_HDC1080::heatUp(uint8_t seconds) { HDC1080_Registers reg = readRegister(); reg.Heater = 1; reg.ModeOfAcquisition = 1; writeRegister(reg); uint8_t buf[4]; for (int i = 1; i < (seconds*66); i++) { TinyWireM.beginTransmission(_address); TinyWireM.write(0x00); TinyWireM.endTransmission(); delay(20); TinyWireM.requestFrom(_address, (uint8_t)4); // TinyWireM.readBytes(buf, (size_t)4); } reg.Heater = 0; reg.ModeOfAcquisition = 0; writeRegister(reg); } float ClosedCube_HDC1080::readT() { return readTemperature(); } float ClosedCube_HDC1080::readTemperature() { uint16_t rawT = readData(TEMPERATURE); return (rawT / pow(2, 16)) * 165 - 40; } float ClosedCube_HDC1080::readH() { return readHumidity(); } float ClosedCube_HDC1080::readHumidity() { uint16_t rawH = readData(HUMIDITY); return (rawH / pow(2, 16)) * 100; } uint16_t ClosedCube_HDC1080::readManufacturerId() { return readData(MANUFACTURER_ID); } uint16_t ClosedCube_HDC1080::readDeviceId() { return readData(DEVICE_ID); } uint16_t ClosedCube_HDC1080::readData(uint8_t pointer) { TinyWireM.beginTransmission(_address); TinyWireM.write(pointer); TinyWireM.endTransmission(); delay(9); TinyWireM.requestFrom(_address, (uint8_t)2); byte msb = TinyWireM.read(); byte lsb = TinyWireM.read(); return msb << 8 | lsb; }  
    • Автор: 55nlo
      Написать программу Асм атмега 1284.
      Фрагмент: после команды считать рабочий регистр (в котором может появиться число от 1 до 50) каждому числу  соответствует 4 значения  (это таблица) их нужно загрузить в четыре рабочих регистра для дальнейшей обработки)
       Где лучше хранить таблицу?
      Пример: считали 48  числа 5; 8; 21; 25
                      Считали 31 числа 4;  9; 11; 35
       
    • Автор: 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++); }