Lukas Barbisch schrieb:
> Ich versuche jetzt mal mein Code selber zu verstehen,
> dass ich in jeder Zeile weiss was gemacht wird.
Die Flankenerkennung selbst ist ja nicht falsch. Die ist schon ok. Aber
das Drumherum strotzt nur so vor Fehlern.
Vielleicht erst mal nur mit EINER Taste anfangen, anstatt gleich aufs
ganze zu gehen?
(Ich meine: wenn du schon die ersten 10 AVR-Übungsbeispiele übersprungen
hast, wäre es eine verdammt gute Idee, dann wenigstens mit etwas
anzufangen, was du noch überblicken kannst)
1 | #include <avr/io.h>
|
2 | #include <stdio.h>
|
3 | #include <stdint.h>
|
4 | #define F_CPU 12000000
|
5 | #define UBRR_VAL 1 //((12000000/(BAUD*16)-1))
|
6 |
|
7 | int aEin = 0;
|
8 |
|
9 | int uart_putc(unsigned char c);
|
10 | void uart_puts (char *s);
|
11 |
|
12 | int main () {
|
13 |
|
14 | DDRB = 0x00; // B auf Input
|
15 | PORTB = (1<<PB0); // Pullup an PB0
|
16 |
|
17 | // init UART
|
18 | UBRRH = UBRR_VAL; // set baud rate (9600)
|
19 | UBRRL = UBRR_VAL>>8;
|
20 | UCSRB |= (1<<RXEN) | (1<<TXEN); // enable Rx / TxD
|
21 | UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0); // frame format 8bit data + 1 stop bit
|
22 |
|
23 | while ((1))
|
24 | {
|
25 | if (!(PINB & (1<<PB0)))
|
26 | {
|
27 | if (aEIN == 0)
|
28 | {
|
29 | uart_puts("a");
|
30 | aEIN = 1;
|
31 | }
|
32 | }
|
33 | else
|
34 | {
|
35 | aEIN = 0;
|
36 | }
|
37 | }
|
38 | }
|
langt doch fürs erste. (Jetzt mal korrekte Entprellung ignoriert)