[ acek031 @ 31.01.2022. 09:19 ] @

Pozdrav svima.

Pravim Open Programmer i pokušavam da ga programiram sa Arduinom, jer nemam programer za PIC mikrokontrolere.
Ono što sam našao na netu na ovu temu može da se koristi ali sa malim hex fajlovima.
U pitanju je konzolni program pisan u C-u koji koristi Arduino kao ISP programator.
link: https://bitbucket.org/kirill57...-pic18f-programmer/src/master/
Hex file za Open Programmer koji pravim je 54KB i program izbaci grešku kada pokušam da ga učitam.

Da li je neko od vas probao da programira PIC18F2550 koristeći Arduino UNO?

Svaki savet ili neka informacija je dobrodošla.

[ ZAS011 @ 31.01.2022. 11:17 ] @
Napravi PIC Kit 2 klon da se ne mučiš.
[ acek031 @ 31.01.2022. 13:53 ] @
opet ostaje problem da se isprogramira PIC.

[ acek031 @ 31.01.2022. 14:09 ] @
Citat:
ZAS011:
Napravi PIC Kit 2 klon da se ne mučiš.

opet ostaje problem da se isprogramira PIC.
[ sdurut @ 31.01.2022. 14:38 ] @
Kupi programator sa na Aliju 15EUR-a. Ne izmišljaj toplu vodu

Aliexpress PICkit 3
[ bogdan.kecman @ 31.01.2022. 15:29 ] @
preko arduina mozes da peces samo "nov" cip i mora da bude iskonfigurisan za LVP (sto znaci da imas par pinova koje ne mozes da koristis za normalan rad) i ako slucajno promenis konfiguraciju na HVP vise mu ne mozes nista bez normalnog programatora... sto kaze ovaj sloser kupi programator najjeftinija je varijanta ..imas na KP za 2200din /2900din pickit2/3 "za odma" ako ti se ne ceka kinez

ali dakle moze da se napece nov cip (ili bilo koji cip koji je zadnjim programiranjem naprogramiran kao LVP posto za HVP mora dovedes 12-13V na mclr pin a arduino ne ume da napravi 12V) sa arduinom

inace ako je novi projekat 18f2550 ti je pogresan izbor, to je uber mator cip koji se sada proizvodi samo zbog starih projekata kojima je bitno da je 100% identican i onda tu microchip dere za pare .. moderniji 18Fxx sa identicnim hw-om (malo vise rama/flash-a, malo brzi..) kostaju dosta manje a svaki sw ako imas source moze uglavnom samo da se prekompajlira i radi 1/1 eventualno malo da se budzne konfig ... jedino je fora ako imas samo HEX onda mora bas taj cip (i za te slucajeve microchip i pravi te stare i zato dere na ceni na njima)
[ milan-markovic @ 01.02.2022. 11:21 ] @
@ acek031 Ukoliko se ne snadjes za programiranje PIC18F2550 mogu to ja uprogramirat jedino ukoliko nisi iz Nis imao bi troskove postarine za mikrokontroler.

Pozdrav
[ ZAS011 @ 03.02.2022. 08:35 ] @
Jesi li rešio svoj problem?
[ acek031 @ 14.02.2022. 08:37 ] @
@milan-markovic, @ZAS011 nabavio sam Pckit2, ali imam drugi problem. Programirao sam PIC18F2550, ali mislim da nije povukao iz hex falja konfiguraciju za kvarc (12MHz). samo bliknka LED2. isto se dešava kada ubacim PIC u ispitnu ploču i povežem na napajanje bez Kvarca. LED2 isto blinka.

imam pitanje za sve vas koji koriste Pickit2.

Kako da znam šta je na slici ispod uključeno u opciji Configuaration Word Editor?
ranije sam koristio PonyProg za programiranje Atmelovih mikrokontrolera. Tada sam imao opciju da štikliram polja u config bits i da podesim šta mi treba.
Ovde nemogu da se snađem, guglao sam na netu, ali nisam našao šta znače ovi bitovi.



Svaki savet ili sugestija je dobrodošla.

Hvala svima na dosadašnjim odgovorima.

