Fixed twi address

Tested code to write si5153 registers
This commit is contained in:
Sebastian 2018-06-15 02:22:59 +02:00
parent 218faa6182
commit 546a9c7fde
3 changed files with 29 additions and 6 deletions

20
firmware/include/si5351.h Normal file
View File

@ -0,0 +1,20 @@
#ifndef __SI5351_H__
#define __SI5351_H__ __SI5351_H__
#include <stdint.h>
#include "twi.h"
const uint8_t SI5351_ADDRESS = 96;
static inline uint8_t si5351_write8(uint8_t reg, uint8_t value) {
uint8_t data[3] = {reg, value};
return twi_write(SI5351_ADDRESS, data, 2);
}
static inline uint8_t si5351_write16(uint8_t reg, uint16_t value) {
uint8_t data[3] = {reg, value & 0xFF, (value & 0xFF00) >> 8};
return twi_write(SI5351_ADDRESS, data, 3);
}
#endif

View File

@ -2,16 +2,19 @@
#include <util/delay.h> #include <util/delay.h>
#include "twi.h" #include "twi.h"
#include "si5351.h"
int main(void) { int main(void) {
twi_init(); twi_init();
while(1) { // Disable outputs
uint8_t data[] = {'T','E','S','T'}; si5351_write8(3, 0xFF);
twi_write(96, data, 4);
_delay_ms(10); // Powerdown output drivers
} si5351_write8(16, 0x80);
si5351_write8(17, 0x80);
si5351_write8(18, 0x80);
while(1); while(1);
} }

View File

@ -35,7 +35,7 @@ uint8_t twi_write(uint8_t address, uint8_t data[], uint8_t len) {
return 1; return 1;
} }
TWDR = address | TW_WRITE; // We want to write to the slave TWDR = (address << 1) | TW_WRITE; // We want to write to the slave
TWCR = (1 << TWINT) | (1 << TWEN); // Trigger transmission, keep TWI enabled TWCR = (1 << TWINT) | (1 << TWEN); // Trigger transmission, keep TWI enabled
// Wait for TWI unit to finish // Wait for TWI unit to finish