Ceos
29.04.2009, 11:22
ich glaub meine controller verarschen mich oder ich seh den wald vor lauter bäumen nicht
DDRD |= (1<<TRANSMITTER) | (1<<TRIGGER_PIN);
UBRRH = 0; //> ...
UBRRL = 10; //> 1/10 MBaud @ 16Mhz
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
UCSRC = (1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1); //> 8N2
while(1){
PORTD |= (1<<PD4);
while(!(UCSRA & (1<<UDRE)));
UDR = R_OPERATING;
while(!(UCSRA & (1<<TXC)));
PORTD &= ~(1<<PD4);
}
der code wird identisch auf einem M32 und einem M128 aufgespielt (M128 == Embedit128Modul) der M32 braucht 30 mal länger als der M128 um das byte über die uart zu schieben (mit oszi gemessen) was mach ich falsch, hab ich was vergessen oder pübersehen ? bitte helft mir
PS: die Frequenz selber konnt ich nicht am Quarz überprüfen, aber die pausezeiten zwischen 2 bytes sind identisch mit rund 250nS (entspricht einer vergleichsoperation, wie im while)
DDRD |= (1<<TRANSMITTER) | (1<<TRIGGER_PIN);
UBRRH = 0; //> ...
UBRRL = 10; //> 1/10 MBaud @ 16Mhz
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
UCSRC = (1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1); //> 8N2
while(1){
PORTD |= (1<<PD4);
while(!(UCSRA & (1<<UDRE)));
UDR = R_OPERATING;
while(!(UCSRA & (1<<TXC)));
PORTD &= ~(1<<PD4);
}
der code wird identisch auf einem M32 und einem M128 aufgespielt (M128 == Embedit128Modul) der M32 braucht 30 mal länger als der M128 um das byte über die uart zu schieben (mit oszi gemessen) was mach ich falsch, hab ich was vergessen oder pübersehen ? bitte helft mir
PS: die Frequenz selber konnt ich nicht am Quarz überprüfen, aber die pausezeiten zwischen 2 bytes sind identisch mit rund 250nS (entspricht einer vergleichsoperation, wie im while)