20 MHz ? , . ( , ).
20 MHz ? , . ( , ).
qcx - 20 MHz. 8-10 MHz ( , 10 MHz 2.7V). - 4.5V. , , . , , SI5351 ( 3.6 ). I2C , , "1" (0.7 , AVR), , 3.3 . I2C , I2C, Philips/NXP.
avr, , i2c avrstudio4, , - Build , . , - , , uint8_t i2c_status(void) void . ?
/*i2c*/
#include <util/twi.h>
#include <avr/power.h>
#include <avr/sfr_defs.h>
#include "i2c.h"
void i2c_init(void)
{
power_twi_enable();
//set SCL to ~100 kHz for 8 MHz CPU clock
TWSR = 0; /* Prescale /1 */
TWBR = 0x25;
//enable I2C
TWCR = _BV(TWEN);}
void i2c_start(void)
{
TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN);
while (!(TWCR & _BV(TWINT)));}
void i2c_stop(void)
{TWCR = _BV(TWINT) | _BV(TWSTO) | _BV(TWEN);}
void i2c_write(uint8_t data)
{
TWDR = data;
TWCR = _BV(TWINT) | _BV(TWEN);
while (!(TWCR & _BV(TWINT)));}
uint8_t i2c_read_ack(void)
{
TWCR = _BV(TWINT) | _BV(TWEN) | _BV(TWEA);
while (!(TWCR & _BV(TWINT)));
return TWDR;}
uint8_t i2c_read_nack(void)
{
TWCR = _BV(TWINT) | _BV(TWEN);
while (!(TWCR & _BV(TWINT)));
return TWDR;}
uint8_t i2c_status(void)
{ return TW_STATUS;}
/*i2c end*/
: 1 (: 0 , : 1)