- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 6 ErsteErste 12345 ... LetzteLetzte
Ergebnis 21 bis 30 von 53

Thema: USART - WARUM GEHT ES NICHT? - BITTE HELFT MIR

  1. #21
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Willst du nicht kurz mal das Echo anpassen und laufen lassen ?
    Wenn das funzt, brauchen wir uns um die Hardware und Kabeln keine Gedanken mehr zu machen

    https://www.roboternetz.de/wiki/pmwi...sComVergleich2
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  2. #22
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    38
    Beiträge
    795
    Mach ich gerne..

    Hatte ich vergessen zu erwähnen dass der MC die Daten empfängt?

    Wenn ja, SORRY.

    Hier der neue Code,

    Code:
    #include <avr/io.h> 
    #include <avr/interrupt.h> 
    #include <avr/signal.h> 
    
    #define F_CPU 7372800 
    #define USART_BAUD_RATE 115200 
    #define USART_BAUD_SELECT (F_CPU/(USART_BAUD_RATE*16L)-1) 
    
    volatile static uint8_t data;
    
    void USART_init(void){  
    
    	UBRRH = 0;
        UBRRL = (uint8_t) USART_BAUD_SELECT; 
    	
    	/* Aktivieren des Empfängers, des Senders und des "Daten empfangen"-Interrupts */
    	UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
    
    	/* Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit */
    	UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
    
    	data = UDR;
    
    } 
    
    void USART_transmit(uint8_t c){ 
       while(!(UCSRA & (1<<UDRE)));
       UDR = c; 
    } 
    
    void USART_transmit_string(uint8_t *string){ 
        while(!(UCSRA & (1<<UDRE)));
    	while( *string){ USART_transmit (*string++); }
    }
    
    
    
    
    SIGNAL( SIG_USART_RECV ) 
    { 
        
       data = UDR;  
    
    } 
    
    
    int main (void)
    {
    // D A T E N R I C H T U N G :
    //===============================================
    
    //	PORTA Pin: 76543210	  ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
        DDRA   = 0b11111111;	//
        PORTA  = 0b00000000;	// 
    
    //	PORTB Pin: 76543210	  ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )	
        DDRB   = 0b00000000;	//
    	PORTB  = 0b00000000;	//
    	
    //	PORTC Pin: 76543210	  ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
        DDRC   = 0b00000000;	//
    	PORTC  = 0b11111111;	//
    	
    //	PORTD Pin: 76543210	  ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
        DDRD   = 0b11111111;	//
    	PORTD  = 0b00000000;	//
    	
    	
    
     
    USART_init();
    USART_transmit_string("USART INIT - OK  ");
     
     sei();
     
     uint8_t data_alt;
     
    while (1) { 
    
    PORTA = UCSRA;
    PORTD = data;
    
    
    if( data != data_alt ){
    
    USART_transmit(data);
    
    data_alt = data;
    
    }
    
    
    
    }
    }
    Gruß,
    Franz

  3. #23
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    38
    Beiträge
    795
    Mach ich gerne..

    Hatte ich vergessen zu erwähnen dass der MC die Daten empfängt?

    Wenn ja, SORRY.

    Hier der neue Code,

    Code:
    #include <avr/io.h> 
    #include <avr/interrupt.h> 
    #include <avr/signal.h> 
    
    #define F_CPU 7372800 
    #define USART_BAUD_RATE 115200 
    #define USART_BAUD_SELECT (F_CPU/(USART_BAUD_RATE*16L)-1) 
    
    volatile static uint8_t data;
    
    void USART_init(void){  
    
    	UBRRH = 0;
        UBRRL = (uint8_t) USART_BAUD_SELECT; 
    	
    	/* Aktivieren des Empfängers, des Senders und des "Daten empfangen"-Interrupts */
    	UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
    
    	/* Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit */
    	UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
    
    	data = UDR;
    
    } 
    
    void USART_transmit(uint8_t c){ 
       while(!(UCSRA & (1<<UDRE)));
       UDR = c; 
    } 
    
    void USART_transmit_string(uint8_t *string){ 
        while(!(UCSRA & (1<<UDRE)));
    	while( *string){ USART_transmit (*string++); }
    }
    
    
    
    
    SIGNAL( SIG_USART_RECV ) 
    { 
        
       data = UDR;  
    
    } 
    
    
    int main (void)
    {
    // D A T E N R I C H T U N G :
    //===============================================
    
    //	PORTA Pin: 76543210	  ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
        DDRA   = 0b11111111;	//
        PORTA  = 0b00000000;	// 
    
    //	PORTB Pin: 76543210	  ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )	
        DDRB   = 0b00000000;	//
    	PORTB  = 0b00000000;	//
    	
    //	PORTC Pin: 76543210	  ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
        DDRC   = 0b00000000;	//
    	PORTC  = 0b11111111;	//
    	
    //	PORTD Pin: 76543210	  ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
        DDRD   = 0b11111111;	//
    	PORTD  = 0b00000000;	//
    	
    	
    
     
    USART_init();
    USART_transmit_string("USART INIT - OK  ");
     
     sei();
     
     uint8_t data_alt;
     
    while (1) { 
    
    PORTA = UCSRA;
    PORTD = data;
    
    
    if( data != data_alt ){
    
    USART_transmit(data);
    
    data_alt = data;
    
    }
    
    
    
    }
    }
    Gruß,
    Franz

  4. #24
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ist der Watchdog deaktiviert ? Ich sag dir ehrlich, mir fällt nicht mehr viel ein.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #25
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    38
    Beiträge
    795
    Den Watchdog hab ich nochnie hergenommen....

    was kann das blos sein?....
    Gruß,
    Franz

  6. #26
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Zitat Zitat von Kaiser-F
    Den Watchdog hab ich nochnie hergenommen..
    Jaja, aber im Programm wird er nicht deaktiviert, vielleicht aber mit den Fuses ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #27
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Wozu ist denn das data_alt? Das verwendest du uninitialisiert.
    Versuch mal nen poll-Betrien also Receive ohne Interrupt zu nutzen.
    Ansonsten fällt mir nur ein, daß es eine Silicon-Bug sein könnte. Evtl sagt ds Datenblatt oder die Errata zu deinem AVR was dazu, aber an so war denkt man natürlich nicht gerne...
    Disclaimer: none. Sue me.

  8. #28
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    38
    Beiträge
    795
    Der Watchdog ist das WDT-BIT,

    Da war KEIN Häckchen drinnen, also unprogrammed.

    Wenn ich diese Bit setze, dann tut er andauernd reseten, anscheinend weil der Watchdog dann nochnicht richtig eingestellt ist....

    Ich werd noch verrückt.... das ist bestimmt wieder so ne Kleinigkeit mir großen Folgen

    Ich muss mich bei euch recht herzlich für eure große Geduld bedanken!
    Ist ehrlich ein feiner Zug von euch!
    Gruß,
    Franz

  9. #29
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    @SprinterSB
    Ich seh da grad im Datasheet was von "safety level". Muß mir erst zusammenklamüsern, was es damit auf sich hat
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #30
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Zitat Zitat von Kaiser-F
    ... das ist bestimmt wieder so ne Kleinigkeit
    Das ist sicher: Wenn wir's dann wissen, werden wir uns alle mit der Faust auf's Hirn klatschen und mit Asche bestreuen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 3 von 6 ErsteErste 12345 ... LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests