Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #include <util/delay.h>
- #include "si4703.h"
- #include "I2C/i2c.h"
- #include "../LCD/lcd44780.h"
- #include <util/twi.h>
- /**********************************************************************************
- Funkcja odczytująca wartoci rejestrów od adresu 0x0A - 0xFF a następnie 0x00 - 0x09
- (wszystkie 16 rejestrów dostępnych w SI4703)
- **********************************************************************************/
- void si_read_reg(uint16_t *mybuf)
- {
- uint8_t a; // Zmienna pomocnicza
- uint8_t b; // Zmienna pomocnicza
- i2c_start(); // Uruchomienie I2C
- //if(TW_STATUS != TW_START) return;
- i2c_write_byte(0x21); // Wysłanie adresu odczytu Si4703
- //if(TW_STATUS!=TW_MT_SLA_ACK) return;
- for(b=0x0A;;)
- {
- if(b == 0x10) b = 0x00; // Przeskok z adresu 0x0F do 0x00 w tablicy
- a = i2c_read_byte(1); // Odczyt 8 starszych bitów
- mybuf[b] = (a<<8); // Przesunięcie w lewo i wpisanie do tablicy
- a = i2c_read_byte(1); // Odczyt 8 młodszych bitów
- mybuf[b] |= a; // Wpisanie do tablicy
- b++; // Inkrementacja adresu
- if(b == 0x08) // Jeżeli przed ostatni adres
- {
- a = i2c_read_byte(1); // Odczyt 8 starszych bitów
- mybuf[b] = (a<<8); // Przesuinięcie w lewo i wpisanie do tablicy
- a = i2c_read_byte(0); // Odczyt 8 młodszych bitów
- mybuf[b] |= a; // Wpisanie do tablicy
- return; // Wyjcie z funkcji
- }
- }
- i2c_stop(); // Zatrzymanie I2C
- }
- /**********************************************************************************
- Funkcja zapisująca wartoci do rejestrów z tablicy 16 elementowej z pod adresów
- tab[2]-tab[7] , podanie ALL wysle wsyztskie 7 rejestrów
- **********************************************************************************/
- void si_write_reg(uint16_t *mybuf , uint8_t rejestr)
- {
- i2c_start(); // Uruchomienie I2C
- _delay_ms(2); // Przerwa 100ms wg datasheet
- i2c_write_byte(32); // Wysłanie adresu zapisu SI4703
- _delay_ms(20);
- uint8_t z; // Zmienna pomocnicza
- for(z=2;z<=rejestr;z++)
- {
- uint8_t a; // Zmienna pomocnicza
- a = (mybuf[z] >> 8); // Wczytaj do a starszy bajt
- i2c_write_byte(a); // Wyslij starszy bajt z a
- a = (mybuf[z]); // Wczytaj do a młodszy bajt
- i2c_write_byte(a); // Wylij młodszy bajt z a
- }
- _delay_ms(2);
- i2c_stop(); // Zatrzymaj I2C
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement