Hallo,
ich bekomme mit Putty und CoolTerm keine Werte mehr von meinen HC-05
angezeigt.
Der ATtiny841 sendet fleißig jede Sekunde Daten heraus. Ich habe zum
Test eine Led eingebaut.
VCC --- R4k7 --- HC-05(RXD) angeschlossen. Diese blinkt im Sekundentakt
immer einmal auf. Das Modul selber leuchtet durchgehend (verbunden),
solange ich mit CoolTerm oder Putty damit verbunden bin.
In Putty und CoolTerm habe ich genauso wie im AVR-Code auf 8-bit, no
parity, 1 stop bit gestellt.
Ich habe bereits auch das Gerät am PC entfernt und neugepaired mit einem
anderen Port. Ebenfalls keine Ausgabe.
Ich habe den AVR-Code heute mehrmals umgeschrieben und dabei die
Sicherung überschrieben. Ich denke aber, der Code passt.
Habe ihn aus den Datenblättern von Atmel übernehmen können.
1 | /*
|
2 | * tiny841_blink.c
|
3 | *
|
4 | * Created: 19.09.2014
|
5 | * Author: sschultewolter
|
6 | * Hardware: ATtiny841 5V 8MHz (internal Oscillator)
|
7 | */
|
8 |
|
9 |
|
10 | #include <avr/io.h>
|
11 | #include <avr/interrupt.h>
|
12 | #include <util/delay.h>
|
13 |
|
14 | #include "uart0.h"
|
15 |
|
16 | volatile uint32_t millis;
|
17 |
|
18 | ISR(TIMER0_COMPA_vect) { millis++; }
|
19 |
|
20 | int main(void)
|
21 | {
|
22 | uart0_init(9600);
|
23 |
|
24 | // millis
|
25 | TCCR0A = (1 << WGM01); // CTC Mode
|
26 | TCCR0B |= (1 << CS01) | (1 << CS00); // Prescaler 64
|
27 | OCR0A = 124; // (F_CPU/PRESCALER)/1000-1
|
28 | TIMSK0 |= (1 << OCIE0A); // Compare Interrupt
|
29 | sei();
|
30 |
|
31 | while(1)
|
32 | {
|
33 | static uint32_t last_millis;
|
34 | if(millis - last_millis >= 1000)
|
35 | {
|
36 | last_millis = millis;
|
37 | uart0_putc('A');
|
38 | uart0_putc('\n');
|
39 | uart0_putc('\r');
|
40 | }
|
41 | }
|
42 | }
|
1 | /*
|
2 | * uart0.h
|
3 | *
|
4 | * Created: 19.09.2014 16:06:17
|
5 | * Author: sschultewolter
|
6 | */
|
7 |
|
8 |
|
9 | #ifndef UART0_H_
|
10 | #define UART0_H_
|
11 |
|
12 | void uart0_init(uint32_t baud)
|
13 | {
|
14 | UBRR0H = (unsigned char)(baud >> 8);
|
15 | UBRR0L = (unsigned char)baud;
|
16 |
|
17 | // Enable receiver and transmitter
|
18 | UCSR0B = (1 << RXEN0) | (1 << TXEN0);
|
19 |
|
20 | // Set frame format
|
21 | // UMSELn1 UMSELn0 Mode
|
22 | // 0 0 Asynchronous USART
|
23 | // 0 1 Synchronous USART
|
24 | // 1 0 Reserved
|
25 | // 1 1 Master SPI (MSPIM)(1)
|
26 |
|
27 | // UPMn1 UPMn0 Parity Mode
|
28 | // 0 0 Disabled
|
29 | // 0 1 Reserved
|
30 | // 1 0 Enabled, Even Parity
|
31 | // 1 1 Enabled, Odd Parity
|
32 |
|
33 | // USBSn Stop Bit(s)
|
34 | // 0 1-bit
|
35 | // 1 2-bit
|
36 |
|
37 | // UCSZn2 UCSZn1 UCSZn0 Character Size
|
38 | // 0 0 0 5-bit
|
39 | // 0 0 1 6-bit
|
40 | // 0 1 0 7-bit
|
41 | // 0 1 1 8-bit
|
42 | // 1 0 0 Reserved
|
43 | // 1 0 1 Reserved
|
44 | // 1 1 0 Reserved
|
45 | // 1 1 1 9-bit
|
46 | UCSR0C = (1 <<UCSZ01) | (1 << UCSZ00); // 8N1
|
47 | }
|
48 |
|
49 | int uart0_putc(uint8_t c)
|
50 | {
|
51 | while(!(UCSR0A & (1<<UDRE0)));
|
52 | UDR0 = c;
|
53 | return 0;
|
54 | }
|
55 |
|
56 | uint8_t uart0_getc(void)
|
57 | {
|
58 | while(!(UCSR0A & (1<<RXC0)));
|
59 | return UDR0;
|
60 | }
|
61 |
|
62 | #endif /* UART0_H_ */
|