- 12V Akku mit 280 Ah bauen         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 26 von 26

Thema: Probleme mit Atmega über FT232 an USB

  1. #21
    Benutzer Stammmitglied
    Registriert seit
    21.02.2015
    Beiträge
    65
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Habe jetzt mit einer etwas größeren Lupe alle Lötstellen überprüft und zwei nachgelötet, obwohl die gut aussahen. Jetzt geht es. Zeiten passen.
    Danke schonmal.

    Jedoch klappt das mit HTERM noch nicht. Bekomme dort nichts angezeigt.


    Hier nochmal mein Code. Passt das unten vor der LED Routine mit dem "uart_puts ( ARRAY ); mit dem Array senden?


    Code:
    #define F_CPU 14745600UL		 // CPU Taktfrequenz 
    #include <util/delay.h>			 //
    #include <avr/io.h>        	     //
    #include <inttypes.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    
    
    
    
    /////////////  ---- Baudrate ---- /////////////
    
    #define BAUD 9600UL      // Baudrate
     
    // Berechnungen
    #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)   // clever runden
    #define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))     // Reale Baudrate
    #define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler.
    
    /*
    #if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))
      #error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch! 
    #endif
    */
    
    
    /////////////  ---- Initalisiere UART ---- /////////////
    
    void uart_init(void) {
     	UBRR0H = UBRR_VAL >> 8;
     	UBRR0L = UBRR_VAL & 0xFF;
     
     	UCSR0B |= (1<<TXEN0) |(1<<RXEN0);  					// UART TX / RX einschalten
     	UCSR0C = (1<<UMSEL01)|(1<<UCSZ01)|(1<<UCSZ00);  	// Asynchron 8N1 
    }
    
    
    
    /////////////  ---- UART Senden  ---- /////////////
    
    
    int uart_putc(unsigned char sende) {
        while (!(UCSR0A & (1<<UDRE0)))  /* warten bis Senden moeglich */
        {
        }                             
     
        UDR0 = sende;                      /* sende Zeichen */
        return 0;
    }
     
     
    /* puts ist unabhaengig vom Controllertyp */
    void uart_puts (char *s){
        while (*s)
        {   /* so lange *s != '\0' also ungleich dem "String-Endezeichen(Terminator)" */
            uart_putc (*s);
            s++;
        }
    }
    
    
    
    
    /////////////  ---- MAIN  ---- /////////////
    
    
    int main(void) {
    
       DDRC  = 0xFF; 
       int16_t zw = 0;					//interner Schleifenzähler
      				
       int16_t sendeDaten1 [5];		//WErte Array1
       int16_t sendeDaten2 [5];		//WErte Array2
       char daten1 [31];			//Sende Array1		--> [x32000x12345x67890x......]
       char daten2 [31];			//Sende Array2
      
       uart_init();
    		
    
    
    	while (1) {
    
       		for (int16_t i=0; i<6; ++i){
    
       		sendeDaten1 [i] = rand() % 100;	//Zufallswerte in das 1. werte Array
       		sendeDaten2 [i] = rand() % 100;	//Zufallswerte in das 2. werte Array
    
    		daten1[zw] = 'x';					//Trennzeichen x vor jeden WErt
    		daten2[zw] = 'x';					//Trennzeichen x vor jeden WErt
    		
    		itoa (sendeDaten1 [i], daten1[zw+1], 10);	
    		itoa (sendeDaten1 [i], daten2[zw+1], 10);
    
    		zw = zw+6;						//
       		}
    
    
       uart_puts( daten1 );			//erste daten Array als ASCII senden
       uart_puts( daten2 );			//zweites daten Array als ASCII seden
    	
    	while (1){
    	
    		///// Test Routine ´LED Test ///////
    
    		PORTC |= (1<<PC0);		// Ausgang auf 1
    		_delay_ms(100);
    		PORTC |= (1<<PC1);    	
    		_delay_ms(100);
    		PORTC |= (1<<PC2);
        	_delay_ms(100);       	
    		
    		PORTC &= ~(1<<PC0);		// Ausgang auf 0
    		_delay_ms(100);
        	PORTC &= ~(1<<PC1);
    		_delay_ms(100);		   	
    		PORTC &= ~(1<<PC2);
        	_delay_ms(100);  
    		}
    
    	} 
    }

  2. #22
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Versuchs erstmal mit was ganz einfachem.

    Code:
    int main(void) {
    	uart_init();
    
    
    	while(1) {
    		uart_putc('A');
    		_delay_ms(200);	
    	}
    	
    	return 0;
    }
    mfg

    - - - Aktualisiert - - -

    Und du darfst
    Code:
    (1<<UMSEL01)
    nicht setzen!

    mfg

  3. #23
    Benutzer Stammmitglied
    Registriert seit
    21.02.2015
    Beiträge
    65
    'A' bekomme ich Übertragen. Das ASCII Array uart_puts( daten1 ); und uart_puts( daten2 ); nicht.

  4. #24
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Wieder viel zu kompliziert.

    Code:
    int main(void) {
           int8_t i;                    //interner Schleifenzähler
    
    
           int16_t sendeDaten1[5];        //WErte Array1
           char daten1[20];            //Sende Array1        --> [x32000x12345x67890x......]
    
    
           uart_init();
    
    
        while (1) {
               for (i=0; i<5; i++){
    
    
                   sendeDaten1[i] = rand() % 100;    //Zufallswerte in das 1. werte Array
    
    
                sprintf(&daten1[i*3], "x%d", sendeDaten1[i]);
               }
    
    
            //printf("%s\n", daten1);
               uart_puts(daten1);            //erste daten Array als ASCII senden
        }
    
    
        return 0;
    }
    mfg

  5. #25
    Benutzer Stammmitglied
    Registriert seit
    21.02.2015
    Beiträge
    65
    Die Übertragung zu HTERM funktioniert.
    Buchstaben kommen enstrpechend an. Das Array wird auch gesendet, Habe jetzt das Array an jeder Stelle mit der gleichen Zahl gefüllt.
    Jedoch jetzt zwei Bugs:
    1. ist jede Übertragene Array Zahl in HTERM anders
    2. Die Zahl die in HTERM angezeigt wird (z.B. "-24401" enstspricht nicht der gesendeten INT 111.

    Habe beim Wandeln ITOA darauf geachtet das die Puffer Variable [6] groß ist, da INT 5 stellen hat plus "/0".

  6. #26
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Sry, aber das WLAN-Modul von meiner Glaskugel ist kaputt. Musst den Sourcecode leider selbst posten.

    mfg

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. USB Modul mit FT232 an PIC?
    Von bjacke im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 24.12.2009, 08:33
  2. FT232 und Atmega32 Probleme (gelöst=
    Von Martin. im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 09.10.2009, 11:21
  3. Atmega 32 über Usb programmieren
    Von Seppi1203 im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 11.01.2007, 22:42
  4. Probleme mit RS232-Verbindung über USB-Serial-Adapter
    Von steph im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 25.12.2005, 00:23
  5. Probleme I/O über usb>RS232
    Von Jenzi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 10.11.2004, 08:20

Berechtigungen

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

12V Akku bauen