Pointer problem

Gast #820689
Lesenswert?

Pointer, arrgh! Jetzt probiere ich schon ein Weiler herum, und verstehe 
nicht, wieso hier eine Warnung ausgegeben wird, die scheinbar auch noch 
zu undefinierten Zuständen in meinem Programm führt:
1
uint8_t*  int2buf(uint8_t *buffer,int wert )
2
{
3
  *buffer++=(uint8_t)wert&0xFF; // low Byte
4
  *buffer++=wert>>8;
5
  return buffer;          
6
}
7

8
...
9

10
uint8_t* p1;
11
...
12
p1=int2buf( ui8Buffer1,ENCODERLAENGE*2 );

Das ist die Warnung:
../chEasyCom.c:179: warning: assignment makes integer from pointer 
without a cast

Hat jemand eine Idee?

Gruß,
chris
Persönliche Seite #820728
Lesenswert?

Hat an der Stelle

> p1=int2buf( ui8Buffer1,ENCODERLAENGE*2 );

Der GCC schon die Definition

> uint8_t*  int2buf(uint8_t *buffer,int wert )

oder den Prototyp der Funktion schon gesehen?

Oder arbeitet GCC in der richtigen Annahme, dass die bisher unbekannte 
Funktion int2buf( ui8Buffer1,ENCODERLAENGE*2 ) lt. Standard zwei int 
Argumente bekommt und dass jetzt der (vermutlich uint8_t * definierte 
ui8Buffer1) implizit zum int gecastet werden muss, was 
dankenswerterweise eine Warnung auslöst?
Gast #820794
Lesenswert?

Danke für die Hilfe.

>oder den Prototyp der Funktion schon gesehen?
Die Funktion wird in main verwendet und ist weiter oben definiert.

> int2buf( ui8Buffer1,ENCODERLAENGE*2 ) lt. Standard zwei int
Argumente bekommt

Der Buffer ist ganz oben definiert:
uint8_t ui8Buffer1[BUFFERLENGTH];
die groß geschriebenen Werte sind Konstanten. Also gibt's doch 
eigentlich nix zu meckern, oder?
Persönliche Seite #820823
Lesenswert?

Nö.
1
//
2
// AVR Studio 4,13 VR 20071221
3
// ATmega8
4
// -O0
5
//
6

7
#include <avr/io.h>
8
#include <inttypes.h>
9

10
#define BUFFERLENGTH  23
11
#define ENCODERLAENGE 42
12

13
uint8_t ui8Buffer1[BUFFERLENGTH];
14

15
uint8_t*  int2buf(uint8_t *buffer,int wert )
16
{
17
  *buffer++=(uint8_t)wert&0xFF; // low Byte
18
  *buffer++=wert>>8;
19
  return buffer;          
20
}
21

22
int main(void)
23
{
24
  uint8_t* p1;
25
 
26
  p1=int2buf( ui8Buffer1,ENCODERLAENGE*2 );
27
  
28
  while(1);
29
}

Meckert auch nicht:
1
Build started 23.3.2008 at 19:36:54
2
avr-gcc.exe  -mmcu=atmega8 -Wall -gdwarf-2 -O0 -MD -MP -MT chris2.o -MF dep/chris2.o.d  -c  ../chris2.c
3
avr-gcc.exe -mmcu=atmega8  chris2.o     -o chris2.elf
4
avr-objcopy -O ihex -R .eeprom  chris2.elf chris2.hex
5
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex chris2.elf chris2.eep
6
d:\WinAVR\bin\avr-objcopy.exe: --change-section-lma .eeprom=0x00000000 never used
7

8
AVR Memory Usage
9
----------------
10
Device: atmega8
11

12
Program:     226 bytes (2.8% Full)
13
(.text + .data + .bootloader)
14

15
Data:         23 bytes (2.2% Full)
16
(.data + .bss + .noinit)
#1404846
Lesenswert?

Hallo mein Name ist Hubert,
Ich habe erst vor einigen Wochen mit AVR programmieren angefangen.
Ich arbeite mit dem AVR-Studio.
Mein Problem:
Ich versuche mich mit dem programmieren erstmal mit den Grunddingen
anzufreunden und scheitere abert beim verwenden eines Buffers.
Ich habe es gerade geschaft, mit Realterm eine bestimmte Led auf meinem
Board einzuschalten.
Ich weiß nicht mehr weiter und ich weiß auch nicht, wo ich mir die
benötigten Informationen holen soll.

Ich möchte folgendes programmieren:

Wenn ich die Taste 1 - Taste 4 drücke sollten die Zahlen 1-4 im Buffer
gespeichert werden und mit empfangen eines ? vom Realterm sollen die
Zahlen der Reihenfolge der gedrückten Tasten ausgegeben werden.

z.B.: So !

ich drücke Taste 1 dann Taste 3 dann Taste 2 usw...
und wenn ich über Realtrum ein ? sende dann:

?1?3?2...  oder ?132...

So sollte es vileicht aussehen

Könnt ihr mit bitte helfen?
Ohne irgendeiner Hilfe komme ich nicht mehr weiter.

MFG Hubert
#1404864
Lesenswert?

Hubert Nokia schrieb:

> Ohne irgendeiner Hilfe komme ich nicht mehr weiter.

Du brauchst vor allen Dingen ein Buch.

> Könnt ihr mit bitte helfen?

Was du brauchst ist ein Array, in dem du die zu den Tasten gehörenden 
Werte zwischenspeicherst. Arrays finden sich in deinem 
(nichtvorhandenen) Buch ungefähr auf Seite 40 (von 250).


Zeig mal was du bisher hast, damit wir deine Hardware ein wenig kennen 
lernen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren