私はマイクロコントローラのプログラミングは初めてです。ATmega32-AコントローラーとCodeVisionAVRコンパイラーを使用しています。SPI通信を使用して正弦波信号を生成するために、波形ジェネレーター(AD9833)を使用しています。サイン波を正常に生成できました。今、私はその信号をセンサーに渡しています。センサーの出力はマルチプレクサを介して選択され、ADCに送信されます。次に、SPI通信を使用してADC値を読み取ります。ADCのレジスタをセットアップするために多くのことを試みました。それでも動作しません。SPI通信コードを確認するには、spi通信を使用した以前のポストADCレジスタ設定を参照してください。USART(RS232)通信を使用して、PC(PuTTY)に値を印刷しています。
誰かがビットバンギングを使用するようにアドバイスしました。私はその概念に新しいです。SPI通信のビットバンギングのコード例を教えてください。その手順を開始する方法は?誰も私に良い材料を提供できますか。外部ハードウェアは必要ですか?
ピン接続を含め、これを書きました。
#define ADC_CS PORTB.3
#define MOSI PORTB.5
#define MISO PINB.6
#define SCK PORTB.7
void send_8bit_serial_data(unsigned char data)
{
int i;
ADC_CS=0;
for (i = 0; i < 8; i++)
{
// consider leftmost bit
// set line high if bit is 1, low if bit is 0
if (data & 0x80)
output_high(PORTB.5);
else
output_low(PORTB.5);
// pulse clock to indicate that bit value should be read
output_low(PORTB.7);
output_high(PORTB.7);
// shift byte left so next bit will be leftmost
data <<= 1;
}
// deselect device
ADC_CS=1;
}