John Locke
15.08.2009, 02:20
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.
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. :-s
int main()
{
...
sei();
while(1)
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_mode();
}
}
Kann mir Jemand helfen? Ich komme nicht weiter...
ich habe eine simple Schaltung mit einem Attiny2313. Dieser soll ein Paar Zeichen über den USART ausgeben wenn eine Taste Gedrückt wird.
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. :-s
int main()
{
...
sei();
while(1)
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_mode();
}
}
Kann mir Jemand helfen? Ich komme nicht weiter...