Εμφάνιση αποτελεσμάτων : 1 έως 4 από 4

Θέμα: I2C (TWI) Πρωτόκολλο επικοινωνίας

  1. #1
    Μέλος Το avatar του χρήστη Ηλιάδης Μάνος
    Όνομα
    Μάνος
    Εγγραφή
    May 2009
    Περιοχή
    Λευκωσία - Κύπρος
    Μηνύματα
    36

    Προεπιλογή I2C (TWI) Πρωτόκολλο επικοινωνίας

    Για σε όλους.
    Χρειάζομαι την βοήθεια σας, ασχολούμαι με AVR και θέλω να ελέγξω κάποιους αισθητήρες και μια EEPROM θα ήθελα κάποια παραδείγματα με I2Cˌ αλλά τα χρειάζομαι σε assembly.
    Ευχαριστώ εκ των προτέρων.

    0 Not allowed! Not allowed!

  2. #2
    Μέλος Το avatar του χρήστη georgz
    Όνομα
    Γιώργος
    Εγγραφή
    Oct 2009
    Περιοχή
    outer space
    Μηνύματα
    665

    Προεπιλογή

    Έχω σε C για pic, λογικά η λογική είναι η ίδια. Μόνο οι καταχωρητές θα αλλάζουν.

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη Ηλιάδης Μάνος
    Όνομα
    Μάνος
    Εγγραφή
    May 2009
    Περιοχή
    Λευκωσία - Κύπρος
    Μηνύματα
    36

    Προεπιλογή

    Η κάθε βοήθεια είναι σημαντική, στείλε το πρόγραμμα να το κοιτάξω.
    Είμαι στο στάδιο που μαζεύω πληροφορίες.
    Φίλε georgz σε ευχαριστώ πολύ για τον χρόνο που διέθεσες.

    0 Not allowed! Not allowed!

  4. #4
    Μέλος Το avatar του χρήστη georgz
    Όνομα
    Γιώργος
    Εγγραφή
    Oct 2009
    Περιοχή
    outer space
    Μηνύματα
    665

    Προεπιλογή

    #define _XTAL_FREQ 48000000
    #include <htc.h>
    void init();
    void i2c();


    void main(void)
    {
    init();

    i2c(0x80,0x04,0x01); //Wake
    i2c(0x80,0x09,0x55); //Ports 0x09 and
    i2c(0x80,0x0A,0x55); //Ports 0x0A as outputs

    while(1){};
    }

    //Παρακάτω είναι η διαδικασία
    void i2c(addr,reg,dat){ //Η συνάρτηση παίρνει 3 αριθμούς, διεύθυνση, καταχωρητής, δεδομένα και τα στέλνει.
    SSPCON2bits.SEN = 1; // Start
    while(SSPCON2bits.SEN == 1){}; //Έλεγχος για ολοκλήρωση
    SSPBUF = addr; //Αποστολή δεδομένων
    while(SSPSTATbits.BF == 1){}; //Έλεγχος αν έχει αδειάσει ο καταχωρητής
    while(SSPCON2bits.ACKSTAT == 1){}; //Έλεγχος αν έχει ληφθεί το ACK ως απάντηση
    while(SSPSTATbits.R == 1){}; //Έλεγχος αν υπάρχει μετάδοση δεδομένων
    SSPBUF = reg; //Επαναλαμβάνεται η διαδικασία
    while(SSPSTATbits.BF == 1){};
    while(SSPCON2bits.ACKSTAT == 1){};
    while(SSPSTATbits.R == 1){};
    SSPBUF = dat;
    while(SSPSTATbits.BF == 1){};
    while(SSPCON2bits.ACKSTAT == 1){};
    while(SSPSTATbits.R == 1){};
    SSPCON2bits.PEN = 1; //Stop
    while(SSPCON2bits.PEN == 1){}; //Έλεγχος αν έχει ολοκληρωθεί
    }


    void init() //Εδώ γίνεται η αρχικοποίηση. Τα pin του μΕ πρέπει να ρυθμιστούν ως έξοδοι.
    {
    TRISBbits.RB0 = 0x01;
    TRISBbits.RB1 = 0x01;
    PORTB = 0x00;
    ADCON1 = 0x0F;

    SSPADD = 0x1D; //400Khz clock speed
    SSPCON1bits.SSPM = 0x08;
    SSPCON1bits.SSPEN = 1;
    }

    Από hardware μην ξεχάσεις τις αντιστάσεις(πχ 4.7ΚΩ) στην τάση.

    0 Not allowed! Not allowed!

Παρόμοια Θέματα

  1. Πρωτόκολλο παράλληλης θύρας PC
    By stakarag in forum Hardware Η/Υ
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 16-09-13, 16:38
  2. Απαντήσεις: 3
    Τελευταίο Μήνυμα: 04-08-11, 18:42
  3. Σχετικά με το I2C πρωτόκολλο
    By Thansavv in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 6
    Τελευταίο Μήνυμα: 27-06-10, 23:48
  4. i2c Πρωτόκολλο, Απορίες, Προβληματισμοί
    By acmilangr in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 16
    Τελευταίο Μήνυμα: 01-02-10, 19:25

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας