Witam
Mam podłączony uC Atmega328p (Kwarc 16MHz) przez port serial + układ MAX232 do komputera i przesyłam do komputera dane z ADC.
W serial monitorze wszystko wygląda dobrze (zmiany widoczne są natychmiast), natomiast gdy używam do tego napisanego wcześniej programu w C# w celu rysowania wykresu dane są bardzo wolno buforowane i wynik jest wyświetlany dopiero po dłuższej chwili.
Nie pisałbym może na tym forum, tylko jakimś dotyczącym C#, gdyby nie to, że
dane przesyłane do tego samego programu z Arduino Leonardo są przetwarzane bez żadnych problemów i zmiany są widoczne natychmiastowo.
Jaka może być różnica w danych wysyłanych przez Arduino (funkcja Serial.println()) i wysyłanych w sposób podany poniżej? W jaki sposób mogę wysłać dane tak, aby były interpretowane przez program tak jak dane z Arduino?
Z góry dziękuję za pomoc i przepraszam jeśli zadaję głupie pytanie, ale jestem bardzo początkujący.
Przesyłam kod programu uC dotyczący wysyłania danych na port serial:
Cytuj:
void serialstart()
{
UCSR0B |= (1<<RXEN0) | (1<<TXEN0);
UCSR0C |= (1<<UCSZ00) | (1<<UCSZ01);
UBRR0H = (BAUD_PRESCALE >> 8);
UBRR0L = BAUD_PRESCALE;
}
Fragment kodu odpowiedzialny za wysyłanie danych do uC (snd - tablica char zawierające dane ADC o wielkości size)
while(size>=0)
{
while(!(UCSR0A & (1<<UDRE0)));
UDR0=snd[size];
size--;
}
while(!(UCSR0A & (1<<UDRE0)));
UDR0 = '\n';
while(!(UCSR0A & (1<<UDRE0)));
UDR0 = '\r';
}