Forum: Mikrocontroller und Digitale Elektronik Atmega32 und UART (Peter Fleury)


von Durokh (Gast)


Lesenswert?

Hi alle zusammen,
wie der Titel schon sagt, habe ich ein Problem mit dem atmega32, dem 
UART bzw. genauer gesagt mit der Lib von Peter Fleury.

Was definitiv läuft:
- Atmega8 mit der Lib von Peter Fleury
--> macht alles so, wie ich es mir vorstelle

- Atmega32 mit dem Code aus dem Tutorial von mikrocontroller.net:
--> Gibt also Test den Buchstaben zurück. Klappt auch wunderbar.
1
#define BaudRate  115200UL
2
#define F_CPU    22118400UL
3
4
int main (void) {
5
6
  uint16_t ubrr = (uint16_t) ((uint32_t)F_CPU / (16*BaudRate)-1);
7
8
  UBRRH = (uint8_t)(ubrr >> 8);
9
  UBRRL = (uint8_t)(ubrr);
10
11
  UCSRB = (1 << RXEN)|(1 << TXEN)|(1 << RXCIE);
12
  // 8N1
13
  UCSRC = (1<<URSEL)|(1 << UPM1)|(1 << UCSZ1)|(1 << UCSZ0); 
14
15
  unsigned char buffer;
16
17
  while (1) {
18
    while ( !(UCSRA & (1<<RXC)) ) ;
19
    buffer = UDR;
20
21
    while ( !( UCSRA & (1<<UDRE)) );
22
    UDR = buffer;
23
24
  }
25
  return 0;
26
}


Binde ich nun die Lib von Peter Fleury ein, reagiert der Atmega32 leider 
gar nicht mehr.
Die Anschlüsse sind aber alle in Ordnung, sonst würde der Test ja nicht 
klappen. Oszillator, Baudrate und CPU Speed stimmen auch.

Habt ihr eine Ahnung, woran es liegen könnte?
Hier der Code, den ich einbinde.

1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include "uart.h"
4
5
int main (void)
6
{    
7
  
8
  uart_init(UART_BAUD_SELECT(115200, 22118400UL));
9
  sei();
10
    
11
  uart_puts("Es klappt!\n");      
12
           
13
  while (1)
14
  {
15
    
16
  }
17
  return 0;
18
}


Vielen Dank schonmal vorweg,
beste Grüße,
Durokh

von Daniel C. (cecky)


Lesenswert?

Muss nicht unbedingt was mit deinem Problem zu tun haben, aber 22,1148 
MHz an einem Mega32 find ich schon sportlich!

von Durokh (Gast)


Lesenswert?

Da gebe ich dir Recht :)

von Durokh (Gast)


Lesenswert?

Ok, den Fehler habe ich nun durch Zufall gefunden. Hatte 
irrtürmlicherweise noch den Atmega8 also config-Einstellung in AVR 
Studio...

Meint ihr denn, dass man den atmega32 mit 22.1184 Mhz laufen lassen 
kann? Jetzt gerade bekomme ich immer wieder Fehlerzeichen rein (oder 
teilweise komplett)

Was für (negative) Auswirkungen hat es, wenn man den so hoch taktet?

Gruß,
Durokh

von Uwe (de0508)


Lesenswert?

Hallo,

nun ein atmega32 ist mit 16MHz @5V spezifiziert, alles was darüber liegt 
ist ein kann gut gehen, muss aber nicht.

Was das eeprom dazu "sagt", weiss ich jetzt auch nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.