Hallo,
ich beschäftige mich gerade mit der Programmierung des ATmega4809. Wie
ich gelesen habe stammt der Syntax der neuen AVR von den AVR XMEGA ab,
mit denen ich mich noch nie befasst habe. Ich habe folgenden Code:
1 | int main(void)
|
2 | {
|
3 | PORTF.DIR |= PIN5_bm;
|
4 | while (1)
|
5 | {
|
6 | PORTF.DIRSET = PIN5_bm;
|
7 | _delay_ms(500);
|
8 | PORTF.DIRCLR = PIN5_bm;
|
9 | _delay_ms(500);
|
10 | }
|
11 | }
|
Nun zu meiner Frage: Wann wird PIN5_bm und wann PIN5_bp verwendet?
Dann habe ich noch folgenden Code:
1 | void USART_init()
|
2 | {
|
3 | USART0.BAUD = (uint16_t)USART0_BAUD_RATE(9600);
|
4 | USART0.CTRLB |= USART_TXEN_bm;
|
5 | stdout = &USART_stream;
|
6 | }
|
Warum wird bei USART0.BAUD ein einfaches = verwendet und bei
USART0.CTRLB ein |=?
Und dann habe ich noch einen Teil der Timer Initialisierung:
1 | TCA0.SINGLE.CTRLA = TCA_SINGLE_CLKSEL_DIV2_gc | TCA_SINGLE_ENABLE_bm;
|
Wenn ich es wie oben schreibe funktioniert es, allerdings nicht wenn ich
es so schreibe:
1 | TCA0.SINGLE.CTRLA = TCA_SINGLE_CLKSEL_DIV2_gc;
|
2 | TCA0.SINGLE.CTRLA = TCA_SINGLE_ENABLE_bm;
|
Ich denke das sind einfache Fragen, aber auch aus den Getting Started
Notes von Microchip werde ich leider nicht schlau.