Sterrenhemel

Het is geen baseline processor (dat is de 12F/16C familie), dus dat gaat zeker niet werken. Ik zal nog eens kijken if ik iets zie.
(het is nogal een complex gedoe met al die scripts. Voor iedere familie zijn er verschillende scripts voor read/write/eeprom/erase,...)
Probeer deze maar eens (write script aangepast, de oudere pic writes zijn 8 bytes, de nieuwe 32 bytes in een block):

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Nee, De Pickit komt meteen met "No Device Selected" wanneer ik deze 18857 kies.

En dee PIC is idd family '14'?

Het blijft een beetje grappig dat wanneer je kiest voor family 2, waar hij weliswaar niet in thuishoort, de Pickit een eind komt in het starten en dat je zelfs de PIC kunt erasen..

Hebben de gekozen parameters (Project settings) hier wellicht nog invloed op?

Man is still the most extraordinary computer of all. JF Kennedy

Het erase script kan voor nieuwe pics nog hetzelfde zijn maar het program (write) script is dat zeker niet, daar is het nodige veranderd...

Nee, De Pickit komt meteen met "No Device Selected" wanneer ik deze 18857 kies.

Je bedoelt waarschijnlijk "No device detected"?

[Bericht gewijzigd door Arco op 13 januari 2021 19:28:52 (35%)]

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Ja, inderdaad. "No Device Detected".
Tikfoutje.. :>

De melding komt ook metéén, dus niet eerst wat LED-knipperen en delay wat je ziet bij het detecteren van een bestaande PIC...

Man is still the most extraordinary computer of all. JF Kennedy

Ik lees uit diverse topics her en der dat dit item eigenlijk wel vaker voorkwam: een PIC die niet is bijgewerkt in de PK2DeviceFile.dat..
En dan is er wel eens iemand die dan een nieuwe .dat aanlevert. Maar veel topics zijn al jaren oud.

Betkent dit niet het uitsterven van deze Pickit3 stand alone?

Of zijn er (werkbare) alternatieven (behouden MPLAB IPE)...?

Man is still the most extraordinary computer of all. JF Kennedy

Ligt eraan welke cpu's je wilt gebruiken. Voor kleintjes als de 18857 kun je de boel makkelijk aanpassen, grotere is wat lastiger.
Het programma voor de Pickit3 is gebaseerd op het programma van de Pickit2, en die was beperkt in zijn geheugen.
Tevens is de firmware niet geschikt voor heel grote en complexe pics, omdat de structuur van de .dat file daar niet is op bedacht...

Er is in het begin een speciaal voor de pickit3 ontwikkelde versie geweest, maar die was om te huilen zo slecht. (niemand gebruikt die meer)
Er is alternatieve software als Pickit Plus, maar die is ook nog lang niet compleet, er ontbreken nog veel cpu's.
Een ander alternatief is de Pickit4 of de Pickit Snap, maar veel positiefs hoor je daar ook nog niet over...

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Voor kleintjes als de 18857 kun je de boel makkelijk aanpassen, grotere is wat lastiger.

Nou ja..makkelijk. Die 18857 heb ik nog niet aan de praat in PicKit...

Man is still the most extraordinary computer of all. JF Kennedy

Hoe simpel kan een programma zijn:

Deze heb ik gemaakt als test voor de 18857. Dan maar met de MPLAB IPE geprogrammeerd.

Ik dacht dat het werkte. Maar het ledje blijft knipperen. M.a,w: de PIC reset na de eerste de beste instructie lijkt het.

pic basic code:


Program Test18857

main:


ANSELA = 0
TRISA = 0

LATA.7 = 1
delay_Ms(1000)
LATA.7 = 0

While true Wend

end.
Man is still the most extraordinary computer of all. JF Kennedy

Ik heb wat lopen spelen met project settings. Niks lijkt te helpen.

Het is gewoon mijn dag niet denk ik... :(

Man is still the most extraordinary computer of all. JF Kennedy

Ik heb het testje wat uitgebreid:

pic basic code:


Program Test18857
Dim y1 as Byte

 main:


ANSELA = 0
TRISA = 0
Lata.7 = 0
LATA.2 = 1
Delay_Ms(250)
LATA.2 = 0
Delay_Ms(250)

while true
 For y1 = 0 to 10
   lata.7 = 1
   Delay_ms(500)
   lata.7 = 0
   Delay_ms(500)
   lata.7 = 1
   Delay_ms(500)
   lata.7 = 0
   lata.7 = 1
   Delay_ms(500)
   lata.7 = 0
   Delay_ms(500)
   lata.7 = 1
   Delay_ms(500)
   lata.7 = 0
 Next y1

Wend

Ik kan nu zien dat enkele instructies tussen de While en Wend nog worden uitgevoerd, maar na de tweede keer dat LAtA.7 hoog wordt, de PIC opnieuw opstart...

[Bericht gewijzigd door Bavelt op 14 januari 2021 00:40:58 (22%)]

Man is still the most extraordinary computer of all. JF Kennedy

Het lijkt nog anders te liggen:
De PIC reboot niet na x instructies, maar na ca 2-3 seconden.

Zou er een kans zijn dat 'iets' (timer-achtigs) dat ding na een bepaalde tijd opnieuw laat starten?

Man is still the most extraordinary computer of all. JF Kennedy
Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Nee, had ik uitgezet.
Wat een vervelend probleem...Zo kan ik geen programma meer maken met deze PIC.. ;(

Dit zijn de settings:

Man is still the most extraordinary computer of all. JF Kennedy

Watchdog timeout zou qua tijd wel kloppen (is ~2.11 sec)
MCLR staat ook aan, zit daar wel een pull-up aan?

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Ja, 10K naar de +5V

Maar WDT staat toch op disabled?

Man is still the most extraordinary computer of all. JF Kennedy
Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Ik grossier nu toch echt in gekke dingen, hoor.

De 'reset' blijkt een 'halve reset'.

In onderstaand programma (mag de naam amper hebben)

pic basic code:

main:


ANSELA = 0
TRISA = 0
Lata.7 = 0
LATA.2 = 1
Delay_Ms(1000)
LATA.2 = 0
while true

   lata.7 = 1
   Delay_ms(200)
   lata.7 = 0
   Delay_ms(400)
   lata.7 = 1
   Delay_ms(600)
   lata.7 = 0
   Delay_ms(800)
   lata.7 = 1
   Delay_ms(1200)
   lata.7 = 0
   Delay_ms(1400)
   lata.7 = 1
   Delay_ms(1600)
   lata.7 = 0
   Delay_ms(1800)


Wend

end.

Het Begint met lata.2 = 1 (in mijn geval oranje LEd)
Na 1 sec weer uit. Werkt.

Dan komt de While - Wend loop.

Na de 4e keer oplichten van de LEd aan LATA.7 zie je dat hij 'eventjes' oplicht, en begint dan weer van voren af aan... in de While-Wend loop (!).

(Een echte restart zou LATA.2 weer hoog moeten maken voor 1 sec), etc.

Nu snap ik het echt niet meer..

Man is still the most extraordinary computer of all. JF Kennedy

En nu doet-ie het wel...

pic basic code:

main:


ANSELA = 0
TRISA = 0
Lata.7 = 0
LATA.2 = 1
Delay_Ms(1000)
LATA.2 = 0

While True

for y1 = 0 to 9
  Delay_Ms(1000)
  lata.7 = 1
  Lata.2 = 0
  Delay_Ms(1000)
  lata.7 = 0
  Lata.2 = 1
next y1

for y1 = 0 to 9
  Delay_Ms(500)
  lata.7 = 1
  Lata.2 = 0
  Delay_Ms(500)
  lata.7 = 0
  Lata.2 = 1
next y1

for y1 = 0 to 9
  Delay_Ms(250)
  lata.7 = 1
  Lata.2 = 0
  Delay_Ms(250)
  lata.7 = 0
  Lata.2 = 1
next y1

for y1 = 0 to 9
  Delay_Ms(50)
  lata.7 = 1
  Lata.2 = 0
  Delay_Ms(50)
  lata.7 = 0
  Lata.2 = 1
next y1


for y1 = 0 to 9
  Delay_Ms(25)
  lata.7 = 1
  Lata.2 = 0
  Delay_Ms(25)
  lata.7 = 0
  Lata.2 = 1
next y1

Wend

end.

Geen idee waarom het nu wel werkt. Misschien moest de PIC even worden ingebrand. Of wennen aan de kamertemperatuur. Of het oosten van het land..
Laat ik het daar maar even op houden... :? :D

Man is still the most extraordinary computer of all. JF Kennedy

Nu ik de PIC16F18857 aan de praat heb, is het zaak om langzaam de functies uit het programma met de PIC16F1847 over te hevelen naar deze.

Nu worstel ik met het SPI-gebeuren.
Ik gebruik SPI2)
(volgens de Datasheet is dat RB1 voor SCK2 en RB2 voor SDI2).

In het programma gebruik ik:

pic basic code:


Dim SCKPin        As sbit at PORTB.1         'pin 22  SCK - Spi2I
    SDOPin        As sbit at PORTB.2          'pin 23  SDO - Spi2I

Verder SPI2_Init() en SPI2_Write() voor het schrijven naar de matrixen.

Maar toch doe ik iets verkeerd. (Alle leds op de matrixen branden).

Heb ik toch iets niet goed gedaan met de pinnen?
Je kan ze 'remappen' begreep ik al, maar ik dacht dat bovenstaande default waren.

(Ik zie wel dat men hier SDI als term gebruikt ipv SDO zoals bij de 1847)

Man is still the most extraordinary computer of all. JF Kennedy

SDI (of MISO) pin heeft een standaard mapping, de SDO (of MOSI) pin niet, die 'hangt los'...
Moet je met de PPS aan de gewenste pin knopen...

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Op 14 januari 2021 15:39:37 schreef Arco:
SDI (of MISO) pin heeft een standaard mapping, de SDO (of MOSI) pin niet, die 'hangt los'...
Moet je met de PPS aan de gewenste pin knopen...

OK, maar in dit geval is het dus een SDI, die default op RB2 zit volgens de datasheet...

Man is still the most extraordinary computer of all. JF Kennedy
Man is still the most extraordinary computer of all. JF Kennedy

Wat verderop hebben ze het wel weer over SDO..

[Bericht gewijzigd door Bavelt op 14 januari 2021 16:00:52 (13%)]

Man is still the most extraordinary computer of all. JF Kennedy

Stel dat ik die SDI (of SDO) wil verhuizen van RB2 naar RB3, hoe doe ik dat dan?

Man is still the most extraordinary computer of all. JF Kennedy

SDI en SDO zijn twee verschillende dingen: SDI is een input, en SDO is een output van de SPI bus...
SDO valt niks aan te verhuizen, want die zit als gezegd default nergens aan vast. Die moet je met PPS verbinden.
SDO1 naar Latb.7 bijv. is:

pic basic code:


RB7PPS = 0x15

In MikroBasic wordt dat:

pic basic code:


Unlock_IOLOCK()
PPS_Mapping(_RB7, _OUTPUT, _SDO1)
Lock_IOLOCK()

[Bericht gewijzigd door Arco op 14 januari 2021 16:51:39 (17%)]

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com