• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Przesył double przez USART

VPS Starter Arubacloud
0 głosów
104 wizyt
pytanie zadane 19 lutego 2020 w Mikrokontrolery przez Mavimix Dyskutant (8,420 p.)
zamknięte 19 lutego 2020 przez Mavimix

 

Chcę wysłać double z uC do PC. Czyli: w uC mam  double pi = 3.1415 po wysłaniu zmiennej do komputera, konsola (terminal) powinna pokazywać 3.1415. Po wysłaniu pi do PC konsola pokazuje: ? <00> <00> 4f <00> ˙˙. Kod:

#define F_CPU 16000000UL

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdio.h>

void print_char(char letter)
{
    if( bit_is_set(UCSRA, UDRE) )
    {
        _delay_ms(10);
        UDR=letter;
        loop_until_bit_is_set(UCSRA, TXC);
    }
}

int main(void)
{
    UBRRL = 103; //9600 16mhz
    UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
    UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);

    double pi=3.1415;
    char cpi[8];

    sprintf(cpi,"%#.4f", pi);

    while(1)
    {
        for(int i=0; i<8; i++) print_char(cpi[i]);

        UDR=0x0D;
        UDR=0x0A;
        _delay_ms(1000);
    }
}

Jak wykonać poprawną konwersje/wysłanie znaku?

komentarz zamknięcia: jak w kom
komentarz 19 lutego 2020 przez mokrowski Mędrzec (156,260 p.)
A kiedy powinieneś skończyć wysyłanie znaku? Po wyczerpaniu buforu (co robisz teraz), czy po napotkaniu znaku zera (  '\0' ) ? (linia 31)
komentarz 19 lutego 2020 przez Mavimix Dyskutant (8,420 p.)
zmieniłem funkcje z sprintf() na dtostrf() i działa.
komentarz 19 lutego 2020 przez mokrowski Mędrzec (156,260 p.)
To jeszcze zmień reprezentację tych danych z double na coś bardziej strawnego dla 8-bitowca :-) Typ double to "straszna klucha" dla AVR.

Podobne pytania

0 głosów
1 odpowiedź 759 wizyt
pytanie zadane 16 listopada 2022 w PHP przez zbiku25 Gaduła (3,000 p.)
+1 głos
1 odpowiedź 397 wizyt
pytanie zadane 10 sierpnia 2016 w SQL, bazy danych przez SebbaGamess Użytkownik (690 p.)
0 głosów
1 odpowiedź 316 wizyt
pytanie zadane 4 października 2015 w C i C++ przez WWOTEX Mądrala (6,200 p.)

93,012 zapytań

141,977 odpowiedzi

321,266 komentarzy

62,354 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...