- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 43

Thema: mal wieder ne Änfängerfrage: Strings

  1. #21
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.01.2005
    Ort
    Obertraun
    Alter
    36
    Beiträge
    194
    Anzeige

    E-Bike
    hmmm ... ehrlich gesagt keine Ahnung ...

    du verwendest ja Linux wie ich sehe ...
    vielleicht gibt es da auch so ein Tool Makefile, welches dir ein Makefile generiert...
    unter Windows schaut der Aufruf folgend aus:
    "C:\Programme\WinAVR\bin\wish84.exe mfile.tcl"

  2. #22
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    hmm, dann schick mir doch mal den code der bei dir funktioniert. vielleicht hab ich da auch einfach was falsh gemacht.

  3. #23
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.01.2005
    Ort
    Obertraun
    Alter
    36
    Beiträge
    194
    Code:
    #include <stdio.h>
    #include <avr/io.h>
    
    
    int PutChar(char c);
    
    int main(void)
    {
    	float test=5.3;
    
    
    	// USART initialization
    	// Communication Parameters: 8 Data, 1 Stop, No Parity
    	// USART Receiver: Off
    	// USART Transmitter: On
    	// USART Mode: Asynchronous
    	// USART Baud rate: 9600
    
    	UCSRA=0x00;
    	UCSRB=0x08;
    	UCSRC=0x86;
    	UBRRH=0x00;
    	UBRRL=0x17;
    	
    
    	fdevopen(PutChar,NULL,0);
    	while(1)
    	{
    		printf("%f\n\r",test);
    	}
    	return 0;
    }
    
    
    int PutChar(char c)
    {
    	while ( !( UCSRA & (1<<UDRE)) );
    	UDR=c;
    	return 0;
    }

  4. #24
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    also bei deinem Code kommt bei mir erstmal die Meldung:
    test.c: In function 'main':
    test.c:29: warning: format '%f' expects type 'double', but argument 2 has type 'float'
    mfg
    jagdfalke

  5. #25
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.01.2005
    Ort
    Obertraun
    Alter
    36
    Beiträge
    194
    Ist eh nur eine warning ...
    ist vielleicht besser wenn du es so schreibst:
    printf("%f\n\r",(double)test);

    bei mir hat es auch ohne den cast nach double funktioniert, ist mit ist es bestimmt sauberer....

  6. #26
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    nagut, jetzt gehts das schon mal. der output is aber das hier:
    ..�F.y F.<�.<.f.<�.<�.y F.<�.<.f.<�.<�.y F.<�.<.f.y F.<�.y f.<�.<.f.y

  7. #27
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.01.2005
    Ort
    Obertraun
    Alter
    36
    Beiträge
    194
    das sieht nach einem Baudratenfehler aus.

    hast du mein Programm verwendet?
    wenn ja, musst du das Programm noch an deinen Quarz anpassen!

    die Initialisierung der seriellen Schnittstelle kannst du eh von deinem alten Programm übernehmen ...

  8. #28
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Hmm, jetzt kommt wieder das schöne "?":

    Ausschnitt aus der Konsole:
    ?
    ?
    ?
    ?
    ?
    Meint ihr es kann an minicom liegen?


    Hier der komplette Code (ich poste den immer mal wieder damit man sich nicht immer durch die Posts wühlen muss um den aktuellen zu finden)
    Code:
    #define F_CPU 8000000
    #define BAUD_RATE 9600
    
    #include <stdio.h>
    #include <avr/io.h>
    
    
    int PutChar(char c);
    void uart_init(int tx, int rx);
    
    int main(void)
    {
       float test=5.3;
    
       uart_init(1, 0);
    
       fdevopen(PutChar,NULL,0);
       while(1)
       {
          printf("%f\n\r", (double)test);
       }
       return 0;
    }
    
    
    int PutChar(char c)
    {
       while ( !( UCSRA & (1<<UDRE)) );
       UDR=c;
       return 0;
    }
    void uart_init(int tx, int rx) {
       	UBRRL = (F_CPU/(BAUD_RATE*16l)-1);
    	if(tx == 1) {
    		UCSRB |= (1<<TXEN);
    	}
    	if(rx == 1) {
    		UCSRB |= (1<<RXEN);
    	}
    }

  9. #29
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.01.2005
    Ort
    Obertraun
    Alter
    36
    Beiträge
    194
    versuch es nocheinmal so:
    Code:
    #include <stdio.h>
    #include <avr/io.h>
    #include <stdlib.h>
    
    
    int PutChar(char c);
    
    int main(void)
    {
    	float test=5.3;
    	char str[20];
    
    	// USART initialization
    	// Communication Parameters: 8 Data, 1 Stop, No Parity
    	// USART Receiver: Off
    	// USART Transmitter: On
    	// USART Mode: Asynchronous
    	// USART Baud rate: 9600
    
    	UCSRA=0x00;
    	UCSRB=0x08;
    	UCSRC=0x86;
    	UBRRH=0x00;
    	UBRRL=0x17;
    	
    	fdevopen(PutChar,NULL,0);
    	while(1)
    	{
    		dtostrf(test,0,2,str);
    		printf("%s\n\r",str);
    	}
    	return 0;
    }
    
    
    int PutChar(char c)
    {
    	while ( !( UCSRA & (1<<UDRE)) );
    	UDR=c;
    	return 0;
    }
    natürlich musst du wieder die Baudrate bzw. Quarzfrequenz anpassen ...

  10. #30
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    test.o: In function `main':
    /home/mathias/makefile und load/roboterarm steuerung/test.c:21: undefined refere nce to `dtostrf'
    Wo kommt denn dieses dtostrf her? In meinen manpages steht auch nix darüber

    mfg
    jagdfalke

Seite 3 von 5 ErsteErste 12345 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen