From d7ac8f546afb75bd2d626b5cc639939337560cf6 Mon Sep 17 00:00:00 2001 From: meyma Date: Thu, 22 Feb 2007 14:08:01 +0000 Subject: We have a SRF10, not SRF05 --- source/Concept/Framework/atmega128io.h | 95 +++++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) (limited to 'source/Concept/Framework/atmega128io.h') diff --git a/source/Concept/Framework/atmega128io.h b/source/Concept/Framework/atmega128io.h index ed526ae..a3384a4 100644 --- a/source/Concept/Framework/atmega128io.h +++ b/source/Concept/Framework/atmega128io.h @@ -178,6 +178,99 @@ extern void uart1_puts_p(const char *s ); /** @brief Macro to automatically put a string constant into program memory */ #define uart1_puts_P(__s) uart1_puts_p(PSTR(__s)) -/**@}*/ +/**@}*/ + +///////////////////////////////////////////////////// +///////////////////////////////////////////////////// +// TWI-Driver + + /*! + Struktur Definition + tx_type ist eine Datenstruktur um den TWI Treiber anzusprechen + und behinhaltet folgende Informationen: + Slave Adresse + Datenrichtung + Anzahl der zu uebertragendenden Bytes (Senden oder Empfangen) + Pointer auf den Sende- oder Empfangspuffer + */ + typedef struct + { + uint8 slave_adr; /*!< Slave Adresse and W/R byte */ + uint8 size; /*!< Anzahl der Bytes, die gesendet oder empfagen werden sollen */ + uint8 *data_ptr; /*!< Pointer zum Sende und Empfangs Puffer */ + }tx_type; + +/*! + * Hier wird der eigentliche TWI-Treiber angesprochen + * @param *data_pack Container mit den Daten fuer den Treiber + * @return Resultat der Aktion + */ + extern uint8 Send_to_TWI(tx_type *data_pack); +/*! + * Sende ein Byte + * @param data das zu uebertragende Byte + */ + extern uint8 Send_byte(uint8 data); +/*! + * Empfange ein Byte + * @param *rx_ptr Container f�r die Daten + * @param last_byte Flag ob noch Daten erwartet werden + * @return Resultat der Aktion + */ + extern uint8 Get_byte(uint8 *rx_ptr, uint8 last_byte); +/*! + * Sende Start Sequence + * @return Resultat der Aktion + */ + extern uint8 Send_start(void); +/*! + * Sende Slave Adresse + * @param adr die gewuenschte Adresse + * @return Resultat der Aktion + */ + extern uint8 Send_adr(uint8 adr); +/*! + * Sende Stop Sequence + */ + extern void Send_stop(void); +/*! + * Warte auf TWI interrupt + */ + extern void Wait_TWI_int(void); + +/*! + * TWI Bus initialsieren + * @return Resultat der Aktion + */ + extern int8 Init_TWI(void); +/*! + * TWI Bus schliesen + * @return Resultat der Aktion + */ + extern int8 Close_TWI(void); + + #define W 0 /*!< Daten Transfer Richtung Schreiben */ + #define R 1 /*!< Daten Transfer Richtung Lesen */ + #define OWN_ADR 60 /*!< Die eigene Slave Adresse */ + #define SUCCESS 0xFF /*!< Status Code alles OK */ + + /*! + TWI Stautus Register Definitionen + */ + + /*!< Genereller Master Statuscode */ + #define START 0x08 /*!< START wurde uebertragen */ + #define REP_START 0x10 /*!< Wiederholter START wurde uebertragen */ + /*!< Master Sender Statuscode */ + #define MTX_ADR_ACK 0x18 /*!< SLA+W wurde uebertragen und ACK empfangen */ + #define MTX_ADR_NACK 0x20 /*!< SLA+W wurde uebertragen und NACK empfangen */ + #define MTX_DATA_ACK 0x28 /*!< Datenbyte wurde uebertragen und ACK empfangen */ + #define MTX_DATA_NACK 0x30 /*!< Datenbyte wurde uebertragen und NACK empfangen */ + #define MTX_ARB_LOST 0x38 /*!< Schlichtung verloren in SLA+W oder Datenbytes */ + /*!< Master Empfaenger Statuscode */ + #define MRX_ARB_LOST 0x38 /*!< Schlichtung verloren in SLA+R oder NACK bit */ + #define MRX_ADR_ACK 0x40 /*!< SLA+R wurde uebertragen und ACK empfangen */ + #define MRX_ADR_NACK 0x48 /*!< SLA+R wurde uebertragen und NACK empfangen */ + #define MRX_DATA_ACK 0x50 /*!< Datenbyte wurde empfangen und ACK gesendet */ + #define MRX_DATA_NACK 0x58 /*!< Datenbyte wurde empfangen und NACK gesendet */ #endif -- cgit v1.2.3