[ bogdan.kecman @ 14.02.2022. 08:45 ] @
ne pise u HEX-u koji je kvarc, samo da li koristis high speed kristal, low speed kristal ili RC kolo ... brzina ga ne zanima .. ako radi bez kvarca verovatno si mu konfigurisao interni oscilator

sve ove bitove imas u datasheet-u od mcu-a tesko da ih neko zna napamet ali svakako pickit2 iz HEX-a povuce konfig koji si napravio sa fuse bitovima u kompajleru (da li si napravio konfiguraciju kako treba u kompajleru?)
[ acek031 @ 14.02.2022. 09:03 ] @
@bogdan.kecman

nisam ništa kompajlirao, samo sam učitao gotov hex fajl.

ima i ceo kod na sourceforge.net od ovog programatora.

Pokušaću da nađem gde se nalazi u konfiguraciji high speed kristal, pa javljam rezultate.
[ bogdan.kecman @ 14.02.2022. 15:26 ] @
kada ucitas hex u pickit2 program za programiranje on ce ti pokazati koji je mcu i koji je konfig

ako uploadujes hex mozemo da pogledamo
[ acek031 @ 16.02.2022. 14:57 ] @
@bogdan.kecman

učitao sam hex fajl. Pickit2 clone ne detektuje PIC18F2550 automatski, već moram da izaberem iz padajućih lista familiju mcu i model mcu.
Našao sam datasheet. Nešto sam pokušao sa menjanjem bitova i jedino što sam uspeo da dobijem je da LED2 više ne blinka.

Ovde me buni jedna stvar. Po datasheet-u tip kristala bi trebalo da se podešava u CONFIG1H (3000001h), a koji su to bitovi u prozoru koji otvara pickit2? da li su to bitovi od 0-7 ili bitovi od 8-15 ? ja sam pokušavao neke kombinacije sa bitovima od 8-11 u CONFIG1 i samo sam isključio LED2.

Sećam da je kod Atmela bila sledeća logika kada se unosila kombinacija 0 i 1 za frekfenciju kristala: 0-uključeno, 1 isključeno. Da li je i ovde isti slučaj?


U prilogu je tabela sa config bitovima i podešavanja oscilatora iz datasheet-a, sa slika config bitova sa učitanog hex-a.

Zanima me gde grešim i šta radim pogrešno?

