Witajcie !
Dopiero przerzucam się z bascoma na C i chciałem sobie odpalić
UARTA aby podawał mi wartości ADC ...
Na wyjściu powinienem otrzymać wartości ADC ... i leci coś
ale zauważyłem że tylko w zakresie 0-255 ... a nie 0-1024
Gdzie popełniłem błąd ?
proszę sprawdźcie też pozostałość
Taki oto kod zmontowałem ..
Dopiero przerzucam się z bascoma na C i chciałem sobie odpalić
UARTA aby podawał mi wartości ADC ...
Na wyjściu powinienem otrzymać wartości ADC ... i leci coś
ale zauważyłem że tylko w zakresie 0-255 ... a nie 0-1024
Gdzie popełniłem błąd ?
proszę sprawdźcie też pozostałość
Taki oto kod zmontowałem ..
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <util/delay.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
#ifndef F_CPU
#define F_CPU 11059200UL
#endif
/* 9600 baud */
#define UART_BAUD_RATE 9600
//
//
/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
unsigned char buffer;
void InitUSART( unsigned long int baud ) // baud - czyli bitrate portu COM
{
UBRRH = (unsigned char)(((F_CPU/(16UL*baud))-1)>>8);
UBRRL = (unsigned char)((F_CPU/(16UL*baud))-1);
// Otwarty kanal odbioru i nadawania
UCSRB = (1<<RXEN)|(1<<TXEN);
// 8bitów, 2bity stopu */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}
unsigned char ReceiveUSART( void ) // funkcja odbioru bajtu z RS232
{
while ( !(UCSRA & (1<<RXC)) );
//odebrane = UDR; //zmienna odebrane przyjmuje wartosc UDR
return UDR;
}
void TransmitUSART( unsigned char data ) // funkcja wysłania bajtu po RS232
{
while ( !( UCSRA & (1<<UDRE)) );
UDR = data;
}
void ADC_Init(void){
ADCSRA=0b10000110;
}
unsigned int odczyt_nap(void)
{
ADMUX=2;
ADCSRA |= _BV(ADSC);
while(bit_is_set(ADCSRA,ADSC))
{};
itoa( ADC, buffer, 10);
return buffer;
}
volatile unsigned char i=0;
int main(void){
InitUSART(9600);
ADC_Init();
sei();
//i=USART_Receive();
for(;;){
_delay_ms(100);
TransmitUSART(buffer);
}
}
SIGNAL(SIG_UART_RECV)
{
i=UDR;
}
