-         

Ergebnis 1 bis 2 von 2

Thema: I2C Register Lesen

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von pointhi
    Registriert seit
    18.03.2009
    Alter
    22
    Beiträge
    139

    I2C Register Lesen

    Anzeige

    Hy, ich muss spätestens in einer Woche das I2C Sensor-Modul TPA81 auslesen können (Temperatur-Spaltenarray)
    Leider hab ich noch nie mit I2C gearbeitet.

    Das ganze soll auf einem PIC 18F6520 laufen, aber das Protokoll ist ja überall gleich.

    Moduladresse: 0xD0 (standardadresse)
    Register: 0x00 - 0x09

    Die Frage ist wie ich das ganze sende. Ich verwende das standardinterface und eine libary von HITECH-PIC18

    Es gibt folgende Funktionen:

    void AckI2C(void);
    void NotAckI2C(void);
    void OpenI2C(unsigned char sync_mode, unsigned char slew );
    void CloseI2C(void);
    unsigned char DataRdyI2C(void);
    void IdleI2C(void);
    unsigned char ReadI2C(void);
    void RestartI2C(void);
    void StartI2C(void);
    void StopI2C(void);
    unsigned char WriteI2C(unsigned char data_out );

    Hoffe sie sind soweit vom Namen selbsterklärend. Es werden daten über den bus gesendet (sehe ich im oszi), leider hab ich keine ahnung wann ich ein Acknowledge, NotAcknowledge, Start/Stop, ect. senden muss

    villeicht wisst ihr wann man (auser am anfang "start" und am ende "stop") was senden muss. Wäre wichtig, in einer Woche ist der Wettbewerb und das ist das einzige nicht funktionierende system

    mfg. pointhi
    Theorie ist, wenn man alles weiß, aber nichts funktioniert.
    Praxis ist, wenn alles funktioniert, aber niemand weiß warum.
    Microsoft hat Theorie und Praxis vereint: Nichts funktioniert und keiner weiß warum!
    Deshalb nutze ich Linux für die wichtigen sachen

    Meine Website: www.oe5tpo.com

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied Avatar von pointhi
    Registriert seit
    18.03.2009
    Alter
    22
    Beiträge
    139
    Habs mittels einer englischen Wiki noch geschafft:

    so schaut der code derzeit aus. Werde ihn noch verbessern, aber er funktioniert prinzipiell

    int nReadI2C()
    {
    IdleI2C(void);
    StartI2C();
    IdleI2C(void);
    WriteI2C(0xD0);
    IdleI2C(void);
    WriteI2C(3);
    IdleI2C(void);
    RestartI2C();
    IdleI2C(void);
    WriteI2C(0xD1);
    IdleI2C(void);
    chTemp[1] = ReadI2C();
    IdleI2C(void);
    putint(chTemp[1]);putchar('\n');
    StopI2C();
    }
    Theorie ist, wenn man alles weiß, aber nichts funktioniert.
    Praxis ist, wenn alles funktioniert, aber niemand weiß warum.
    Microsoft hat Theorie und Praxis vereint: Nichts funktioniert und keiner weiß warum!
    Deshalb nutze ich Linux für die wichtigen sachen

    Meine Website: www.oe5tpo.com

Ähnliche Themen

  1. ldi register, (1<<irgendwas)?
    Von pacer_one im Forum Assembler-Programmierung
    Antworten: 6
    Letzter Beitrag: 08.12.2007, 00:40
  2. Register 0 bis 15
    Von The Man im Forum Assembler-Programmierung
    Antworten: 10
    Letzter Beitrag: 26.09.2007, 12:15
  3. mit zeiger Register lesen
    Von The Man im Forum Assembler-Programmierung
    Antworten: 1
    Letzter Beitrag: 11.12.2006, 09:21
  4. Register
    Von Exodus im Forum Assembler-Programmierung
    Antworten: 4
    Letzter Beitrag: 10.07.2006, 12:09
  5. Interne Register und Register in SRAM
    Von FoCus im Forum AVR Hardwarethemen
    Antworten: 9
    Letzter Beitrag: 27.07.2005, 13:06

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •