Rückgabewert von Funktion wird nicht übegeben

Gast #2068639
Lesenswert?

hallo, ich habe ein kleines Programm geschrieben um meine Hardware zu 
testen. Der verwedete Controller ist ein meag64
An Port D hängen Taser, und an Port C hängen LEDs mit vorwiederstand.
Wenn ich folgenden Code compiliere und auf den Controller übertrage
geht die jeweilige LED aus wenn ich den entsprechenden Taster drücke.
1
#include <avr/io.h>
2

3
int main(void){
4

5
  DDRD=0xff;
6
  PORTD=0xff;
7

8
  while(1){
9

10
        PORTC=PIND;
11
  
12
  }//end while
13
}//end main
Verwende ich jedoch diesen Code funktioniert garnichts? Wo liegt mein 
Fehler, das müsste doch so richtig sein.
1
#include <avr/io.h>
2

3
unsigned char abc(void);
4

5
int main(void){
6

7

8
  DDRD=0xff;
9
  PORTD=0xff;
10
  
11
  while(1){
12

13
      
14
  PORTC=abc();
15
  
16
  }//end while
17
}//end main
18

19

20
unsigned char abc(){
21

22
return PIND;
23

24
}
Gast #2068720
Lesenswert?

habe den port jetz als eingang geschaltet. es hat vorher trotzdem 
funktioniert.
ich bekomme von der funktion trozdem kein rückgabewert. auch wenn ich 
z.b.
1
 return 0x55;
 schreibe funktioniert es nicht.
Gast #2068913
Lesenswert?

Sieht dein Programm inzwischen so aus?

1
#include <avr/io.h>
2

3
unsigned char abc(void);
4

5
int main(void)
6
{
7
  DDRC = 0xff; // <== !
8
  PORTD = 0xff;
9
  while (1) {
10
    // Port C Pin o---###--->|---o GND
11
    //                 R    LED
12
    PORTC = abc();
13
  }//end while
14
}//end main
15

16
unsigned char abc(void)
17
{
18
  // Port D Pin o------TASTER------o GND
19
  // interne Pullups aktiviert
20
  return PIND;
21
}

Ist der richtige AVR im Projekt eingestellt? Wenn da ein Fehler gemacht 
wird, funktioniert der Aufruf der abc() Funktion nicht.

Es gibt Atmega64 und Atmega644, ohne weitere Bezeichnung und mit 
weiterer Bezeichnung... die sind nicht alle identisch!

Wenn AVR richtig eingestellt ist: Mal die LSS Datei erzeugen lassen 
(unter Projektoptionen in AVR Studio) und zeigen. Alternativ HEX-Datei 
hochladen zum disassemblieren.

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