Hallo zusammen,
ich habe schon Versucht in Google eine Lösung für mein Problem zu
finden, bin dort jedoch auf nichts brauchbares gestoßen. Deswegen hoffe
ich, dass mir hier jemand helfen kann.
Ich programmiere zur Zeit auf einem Atmega644 in AVR Studio 4 die UART
Schnittstelle (was bisher auch relativ gut funktioniert hat).
Jedoch habe ich jetzt ein Problem mit meiner Senden-Funktion.
Per RX-Interrupt versuche ich mehrere empfangene Zeichen in einem Buffer
zu speichern (char Array) und diese dann meiner Senden Funktion zu
übergeben. Diese soll dann eben genau den Empfangenen Array per UART
wieder zurückschicken.
Der Compiler meldet mir aber folgende Warnung:
warning: passing argument 1 of 'send_String' discards qualifiers from
pointer target type
Folgendes sind die relevanten Code-Abschnitte:
Buffer definition:
1 | unsigned char rx_buffer[100];
|
Sende-Funktion:
1 | void send_String(char *string){
|
2 | while(*string){
|
3 | send_Char(*string++);
|
4 | }
|
5 | }
|
RX Interrupt: (ein Zeichen wir so lange in rx_buffer gespeichert, bis
0xFD emfpangen wird)
1 | ISR(USART0_RX_vect){
|
2 | static unsigned char i = 0;
|
3 | PORTB = PORTB | 0x02;
|
4 | if(UDR0 != 0xFD){
|
5 | rx_buffer[i] = UDR0;
|
6 | i++;
|
7 | }
|
8 | else{
|
9 | uart_msg_complete = 1;
|
10 | i = 0;
|
11 | }
|
12 | }
|
Zuletzt noch die Main-Funktion:
1 | int main(void){
|
2 | USART_Init(BAUDRATE);
|
3 | sei();
|
4 | while(1){
|
5 | if(uart_msg_complete){
|
6 | send_String(&rx_buffer[0]);
|
7 | uart_msg_complete = 0;
|
8 | }
|
9 | }
|
10 | return 0;
|
11 | }
|
Bei der Zeile send_String(&rx_buffer[0]); tritt die Warnung auf.
Ich habe schon mehrere Möglichkeiten getestet. Z.B. mit einem
Hilfspointer:
1 | buffer_pointer = &rx_buffer[0];
|
und dann:
1 | send_String(buffer_pointer);
|
Jedoch hat dies auch nicht funktioniert.
Ich hoffe einer von euch kann mir bei meinem Problem helfen.
Danke schon mal im Vorraus.
Ben