Vai al contenuto
PLC Forum


simulatore di pigiata tasto automatico. (un contatto NO)


agoman

Messaggi consigliati


  • Risposte 153
  • Created
  • Ultima risposta

Top Posters In This Topic

  • agoman

    74

  • del_user_97632

    27

  • dott.cicala

    20

  • gabri-z

    14

5 minuti fa, agoman ha scritto:

come hai fatto a capirlo ahahahah,

Ci hai mostrato tu le scorte , mi hai pure invitato quella estate per aiutarti ad alleggerire gli scaffali , mi ricordo almeno due , probabilmente colore grigio o celeste .ma sono tre o quattro anni... 

Link al commento
Condividi su altri siti

13 minuti fa, agoman ha scritto:

mi basta buttare il file dentro il pic usando il pik kit 3 giusto?

Si. Credo dovresti eseguire mplab IPE, che dovrebbe essere installato da mplabx, importare l'hex e programmare il micro.

 

https://microchipdeveloper.com/ipe:importing-hex-file

Editato: ho trovato un 16f84a, provero dopo a mettere in piedi circuitino per testare il fw.

 

 

 

Link al commento
Condividi su altri siti

24 minuti fa, _angelo_ ha scritto:

Editato: ho trovato un 16f84a, provero dopo a mettere in piedi circuitino per testare il fw.

ok grazie angelo aspetto le tue prove intanto ringrazio a tutti per quest'impresa che ho tirato fuori.

 

Link al commento
Condividi su altri siti

bene fatta la prova, naturalmente come di mio solito c'era un errore su TRISA che va settato a 0.

 

Ecco il codice corretto

/*
 * Viva PLCFORUM ! 
 * 
 * compila con
 *   /opt/microchip/xc8/v2.10/bin/xc8-cc \
 *       -mcpu=16f84a -Os -std=c90 -mstackcall -mwarn=1 main.c
 * 
 * sudo pk2cmd /PPIC16F84A /Fmain.hex /M
 */
#include <xc.h>

// CONFIG
#pragma config FOSC = XT
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config CP = OFF

/* usa quarzo 4 Mhz o cambia anche il valore qui */
#define _XTAL_FREQ 4000000

static void init()
{
	/* PORTA 0 output */
	TRISA = 0x00;
	/* PORTA 0 alto */
	PORTA = 0x01;
}

static inline void pulse()
{
	PORTA &= ~0x01;
	__delay_ms(500);
	PORTA |= 0x01;
}

void main()
{
	int i;
	
	init();
	
	__delay_ms(500);
	
	for (i = 0; i < 4; ++i) {
		pulse();
		__delay_ms(500);
	}
	
	for (;;);
}

e l'hex

http://195.201.34.187/~angelo/main-16f84a.hex

 

_XTAL_FREQ va settato con il valore del clock che userai, io ho un quarzo 4Mhz. Casomai dimmi il clock che intendi usare e te lo ricompilo.

 

Ti spiego un po' il programma cosi' puoi casomai facilmente modificarlo.

 

1) il PIC appena avviato fa una serie di inizializzazioni (runtime C) che non ti interessano,

poi salta alla funzione "main()".

2) viene chiamata una funzione init()

TRISA = 0x00;   

TRISA setta la direzione della porta, tutti i pin associati alla porta (RA0 RA1 RA2 etc) vengono configurati come "output".

E' un registro 8 bit, consideralo una mappa di bit, ogni bit, partendo dal meno significativo, indica la porta, RA0, RA1, RA2 e cosi via. Cioe', ad esmepio, se setto TRISA = 0x7 significa  TRISA = binario 00000111  quindi le tre porte RA0 RA1 RA2 sono settate come input, le altre come output.

PORTA = 0x1;

PORTA e' il registro 8 bit che contiene i valori che avrai nelle uscite/ingressi.

PORTA = 0x1;  significa che la porta RA0 viene portata a livello alto, nel nostro caso 5V (alimentazione).

esempio, PORTA = 0x3 (binario 00000011) ;  significa che le porte RA0 e RA1 vengono portate a 5V

 

3) __delay_ms

questa funzione crea una pausa abbastanza precisa, viene creata dal compilatore con istruzioni base, a seconda

del valore di _XTAL_FREQ

4) for (i = 0; i < 4; ++i) { ...}

Questo in linguaccio C e' un loop, cioe' un operazione che vuoi che sia ripetuta ciclicamente un certo numero di volte, nel nostro caso 4

5) pulse()

Questa funzione genera l'impulso  ----____----  con 0 volt (attivazione rele') per 500ms.

PORTA &= ~0x01;

Significa metti a 0 il primo bit, ovvero il bit0.  In pratica per metterlo a 0 si fa un AND logico del valore binario 11111110 con il valore di PORTA. L'operatore ~ nega il valore 8 bit 0x01 che diventa 0xfe e appunto in binario 11111110. Quindi solo il bit meno significativo, bit0 ovvero RA0 viene portato a 0.

PORTA |= 0x01;

Significa metti a 1 il primo bit.

 

La differenza tra PORTA = 0x01 e PORTA |= 0x01; e' che nel primo caso scrivi tutti gli 8 bit, nel secondo caso si fa un or logico, per non toccare gli altri bit della porta.

 

Spero quanto sopra ti aiuti a capire il codice ed eventialmente a modificarlo. Credo sia nelle tue piene capacita'.

 

 

Modificato: da _angelo_
Link al commento
Condividi su altri siti