[ ZAS011 @ 16.02.2022. 19:52 ] @
PK2 klon MORA da prepozna mikrokontroler prolikom pokretanja aplikacije. Znači: mikrokontroler priključen na PK2 pa tel posle toga startovanje aplikacije na PC.
Ja imam 3 komada PK2 klona (od toga sam lično napravio 2 a treći mi je poslao jedan kolega sa foruma.
Da si ranije odgovorio na moje pitanje, sada bi bio ponosni vlasnik jednog homemada PK2 klona koji bi dobio za dž.
[ bogdan.kecman @ 16.02.2022. 21:50 ] @
cudno da pk2 ne prepoznaje 18f2550, morao bi da ga prepozna... ja imam original pk2 i nikad nisam imao problem da prepoznam 18f2550 ..

davno sam se drndao sa pickit2 sw-om ali neka logika...

config1H (bitovi za oscilator) bi trebalo da budu prva linija 11,10,9,8 sto mozes da pretpostavis i po tome sto su 7 i 6 bitovi "unimplemented" sto se slaze sa CONFIG1L dok za 1H unimplemented je bit4 sto se slaze sa ovim bitom 12 koji nije implementiran... sad bit13 je PCLKEN ne znam zasto u DS pise jedno a pickit pise drugo ...

isto ako pogledas CONFIG5 npr vidis da su 15 i 14 postojeci pa tek onda 0-3 sto se poklapa sa tim da su prvih 8 bitova (15-8) H registar a sledecih 8 (7-0) L registar


u tom slucaju tebi je oscilator podesen kao 1110 iliti RC oscilator sto sa 16MHz kristalom nikako nece raditi


ali, to je nagadjanje.. takodje, ako napravim bazicni fw za 18f2550

Code:

#include <main.h>
#include <18F2550.h>
#device ADC=10

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES HS

#use delay(crystal=16MHz)

void main()
{
   setup_adc_ports(NO_ANALOGS, VSS_VDD);
   set_tris_a(0);
   set_tris_b(0);
   set_tris_c(0);
   
   while(TRUE)
   {
      output_a(0x00);
      output_b(0x00);
      output_c(0x00);
      delay_ms(500);
      output_a(0xff);
      output_b(0xff);
      output_c(0xff);
   }

}


dobijem

Code:

:1000000019EF00F0EA6A060EE96EEF50D8B417EF68
:1000100000F0050E016E006A002EFED7012EFBD700
:100020002E0E006E002EFED700D0EF2EF2D734EF4A
:1000300000F0F86AD09EC150C00B0F09C16E070EC8
:10004000B46EC150C00B0F09C16E000E926E936E5C
:10005000946E926A896A936A8A6A946A8B6A020EBB
:10006000056EFA0E066ECED7052EFBD7926A89680A
:0C007000936A8A68946A8B68ECD70300DE
:020000040030CA
:0E00000003CC381E008781000FC00FE00F40B8
:00000001FF
;PIC18F2550
;CRC=4054  CREATED="16-Feb-22 22:25"


za koji pickit2 kaze da je config1 CC03

ako promenim u

Code:

#include <main.h>
#include <18F2550.h>
#device ADC=10

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES HSPLL

#use delay(crystal=16MHz)

void main()
{
   setup_adc_ports(NO_ANALOGS, VSS_VDD);
   set_tris_a(0);
   set_tris_b(0);
   set_tris_c(0);
   
   while(TRUE)
   {
      output_a(0x00);
      output_b(0x00);
      output_c(0x00);
      delay_ms(500);
      output_a(0xff);
      output_b(0xff);
      output_c(0xff);
   }

}



dobicu

Code:

:1000000019EF00F0EA6A060EE96EEF50D8B417EF68
:1000100000F0050E016E006A002EFED7012EFBD700
:100020002E0E006E002EFED700D0EF2EF2D734EF4A
:1000300000F0F86AD09EC150C00B0F09C16E070EC8
:10004000B46EC150C00B0F09C16E000E926E936E5C
:10005000946E926A896A936A8A6A946A8B6A020EBB
:10006000056EFA0E066ECED7052EFBD7926A89680A
:0C007000936A8A68946A8B68ECD70300DE
:020000040030CA
:0E00000003CC381E008781000FC00FE00F40B8
:00000001FF
;PIC18F2550
;CRC=4054  CREATED="16-Feb-22 22:32"


a pickit2 config ga opet cita kao CC03

sto ne deluje ok ... pa cu ga uprostim jos malo...

Code:

#include <18F2550.h>
#device ADC=10

#FUSES INTRC

void main()
{
   setup_adc_ports(NO_ANALOGS, VSS_VDD);
   set_tris_a(0);
   set_tris_b(0);
   set_tris_c(0);
   
   while(TRUE)
   {
      output_a(0x00);
      output_b(0x00);
      output_c(0x00);
      output_a(0xff);
      output_b(0xff);
      output_c(0xff);
   }

}



C93F

a

Code:

#include <main.h>
#include <18F2550.h>
#device ADC=10

#FUSES HS


void main()
{
   setup_adc_ports(NO_ANALOGS, VSS_VDD);
   set_tris_a(0);
   set_tris_b(0);
   set_tris_c(0);
   
   while(TRUE)
   {
      output_a(0x00);
      output_b(0x00);
      output_c(0x00);
      output_a(0xff);
      output_b(0xff);
      output_c(0xff);
   }

}


CC3F

a

Code:

#include <18F2550.h>
#device ADC=10

#FUSES HSPLL


void main()
{
   setup_adc_ports(NO_ANALOGS, VSS_VDD);
   set_tris_a(0);
   set_tris_b(0);
   set_tris_c(0);
   
   while(TRUE)
   {
      output_a(0x00);
      output_b(0x00);
      output_c(0x00);
      output_a(0xff);
      output_b(0xff);
      output_c(0xff);
   }

}


CE3F

dakle sada se lepo vidi da se "levi" bitovi (15-8) menjaju kada se menja tip oscilatora ..

jedino sto nema nikakve veze izmedju ovoga sto ja vidim ovde i onoga sto si ti video u datasheet-u za tip oscilatora :D ali bice da si gledao pogresan datasheet... ako pogledas ovde:
https://ww1.microchip.com/downloads/en/devicedoc/39632e.pdf

videces na strani 294:

Code:

FOSC3:FOSC0: Oscillator Selection bits(1)
111x = HS oscillator, PLL enabled (HSPLL)
110x = HS oscillator (HS)
1011 = Internal oscillator, HS oscillator used by USB (INTHS)
1010 = Internal oscillator, XT used by USB (INTXT)
1001 = Internal oscillator, CLKO function on RA6, EC used by USB (INTCKO)
1000 = Internal oscillator, port function on RA6, EC used by USB (INTIO)
0111 = EC oscillator, PLL enabled, CLKO function on RA6 (ECPLL)
0110 = EC oscillator, PLL enabled, port function on RA6 (ECPIO)
0101 = EC oscillator, CLKO function on RA6 (EC)
0100 = EC oscillator, port function on RA6 (ECIO)
001x = XT oscillator, PLL enabled (XTPLL)
000x = XT oscillator (XT)


sto tvoj config cita kao HSPLL
[ acek031 @ 17.02.2022. 07:40 ] @
@bogdan.kecman Hvala ti mnogo na trudu i vremenu što si izdvojio za mene.

datashet koji sam gledao je bio pogrešan i to ovaj: PIC18(L)F2X/4XK50 Flash Memory Programming Specification

to su ovi uređaji:
• PIC18F24K50 • PIC18LF24K50
• PIC18F25K50 • PIC18LF25K50
• PIC18F26K50 • PIC18LF26K50
• PIC18F45K50 • PIC18LF45K50
• PIC18F46K50 • PIC18LF46K50

računao sam da su PIC18F25K50 • PIC18LF25K50 slični sa PIC18F2550 samo naprednije verzije i da bi trebalo da radi.

, što se tiče prepoznavanja 18f2550 , možda neće zato što je klon. nije ni bitno samo da nateram ono čudo da prodadi.

probaću ovo pa javljam šta se dešava.


@ZAS011 , @milan-markovic hvala vam što ste se ponudili da pomognete.
Pickit2 sam uzeo gotov jer prvi put dolazim u dodir sa ovim mikrokontrolerom i da negnjavim druge ,da svaki čas programiram ako ne uspem iz prvog puta.
Ono što sam probao preko arduina i sličnih stvari, ili radi polovično (hex do 512B max) ili uopšte ne radi.
tako da mogu više puta da probam kad god imam vremena.


Hvala vam još jednom.
[ bogdan.kecman @ 17.02.2022. 09:24 ] @
Citat:
acek031: računao sam da su


nemoj nikad to da "racunas" cak ni za mnogo slicnije uredjaje, kada su dovoljni slicni nalaze se u istom datasheet-u :) .. uvek trazi da pise tacno to sto ti treba ... microchip ima odlicne datasheetove, mnooogo bolje nego mnogo renomiranije i vece firme tako da nadji uvek odgovarajuci datasheet



Citat:
acek031: samo naprednije verzije i da bi trebalo da radi.


razlika je generaciska, ti cipovi sa slovom su mnoogo noviji koriste mnogo napredniju tehnologiju proizvodnje i mnogo su bolji bang for buck u odnosu na stare ... dosta jeftiniji a bolji ... taj 18f2550 je starina koja postoji samo da bi ljudi koji koriste vec postojece stare uredjaje mogli da ih servisiraju da upucaju hex koji je prosao razna testiranja cuda m00da ... inace za nove proizvode ga nikako ne treba koristiti... mnogo kvalitetniji a jeftiniji cipovi postoje koji su "skoro pin to pin kompatibilni" (naravno mora se malo promeni sors i prekompajlira, ne moze se gurne stari hex)

Citat:
acek031:
, što se tiče prepoznavanja 18f2550 , možda neće zato što je klon. nije ni bitno samo da nateram ono čudo da prodadi.


da je neki drugi cip u pitanju to bi pilo vodu obzirom da neki klonovi imaju probleme sa cipovima koji nisu 5V ali 18f2550 je ono matora mrcina i morao bi da bude prepoznat .. moguce da pokusavas in-circuit da ga iscitas / detektujes / programiras i da mu je Vcc loadovan kolom u kom se nalazi pa pickit ne moze da ga napoji (probaj sa externim napajanjem?) i moguce da su mu icspdat/icspclock linije isto koristene u kolu i da su i one loadovane necim... idealno stavi 18f2550 samog i spoj mu samo vcc, vss, mclr, icspdat, icspclock na pickit2 i probaj tako :). .. od externih komponenti samo dodaj 100nF preko Vcc/Vss i vidi onda dal ce ga prepoznati...

dalje, zavisi gde si kupio taj 18f2550 (moja preporuka - komet), posto se desava npr u kelco-u cesto da imaju fake smece i za cipove i za trandze i .. tako da kupuj od respektabilnih proizvodjaca (comet je zastupnik za microchip sve kod njih od microchipa je original tako da za poluprovodnike comet ti je sigurica)

[ bogdan.kecman @ 17.02.2022. 09:26 ] @
Citat:
acek031:
ima i ceo kod na sourceforge.net od ovog programatora.


baci link na uredjaj koji pokusavas da napravis mozda uspemo da ti pomognemo da vidimo gde je problem :)
[ ZAS011 @ 17.02.2022. 10:17 ] @
Citat:
acek031:, što se tiče prepoznavanja 18f2550 , možda neće zato što je klon. nije ni bitno samo da nateram ono čudo da prodadi.

To što je klon ne pije vodu oko (ne)prepoznavanja.
Lepo ti napisah da čip MORA da bude priključen na programator PRE pokretanja aplikacije pošto aplikacija "gleda" koji je kontroler priključen prilikom .inicijalizacije.

Kao što ti je Bogdan napisamikročip ima odlične data šitove, jedino što mora da ih čitaš
[ acek031 @ 17.02.2022. 12:57 ] @
PIC je kupljen u Retam-u. Jedino su oni imali trenutno na stanju kada sam tražio ovaj PIC.

ceo projekat programatora je ovde: Open Programmer v0.11.5

kompletan projekat u MPLAB-u je ovde: https://sourceforge.net/projects/openprogrammer/

a ovaj hex sam pokušao da ubacim: compiled firmware





[ bogdan.kecman @ 17.02.2022. 13:16 ] @
hahah open programmer .. secam se pravio sam ja isto jednom davno na kraju sam odustao od njega i poklonio ga, mnogo bolje imati dragona i pickit nego ovo ali svakako projekat ko projekat...

elem, ako nije nista zabodeno na conn2/3 ne bi smeo da zeza morao bi da ga prepoznaje (svakako, prvo ga napojis, zabodes pickit2 i onda startujes pickit2 aplikaciju) ... takodje, ako ga i dalje ne vidi ides na tools/check communication tu bi morao da ga vidi... ako ga ne vidi vrlo moguce da je nesto na pcb-u sje123 ili da je sam pic sje123..

kada se iscita hex config je isti kao to sto ti vidis

- hex sigurno valja, da ne valja brdo ljudi bi kukalo i plakalo da ne valja
- pickit2 prog ga je procitao ok

da vidimo gde moze da bude problem, kada kazes pickit-u da ga napece i verifikuje da li to prodje ok ?
[ acek031 @ 21.02.2022. 19:37 ] @

Samo da vam javim da je programer proradio.
instalirao sam na virtuelnoj mašini aplikaciju za pickit2 i instalirao gtk za open prog aplikaciju.

uradio sam kako su savetovali zas011 i bogdan.kecman , povezao sam mcu sa pickitom, pa tek onda startovao aplikaciju za pickit2.
odmah je prepoznao koji je mikrokontroler. to se ranije nije dešavalo.
izbrisao sam mcu i ponovo učitao hex i upisao u mcu.
verifikacija je prošla ok kao ranije.
raskačio sam sve, i mcu sam ubo u openprog i povezao na usb port. VirtualBox je detektovao USB uređaj kao open programmer -pic18f2550 , tako nešto.
Kada sam startovao aplikaciju OpenProg, detektovao je programator, i pročitao je koji je pic na ploči, kao i verziju firmvera.

Ugasio sam VirtualBox i pokrenuo ponovo onu istu aplikaciju koja ranije nije detektovala programer.
A sada ga detektuje. Pustio sam njegov hardware test i nije prijavio greške.

Probaću ovaj Open Programator pa javljam kakva su iskustva.


Svako dobro.