Vai al contenuto
PLC Forum


Rabbit (Progetto on-line)


Gabriele Riva

Messaggi consigliati

uso i Pcf per fare pratica con I2C , e poi per lasciare le porte tranquille nel senso che

una porta puo avere la seriale , oppure un pwm , oppure un ingresso veloce

quindi mi troverei ad avere poche possibilita di avere tutti gli 8 bit della porta a disposizione

Lo so che si puo scrivere un byte sulla porta e mascherare i bit interessati , ma ....

...e' una fissa che io

Certo non e' un discroso commerciale il mio , se dovessi stare negli spazi e nei costi userei

le porte del micro fino all'osso , ma per didattica e anche perche avevo un paio di pcfxxxx a lazzaronare in giro

per i cassettini della roba elettronica ho voluto usarli

PORCA miseria , per il Driver enable ho usato l'uscita PG6 che nella demoboard e' utilizzata

dal led , posso farlo ??

e poi se le uscite sono a 3.3 V come posso dare i +5V al DE del max485 :blink::blink::blink: ???

Link al commento
Condividi su altri siti


  • Risposte 400
  • Created
  • Ultima risposta

Top Posters In This Topic

  • walterword

    154

  • dlgcom

    85

  • Livio Orsini

    46

  • ifachsoftware

    36

e poi se le uscite sono a 3.3 V come posso dare i +5V al DE del max485

Tranquillo Bro' , le entrate del max 485 sono cmos compatibili ovvero lavorano da 2volt in su'.

E le entrate del rabbit sono 3,3v ma compatibili con 5v quindi sei a posto.

Per il led non hai problemi , non assorbe corrente , quindi puoi usarlo ti fa anche comodo per sapere quando trasmetti.

Link al commento
Condividi su altri siti

si Luca

in effetti un led per la trasmissione ed 1 per la ricezione non guastano

fiiiiiiiiiiiuuuuuuuuuuuu

meno male , allora finisco di saldare i componenti fissi , a vita :) , sulla motherboard

e poi vedo di far girare il programmino esempio Rs485master.c

Magari lo schiaffo in un bel costate (di filetto ) , ed in un altro costate (di manzo )

ci piazzo il ciclo while che aspetta i byte di ritorno dallo chiavo PIC

:D:D:D

Link al commento
Condividi su altri siti

ho finito il montaggio

piccoli problemi , un paio di cortocircuiti , risolti

ho caricato un programma

adesso sto adeguando , in base alla libreria I2C.lib del Rabbit , quella che avevo scritto per il PIC

i led sono accesi tutti e 8 , i dip collegati , il bus I2c non e' piu in corto e il max485 e' li che aspetta

bene :D:D:D

Link al commento
Condividi su altri siti

E' CON GRANDE GIOIA CHE ANNUNCIO LA BUONA RIUSCITA DELLA PRIMA FUNZIONE SU I2C

write_PCF8574(0x00,valore);

funziona che e' una meraviglia :rolleyes:;)

l'ho scritta in modo speciale per scrivere su PCF8574 , linkandomi alla libreria gia fatta del Rabbit

I2C.lib , bene bene bene

ciao a tutti

walter

Modificato: da walterword
Link al commento
Condividi su altri siti

Studiando il Rabbit , ho scoperto con disappunto... che ha un sacco di seriali , ma tutte uguali .. o quasi.

Per esempio il PIC 16f877 876 , ha un modulo hardware per comunicare via I2C e SPI.

Invece il Rabbit ha solo spi , ma I2C e' solo via software ..... visto che c'erano......

Link al commento
Condividi su altri siti

saltan fuori gli altarini

bisogna quindi analizzare bene i modi di utilizzo

in I2C , ho modificato la libreria , e devo dire che non fa una piega

Comunque credo prima di usufruire a pieno del Rabbit passi un po di tempo

ma vedremo

cia

walter

Link al commento
Condividi su altri siti

no , questa libreria non l'ho ancora vista

se riesco vorrei nel week end a far comunciare il rabbit con i 2 slave PIC anche semplicemente

giusto per provare la comunicazione

poi al limite implementare il modbus si puo fare , e' questione di processare i buffer ric e trasm.

devo ancora finire la libreria per I2C per leggere dal PCF8574

