Nabend,
Ich brauche mal eure hilfe:
Ein ATmega32 muss einen String ("#0201r123EE\r") über RS-232 senden. Das
Endgerät welches diesen String emfpängt gibt folgende RS-232 Vorgaben
vor:
Baud: 2400
DataBits: 8
Parity: even
Stopbits: 1
Bisher habe ich bei simplen AVR Geschichten immer die Fleury Lib für den
UART verwendet und ich habe mich auch sonst noch nie mit der
Paritätsgeschichte in der Praxis beschäftigt.
Ich habe zwar eine funktionierende Routine um die Parität eines
einzelnen chars zu berechnen, und ich denke auch dass sich dies leicht
auf einen ganzen String ausbauen lässt, doch ich weiss nun nicht, was
ich am ende mit dem bit machen soll.
1 | uint8_t parity(unsigned char x) {
|
2 | register unsigned short i;
|
3 | uint8_t p = 0;
|
4 |
|
5 | for(i=0; i<8; i++) {
|
6 | p ^= (x&(1<<i))?1:0;
|
7 | }
|
8 |
|
9 | return p;
|
10 | }
|
Also, was mache ich nun damit? Ist es möglich, die Fleury lib so leich
ab zu ändern, dass ich weiterhin uart_puts() und diese Geschichten
verwenden kann?
Nach dem Datenblatt gibt es vom ATmega32 her nur zum Empfangen eine
Paritätseinstellung ( UPM[0:1] in UCSRC).
Also, könnt ihr mir hier weiterhelfen?
~ Tectu