Gast
#217929
hi,
benutze dem ATMega32 mit internem Takt ( 8 Mhz )
jetzt möchte ich per serieller Schnittstelle Daten an den PC senden.
Ist der interne Takt dazu gut genug ? ....
ich hab ein Program das für den ATMega128 funktioniert,
wenn ich das änder für den ATMega32 funktionierts nicht :-( ...
hier mal nen ausschnitt ...
#include "printf.h"
12
13 //Installation der Seriellen Schnittstelle
14 void IOInit (void)
15 {
16 // Enable TXEN in Register UCR (TX-Data Enable)
17 UCSRB=(1 << TXEN);
18 // set baudrate divisor
19 UBRRL=(CPU_CLOCK / (BAUD_RATE * 16L) - 1);
20 }
21
22 //
23 // this function is used inside the standard printf function and
24 // has to be implemented to get access to the serial port via
printf
25 //
26 int uart_putchar (char c)
27 {
28 if (c == '\n') uart_putchar('\r');
29 // wait until character is transmitted
30 loop_until_bit_is_set(UCSRA, UDRE);
31 UDR = c;
32 return 0;
33 }
34
I A main.h (c)
Row 1 Col 1 1:16 Ctrl-K
H for help
1 #ifndef _MAIN_H
2 #define _MAIN_H
3
4 #include <avr/io.h>
5
6 #define BUTTON_PORT PORTC
7 #define BUTTON_DDR DDRC
8 #define BUTTON_PIN PINC
9 #define BATT_LOW 4
10 #define BUTTON_0 5
11 #define BUTTON_1 6
12 #define BUTTON_2 7
13
14 #define LED_PORT PORTC
15 #define LED_DIR DDRC
16 #define LED_GREEN 0
17 #define LED_RED 1
18
19 #define CPU_CLOCK 7372800
20
21 #define CPU_MICROSEC(a) ((a)*CPU_CLOCK/7000000)
22 #define CPU_MILLISEC(a) ((a)*CPU_CLOCK/7000)
23 #define CPU_SEC(a) ((a)*CPU_CLOCK/7)
24
25 #define nop() _asm__ __volatile_ ("nop" ::)
26
27 /* nop/1, subi/1, sbc/1, sbc/1, sbc/1, brcc/2 -> 7 clocks */
28 static inline void cpu_delay(unsigned long int delay) {
29 while ( delay-- != 0) nop();
30 }
31
32 #endif
33
bin für Tipps und Hinweise dankbar ...
chris