ciao

walter

Link al commento
Condividi su altri siti

signori

L' I2C e' nelle mie mani :D

leggo e scrivo da Rabbit il device PCF8591 ( 4 in analog + 1 out analog)

e leggo e scrivo da Rabbit il device PCF8574 (8 output digital oppure 8 input digital oppure misti )

domani provo l'RS485 tra Rabbit e 2 PIC , poi sbatto dentro il tcp\ip tra Rabbit & PC e dichiaro concluse

le mie prove , nonche il mio mini progetto "estivo "

Cosi , tra un lavoro e l'altro , potro dedicarmi nei particolari di rabbit e PIC , e vi annuncio che gia c'e'

qualcosa che bolle in pentola :rolleyes:

ciao

walter

Link al commento
Condividi su altri siti

Ciao Walter ,

sto seguendo questa discussione da "esterno" poichè ho cominciato da poco ad approcciare i microprocessori e permettimi di farti i complimenti per la tua costanza e forza di volontà nel perseguire gli obiettivi che ti sei prefisso.

A ferragosto mi sono collegato al forum e ho visto sia te che Dario attivi in una giornata insolita per le attività di concetto .

Ho una (ne avrei molte) domanda da farti e cioè è stato difficle implementare la libreria per il bus I2C o meglio l'hai dovuta scrivere integralmente oppure avevi già qualcosa a livello di struttura software per poterla scrivere ?

Il bus I2C mi sembra qualcosa di veramente interessante per interfacciare i micro con l'esterno e ho inoltre visto che c'è una ampia gamma di integrati che mettono a disposizione funzioni di I/O veramente potenti .

Per una serie di motivi stò sperimentando (o meglio cercherò) di interfacciare su I2C un micro Atmel serie AVR (8 bit) con chip per ottenere delle funzioni di I/O analogico ed spansione di I/O digiltale e quindi mi interessa la tua esperienza su questo tipo di bus .

Dario mi a sconsigliato di intraprendere l'argomento micro vista la mia inesperienza sull'argomento , apprezzo il consiglio ma volevo comunque verificare se sono ancora in condizioni cerebrali per poter apprendere un argomento nuovo, tenuto conto che riuscissi ad imparare solo il 5% di quello che hai imparato tu dovrei ruscire nell'impresa.

Grazie per ogni tuo suggerimento e consiglio .

bigalex :blink:

Link al commento
Condividi su altri siti

ciao

:) volevo solo dire che bisogna cominciare dall'inizio

per quanto concerne i2bus e' molto semplice leggere e scrivere .

scaricando il pdf di qualche chip e2bus trovi tutte le info che ti servono.

qualche micro ha gia' dei pin dedicati a questo ed i registri adeguati dentro a se'.

io per la mia scheda ho preferito svilupparmi la routin da solo .

ciao

dario

p.s. che tools usi per atmel??

Link al commento
Condividi su altri siti

ciao a tutti

x bigalex : ho iniziato circa un mese questa avventura coi Micro , iniziando con PIC e poi Rabbit

del quale avevo acquistato il kit completo l'anno scorso .

Ho faticato molto e dedicato motle ore a questo progetto , studiando , girando in internet ect

Ho iniziato a tribulare sul come caricare un programma nel Pic , poi la seriale che mi ha assillato tutta la settimana di ferragosto , poi I2c ect ect

I2C : trovi le specifiche del protocollo in alcune versioni di studi scolastici superiori o universitari anche in italiano

ouure puoi scaricarti tranquillamente le specifiche complete in inglese

Ogni device che supporta tael protocollo (bus) ha comunque nel suo datasheet una tetica ma chiara

spiegazione sui passaggi e su come gestire il tutto .

I micro hanno gia delle librerie per poter utilizzare le funzioni di base , scl_high() , start() che non e' altro che una

sequenza di scl_high() , sda_high ()

Il prtocollo ti dice praticamente tutto

Se guardi la libreria del Rabbit relativa al I2C potrai renderti conto di come scrive le funzioni di start(), di linea_clock o dati alta p bassa ect

Poi in base al device devi mettere insieme queste funzioni ottenendo il risultato della tua bella funzione finale richiamabile da codice .

ti posto un esempio grezzo delle libreria che ho scritto per il PIC

