USART viel zu langsam bei anderem uC

Gast #1181658
Lesenswert?

Hallo, ich habe wieder mal eine Knobelaufgabe.. Also ich habe ein 
Programm mit USART-Ausgabe (printf...). Compiliert für einen Mega2560 
funktioniert es, compiliert für einen Mega8 nicht - da sendet die USART 
in Zehnerpotenzen zu langsam (hab mal mit dem OSZI auf TXD geschaut). 
Der Programmcode ist identisch, bis auf die u.g. #defines, die die 
Registernamen angleichen. In UBRRH und UBRRL werden auch die gleichen 
Werte geschrieben (0x33 für 1200 Baud bei 1MHz), das sagt zumindest der 
Simulator.. Die Beispieltabellen für UBRR in den Datenblättern sind 
identisch, bis auf die Tatsache, daß der 2560 mehrere USARTs hat. Was 
kann noch die Ursache sein? Die Fuses auf dem Mega 8 sind auch ok..

1
// je nach uC (Mega8 oder Mega2560) werden die Ports entsprechend definiert
2
#if defined(__AVR_ATmega8__)
3
  //Alias-Namen für ATmega8
4
  #define MOSI   3
5
  #define MISO   4
6
  #define SCK     5
7
  #define SS_ORI   2
8
  #define SS     1 // eigentlich 0, aber ich will es selbst steuern
9
#elif defined(__AVR_ATmega2560__)
10
  //Alias-Namen für ATmega2560 (STK600)
11
  #define UBRRH UBRR0H // erste Uart verwenden
12
  #define UBRRL UBRR0L
13
  #define UCSRB UCSR0B
14
  #define RXEN  RXEN0
15
  #define TXEN  TXEN0
16
  #define UCSRC UCSR0C
17
  #define USBS  USBS0
18
  #define UCSZ0 UCSZ00
19
  #define UCSRA UCSR0A
20
  #define RXC    RXC0
21
  #define UDR    UDR0
22
  #define UDRE  UDRE0  
23
  #define MOSI   2
24
  #define MISO   3
25
  #define SCK     1
26
  #define SS_ORI   0
27
  #define SS     4 // eigentlich 0, aber ich will es selbst steuern
28
#else
29
  #error "Dieses Programm unterstützt nur ATMega8 oder ATMega2560"
30
#endif
#1181784
Lesenswert?

> Der Programmcode ist identisch, bis auf die u.g. #defines,
> die die Registernamen angleichen.

Hast du mal im Datenblatt kontrolliert, ob in den 
Konfigurationsregistern die gleichen Bits drinnen sind. Manchmal war 
Atmel nämlich fies und hat die Bedeutung einzelner Bits in den 
Konfigurationsregistern bei unterschiedlichen Prozessoren verändert.
Gast #1181815
Lesenswert?

Das habe ich noch nicht kontrolliert, aber ich spreche alle Bits und 
register mit Namen an.. Trotzdem kontrollieren? UBRRH und UBRRL sind ja 
bei beiden normale Register..

Hat jemand eine andere Idee zum debuggen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren