- Messaggi: 298
- Ringraziamenti ricevuti 9
PCF8574A controllato da MSP430
- borelg
-
Autore della discussione
- Elit Utente
-
Sto provando a fare qualcosa di più semplice, ma non riesco neanche a ricevere l'ACK dopo aver inviato lo Start Condition:
Mi si blocca nel while e non si smuove.
L'indirizzo è 0x38 perchè ho messo a massa A2 A1 A0 ed è un PCF8574A.
Qualche idea?
Grazie

Si prega Accesso o Crea un account a partecipare alla conversazione.
non ho visto i singoli bit ma ti dico che tra gli esempi di Code Composer Studio per MSP430G2xx3 c'e' proppio un programma essenziale per PCF8574. Leggge 4 bit in ingresso e li rispedisce in uscita agli altri 4 bit.
Usa quello come esempio. Il programma e' compilabile sia per CCS che IAR quindi lo puoi riciclare completamente.
Per accedere all'esempio scarica l'ultima versione di CCS 5.2.
Vai al menu Help-> Welcome to CCS
Poi seleziona MSP430Ware nel Packages nella finestra che si apre.
Vai a device, seleziona MSP430G -> Code Examples -> MSP430G2x53
Saluti,
Mauro
Si prega Accesso o Crea un account a partecipare alla conversazione.
- borelg
-
Autore della discussione
- Elit Utente
-
- Messaggi: 298
- Ringraziamenti ricevuti 9
In realtà comunque non ho capito molto bene il funzionamento di quel programma. In teoria per usare come ingressi tutti i pin del pcf8574 la procedura di ricezione non è questa?
-Invio start condition come tx
-Invio start condition come rx
-Il pcf8574 mi spedisce i valori degli ingressi
-Invio stop condition.
Nell'esempio invece spediscono direttamente lo start come rx (per ricevere i primi 4 ingressi) e poi lo start come tx per spedire i 4 ingressi ricevuti e visualizzarli come uscite.
Qualche idea?

Grazie.
Per comodità metto anche il codice dell'esempio:
Si prega Accesso o Crea un account a partecipare alla conversazione.
vorrei in primo luogo considerare la libreria esatta.
hai costruito l'hardware su millefori?
Potresti testare con PIC18 e la libreria per C18 che il tuo hardware funziona correttamente?
Attento alle due versioni di PCF8574A e non A.
Una volta che funziona con la libreria C18, sappiamo che l'hardware e' coretto.
Purtroppo fare un debug con nuovo hardware e software e' sempre complicato.
Se apri la libreria che ho scritto vedi anche la sequenza corretta per comunicare in lettura e scrittura con il PCF8574.
Saluti,
Mauro
Si prega Accesso o Crea un account a partecipare alla conversazione.
- borelg
-
Autore della discussione
- Elit Utente
-
- Messaggi: 298
- Ringraziamenti ricevuti 9

Comunque può darsi che l'errore sia nella procedura di comunicazione. Infatti nel datasheet c'è scritto:
Cioè basta mandare lo start condition, l'indirizzo con il bit R/W appropriato e se sono in write spedire le uscite, altrimenti aspettare che lui mi spedisca gli ingressi.I2C communication with this device is initiated by a master sending a start condition, a high-to-low transition on
the SDA I/O while the SCL input is high. After the start condition, the device address byte is sent,
most-significant bit (MSB) first, including the data direction bit (R/W). This device does not respond to the general
call address. After receiving the valid address byte, this device responds with an acknowledge, a low on the SDA
I/O during the high of the acknowledge-related clock pulse. The address inputs (A0–A2) of the slave device must
not be changed between the start and the stop conditions.
The data byte follows the address acknowledge. If the R/W bit is high, the data from this device are the values
read from the P port. If the R/W bit is low, the data are from the master, to be output to the P port. The data byte
is followed by an acknowledge sent from this device. If other data bytes are sent from the master, following the
acknowledge, they are ignored by this device. Data are output only if complete bytes are received and
acknowledged. The output data will be valid at time, tpv, after the low-to-high transition of SCL and during the
clock cycle for the acknowledge.
A stop condition, a low-to-high transition on the SDA I/O while the SCL input is high, is sent by the master.
MI sbaglio?
Il fatto di utilizzare le porte come ingressi implica che prima io debba impostarli a livello logico "1" vero? A me sembrava che questa inizializzazione avvenisse di default all'accensione del componente, avevo capito male?
Grazie

Si prega Accesso o Crea un account a partecipare alla conversazione.
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Forum - Ultimi messaggi
-
- progetto can
- da marcelloraja
-
- MODULO GSM SIM900A
- da Mauro Laurenti
-
- Freedom III e compilazioni fallite
- da Mauro Laurenti
-
- Gestione degli errori su comunicazione seriale
- da Mauro Laurenti
-
- Timer0 e interrupt
- da Mauro Laurenti