-
        

Ergebnis 1 bis 2 von 2

Thema: Probleme mit USART und sleep mode

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2009
    Beiträge
    9

    Probleme mit USART und sleep mode

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo zusammen,

    ich habe eine simple Schaltung mit einem Attiny2313. Dieser soll ein Paar Zeichen über den USART ausgeben wenn eine Taste Gedrückt wird.

    Code:
    void com_sendByte(unsigned char data)
    {
    	//warten bis data register leer
    	while(!(UCSRA & (1<<UDRE)));
    	//Daten senden
    	UDR = data;
    }
    
    void com_sendString(char *dataPtr)
    {
    	while(*dataPtr)
    	{
    		com_sendByte(*dataPtr);
    		dataPtr++;
    	}
    }
    
    ISR(PCINT_vect)
    {
    	if(~PINB & (1 << PINB0))
    		com_sendString("A1");
    	if(~PINB & (1 << PINB1))
    		com_sendString("A2");
    }
    Funktioniert soweit. Nun möchte ich die Schaltung mit einer Batterie betreiben, es soll also so wenig Strom wie möglich verbraucht werden. Wenn ich in der main loop folgendes schreibe, sendet der USART nur noch Murks.

    Code:
    int main()
    {
    ...
    	sei();
    	while(1)
    	{
    		set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    		sleep_mode();
    	}
    }
    Kann mir Jemand helfen? Ich komme nicht weiter...

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Wenn ich in der main loop folgendes schreibe, sendet der USART nur noch Murks.
    Weil du dem UART den "Saft abdrehst" bevor er fertig ist. Wenn du schlafen gehen willst, musst du warten, bis der UART alles rausgeschickt hat.
    MfG
    Stefan

Berechtigungen

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