Ahoj všem,
s programováním procesorů mám nulové zkušenosti. Moc Vás prosím o kontrolu zdrojového kódu pro ATmega8. Procesor by měl fungovat tak, že hned po připojení napájení začne ADC převádět analogový signál na digitální a výsledek převodu bude posílat přes UART do počítače. Dokud bude připojené napájení, bude se převádět a posílat. Připojená bude krystal 8 MHz.
Děkuji moc za pomoc.
#include <avr/io.h>
#include <inttypes.h>
void InitADC()
{
//reference je napájecí napětí, zarovnání doprava (rozlišení bude 8bit)
ADMUX|= (1<<REFS0)|(1<<ADLAR);
//zapne adc, dělící poměr je 64
ADCSRA|= (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1);
}
uint8_t ReadADC()
{
// spustí první konverzi a pokračuje ve free running modu
ADCSRA|= (1<<ADSC)|(1<<ADFR);
return (ADCH);
}
void InitUSART(uint16_t ubrr_value)
{
//nastaví přenosovou rychlost na 9600baud
UBRRL= ubrr_value;
UBRRH= (ubrr_value >>8);
//nastaví formát rámce, asynchronní mode, bez parity, 1 stopbit, délak slova 8bit
UCSRC= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
// povolí vysílač
UCSRB= (1<<TXEN);
}
void USARTWriteChar(char data)
{
// počká, dokud vysálač není připraven
while(!(UCSRA & (1<<UDRE)))
{
//nedělá nic
}
// vynuluje bit TxC
UCSRA|= (1<<TXC);
// zapíše data do buffru USARTu
UDR= data;
}
void main()
{
char data;
// inicializace USART
InitUSART(51);
// inicializace ADC
InitADC();
do{
// přečte data z ADC
data= ReadADC(0);
// odešle data z ADC skrz TxD
USARTWriteChar(data);
}
while(1);
}