16 ore fa, _angelo_ ha scritto:

Si. Credo dovresti eseguire mplab IPE, che dovrebbe essere installato da mplabx, importare l'hex e programmare il micro.

ma l'ultima volta che ho programmato il processore copiando il file se non ricordo male ho sfruttato solo il pic kit 3 senza altri programmi.

 

Link al commento
Condividi su altri siti

Qui devi anche compilarlo, non solo copiare un file .Hex nella memoria del micro.

Per fare questo devi copiare il listato nell'editor dello MPLab,poi lanciare la compilazione ed il trasferimento nel target.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

ok quindi mi serve il programma, qualcuno mi dice se e' funzionante per xp? e mi indica dove scaricare? grazie la vedo dura :D

datemi i passaggi poco alla volta perche' gia' so' confuso ahhaha

povero me.

 

 

Modificato: da agoman
Link al commento
Condividi su altri siti

del_user_97632

l'hex e' praticamente il binario (gia compilato), e' il binario puro trasformato in formato intel-hex gradito al programmatore

http://195.201.34.187/~angelo/main-16f84a.hex

 

Quindi basta fare "import hex" e programmare, non serve ricompilare il sorgente.

 

1) installa MPLAB IDE che contiente anche IPE

 

https://www.microchip.com/mplabx-ide-windows-installer

 

funziona su xp, tranquillo

 

2) dai menu di MPLAP IDE da qualche parte apri IPE, importa l'hex, seleziona pickit3 e programma. (poi vediamo nel dettaglio quando ci arrivi)

 

Modificato: da _angelo_
Link al commento
Condividi su altri siti

9 minuti fa, _angelo_ ha scritto:

Quindi basta fare "import hex" e programmare, non serve ricompilare il sorgente.

quindi basta collegare il programmatore pik kit 3 e importare dentro il file giusto?

ricordo una volta che avevo fatto in questo modo so' passati degli anni ricordo che ho programmato il processore del bromografo e funziona ancora.

 

 

Modificato: da agoman
Link al commento
Condividi su altri siti

26 minuti fa, _angelo_ ha scritto:

1) installa MPLAB IDE che contiente anche IPE

ok provo cavolo quasi un giga? devo aspettare un po'.

Modificato: da agoman
Link al commento
Condividi su altri siti

del_user_97632

Oooh, bella ! Dalla schiuma pare anche piu buona della mia. Si bambine a letto alle 8 e mezza, per cui pizza mangiata verso le 7.

 

 

 

Link al commento
Condividi su altri siti

2 ore fa, _angelo_ ha scritto:

Vai, :)  per me ora e' tempo di pizza e una sana reintegrante birra

buona pizza io ancora devo cenare stavo cercando dei processori ahahahah.

2 ore fa, dott.cicala ha scritto:

Salute!

salute ma stasera festa?

 

finalmente a scaricato che dite mi fido? ho sbambo il pc. ahahah

 

Nessuna descrizione della foto disponibile.

Link al commento
Condividi su altri siti

40 minuti fa, agoman ha scritto:

salute ma stasera festa?

Si , è festa della Repubblica ...a casa mia :superlol:

43 minuti fa, agoman ha scritto:

che dite mi fido?

Io l'ho fatto.

Link al commento
Condividi su altri siti

scusate ero a cena con amici mi ero fermato chiedevo 3 info 

qui devo lasciare per come'

L'immagine può contenere: telefono

 

qui devo cambiare qualcosa?

Nessuna descrizione della foto disponibile.

 

e questo?

Nessuna descrizione della foto disponibile.

che vol dire.

 

Link al commento
Condividi su altri siti

del_user_97632

Vuol dire quel che avevo detto nel mio post iniziale. Programmi mastodontici microchip per compilare un programmino del piffero.

Comunque proseguiamo su questa strada che siamo forse a buon punto.

 

Sostanzialmente hai esaurito lo spazio su disco. Prova cosi:

  • svuota cestino
  • apri C:\WINDOWS\temp e cancella tutto il contenuto,
  • ri-svuota cestino

Reinstalla mplabX spuntando solo le prime 3 voci :  IDE IPE e 8bit MCU

 

image.png.1c800169f47e1fdf07f12fea5a34f38e.png

 

Modificato: da _angelo_
Link al commento
Condividi su altri siti

domani ci provo devo togliere della roba ormai ho la memoria ko devo liberare e devo guardare cosa posso togliere , prima o poi prendo un ard disc esterno.

ma le tre spunte che hai tolto erano indispensabili? a cosa servivano se ci devono stare libero un po' di memoria se non sono utili bene faccio come mi dici.

 

Link al commento
Condividi su altri siti

del_user_97632

I PIC piu antichi erano gli 8 bit (set di istruzioni a 14 bit ma registri (core) a 8 bit). Cioe' tutti i 12Fxxx e 16Fxxx. Per ora installa tutto il supporto solo per loro. Comunque ti fanno "sorbire" :) ben 1G di : IDE + xc8 + altri misteriosi tools. Avrai tempo piu avanti, grazie al signor microchip che ti comanda un nuovo SSD, se vorrai installare supporto per PIC 16 o 32bit.

 

Togliendo le spunte in hd ti zta abbondantemente.

 

Eh, anche io invecchiando divento brontolone, lasciamo stare e torniamo al nostro obiettivo.

 

 

Modificato: da _angelo_
Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

×
×
  • Crea nuovo/a...