#define SDA_PIN 0x07.4

#define SDA_DIR 0x87.4

#define SCL_PIN 0x07.3

#define SCL_DIR 0x87.3

void i2c_high_sda(void)

{

// scritta in assembly per fare un po di pratica

#asm

BSF SDA_DIR

#endasm

}

void i2c_low_sda(void)

{

//qua setto la direzione della porta precedentemente assegnata da macro (in alto ) e l'uscita

#asm

BCF SDA_DIR

BCF SDA_PIN

#endasm

delay_10us(5);

}

void i2c_high_scl(void)

{

// settando cosi la direzione setto un'alta impedenza

#asm

BSF SCL_DIR

#endasm

// delay_10us(5);

}

void i2c_low_scl(void)

{

#asm

BCF SCL_DIR

BCF SCL_PIN

#endasm

// delay_10us(5);

}

void i2c_start(void)

{

i2c_low_scl(); // lo start consiste nel portare bassa la linea clock ,

i2c_high_sda(); //alta la linea dati

i2c_high_scl(); //alta la linea clock

i2c_low_sda(); // bassa la dati

i2c_low_scl(); // bassa la clock , cosi il device remoto (slave) riconosce lo start da parte del master

//cosi come da grafici del protocollo

}

byte i2c_in_arrivo(void)

{

byte i_byte, n;

i2c_high_sda();

for (n=0; n<8; n++)

{

i2c_high_scl();

if (input(PIN_C4)==1)

{

i_byte = (i_byte << 1) | 0x01; //qua vado a generare il byte in base ad ogni bit che ricevo durante

} // lo stato alto della linea di clock

else

{

i_byte = i_byte << 1;

}

i2c_low_scl();

}

return(i_byte); // e lo restituisco

}

i dati sono ritenuti buoni quando la linea di clock e' alta , non a caso e' un protocollo seriale sincrono

cioe sincronizzato dalla linea di clock

Poi ci sono altre informazioni che noterai dalle specifiche

Insomma piu facile a farsi che a dirsi

Spero di aver reso l'idea

ciao

walter

Modificato: da walterword
Link al commento
Condividi su altri siti

x Luca

sembrerebbe che ci sia anche la possibilita di conflitti tra la porta parallela A ed F

Consigliano di configurare la porta A come ingressi per poter usufruire delle piene funzionalita della porta F

:unsure: ..se ho captio bene

senti ma quella libreria del modbus dove l'hai trovata ?

in the folder samples i didn't found that sample

Che compilatore hai ?

io sono rimasto al Dynamic C Special Edition V 7.33TSE3

hai per caso il V8.1 ?

:rolleyes:

ciao

walter

Modificato: da walterword
Link al commento
Condividi su altri siti

Grazie Walter, intanto vedo di comprendere quello che mi hai gentilmente postato e di documentarmi doverosamente sulle specifiche di protocollo, infatti di documentazione (in inglese) su I2C ne ho trovata in quantità industriale .

Nello specifico dispongo di una scheda con interfacce ethernet e seriale a bordo, che mette a disposizione dei pins di I/O (15) che possono essere gestiti dall'utente andando ad integrare in assembler del codice per usufruire di queste risorse .

Il micro dispone di 8KB di memoria programma , ma solo 1KB è disponibile all'utente poichè i primi 7KB sono già occupati dalla gestione della porta ethernet (protocolli HTTP SMTP etc.).

Il software di sviluppo deve generare il file assembler e passa attraverso un compilatore che devo ben comprendere inquanto tutta la documentazione è in inglese e non sempre chiara a livello procedurale, ma credo che occorra appendere le routine software utente (in assembler) per poter fruire del micro .

La mia idea è quella di poter leggere/scrivere dal campo quache I/O , ma poichè le funzioni analogiche non ci sono volevo passare al bus I2C per estendere gli I/O del micro digitali e/o analogici .

Ho visto sommariamente la struttura del micro Atmel serie AVR (AT90S8515) e mi pare potente (esecuzione di ogni istruzione in un solo ciclo macchina) sia dal lato hardware che software , è sempre un RISC ma ha comunque un set istruzioni completo .

Mi permetto di seguire comunque questa discussione come "esterno" e vi ringrazio per la vostra disponibilità .

bigalex :blink:

Link al commento
Condividi su altri siti

tieni in considerazione che la libreria I2C che ho scritto non usufruisce di alcuna seriale sincrona

hw , ma software .

quindi puoi usare i pin che vuoi a prescindere da quelli predisposti per la sua gestione hw.

La stessa cosa dicasi per la seriale rs232

Se il micro dispone di una gestione hw , interrupt ect , puoi anche qui gestirla via software con i pic che vuoi

basta che ti leggi le specifiche rs232 per sapere le tempistiche per trasmettere un bit piuttosto che riceverlo

se e' il bit di start o un bit dato .

Certo se lo fa l'hw e' meglio , anche per un discroso di risorse

ciao

walter

Modificato: da walterword
Link al commento
Condividi su altri siti

Ciao Walter ,

Complimenti per i risultati.

Io ho aggiornato il C alla versione 8.61 disponibile sul sito ufficiale .

Anche la libreria la trovi nel forum ufficiale , ma te la sto' mandando per e-mail.

Non e' per rabbit 3000 ma facilmente adattabile.

Per la porte A F c'e' un bug che ne impedisce il corretto funzionamento , ma solo in certe condizioni, pero' devo rileggere il manuale per sapere quali sono.

Link al commento
Condividi su altri siti

ciao fratello

ho dato un'occhiata al sito del rabbit

solo che c'e' un po di confusione , come del resto nei file pdf della guida

cioe dici che allora si puo scaricare tranquillamente la versione aggiornata avendo la v.7.33 ???

:rolleyes:

se ti va postami il link esatto che lo scarico subito

ciao e grazie

walter

Link al commento
Condividi su altri siti

ok ho trovato il sito giusto

nel momento in cui mi chiede la mia attuale versione , vedo nella list box arrivare fino alla 7.31

mentre io ho la 7.33 del dynamic C special edition

Comunque ho scaricato lo stesso i 15 mega e passa della versione V8.61

attendo ulteriori info , Luca, non vorrei combinare qualche stronzata

per i manuali pdf , quali mi consigli ?

ma il file v8.61 , cioe lo lancio tranuillamente e lui si installa tenendo in considerazione la versione vecchia?

oppure e' libero ?

Link al commento
Condividi su altri siti

ho spedito adesso il talloncino che era nella scatola del kit

con i niei dati , oltre alla registrazione on-line

Conoscendo le poste italiane mi sa che non arrivera nemmeno a milano

Ho messo anche il francobollo giusto

tutto questo perche non ho il codice che mi chiede in fase di installazione :angry::angry::angry:

Link al commento
Condividi su altri siti

Nella scatola del kit c'era un cartoncino arancio evident dove c'e' scritto il serial number del compilatore.

Con quello puoi aggiornare alla versione nuova , pero' io avevo gia la versione 8 quando ho comprato il kit..

Non so' se lo stesso codice della 7 funziona...

Link al commento
Condividi su altri siti

io ho trovato un cartoncino bianco , prefrancobollato per gli States , da affrancare in caso contrario

dove chiedevano gli interessi e le applicazioni e dove era stato acquistato il kit

sopra c'e' scritto di spedirlo per eventuali aggiornamanti

boh

Link al commento
Condividi su altri siti

Anche nel mio c'era questo cartoncino , ma anche quello arancio che ti dicevo.

Non so' se la versione SE era libera e la 8 invece no' .

Confermo che per installare la 8 mi chiedeva questo codice e con lo stesso ho installato la nuova versione.

Un appunto , la nuova versione si installa senza cancellare la vecchia , io per un po' ho lasciato le due versioni nel pc per poi disinstallare la 8.31 .

Link al commento
Condividi su altri siti

piu che altro per l'editor

magari la V 8 .xx era piu dinamica

La V7.33 ti sembra di lavorare con il block notes di windows

non puoi nemmeno usare la rotellina del mouse per scorrere e i comandi copia & incolla sono solo via tastiera

Cioe il CCs PCM e' molto meglio come editor

va be ...pazienza :angry::angry::angry:

bisognerebbe vedere quanto costa e quali sono le prassi di installazione della versione 8.31 per poi arrivare alla

V8.61 , non so se mi spiego

ciao

walter

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...