Parameterübergabe

OP #3122840
Lesenswert?

Hallo,
folgende eigentlich einfache sache

ich habe eine Funktion InitCan(), steht in can.c
in der Main-funktion möchte ich diese nun aufrufen und ihr einen Wert 
mitgeben...
aber mein compiler sagt mir das die Funktion keine Argumente möchte :(
1
//in der main
2

3
InitECAN(5);

hier die ecan.c
1
void InitECAN(unsigned char BRP)
2
{
3
    
4
    
5
    BRGCON1 = BRP;
6

7
}

muss ich BRP vorher noch bekannt geben ???
hab vor die InitECAN() noch
1
unsigned char BRP
 gesetzt weil ich dachte das er wegen der Variablen meckert...
#3122856
Lesenswert?

Christoph Herzog schrieb:


>
1
> void InitECAN(unsigned char BRP)
2
> {
3
> 
4
> 
5
>     BRGCON1 = BRP;
6
> 
7
> }
8
>
>
> muss ich BRP vorher noch bekannt geben ???

Hast du doch schon. In der Argumentliste der Funktion steht doch alles, 
was es zum Thema BRP zu sagen gibt.

> hab vor die InitECAN() noch
>
1
unsigned char BRP
 gesetzt weil ich dachte das er wegen der
> Variablen meckert...

Ja, was jetzt?
Lautet die Fehlermeldung auf "Function does not accept 1 Argument" (also 
das was du mit 'aber mein compiler sagt mir das die Funktion keine 
Argumente möchte' ausgedrückt hast) oder lautet sie nicht in diese 
Richtung?

Das du kein C-Buch lesen willst, kann ich zur Not ja noch verstehen 
(auch wenn ich immer predige, dass man ohne C-Buch nicht weit kommt). 
Aber dass du Fehlermeldungen nicht lesen willst, das kann ich beim 
besten Willen nicht verstehen.
OP #3122875
Lesenswert?

@ kbuchegg
also das mit dem Buch versuch ich zu umgehen indem ich bei sprut, 
pic-projekte und co. google.

was die Fehlermeldungen angeht würde ich mir wünschen keine lesen zu 
müssen... allerdings komm ich wohl nicht dran vorbei was der tatsache 
geschuldet ist das mir in vielen Fällen einfach das grundwissen fehlt.
OP #3122885
Lesenswert?

THaala schrieb:
> Du musst das Prototype for dem ersten Aufruf anbringen, sonst nimmt der
> Compiler einen default an.

die can.h wird doch noch vor allem anderen eingebunden? somit sollt die 
Funktion doch dann bekannt sein?
in der main.c steht ja gleich am anfang der ganze inculde "ecan.h" kram 
und so... folglich dachte ich das die funktion InitECAN() ja auch 
bekannt ist
OP #3122908
Lesenswert?

das ist die komplete ecan.h dafür
allerdings habe ich gerad festgestellt das in ihr die ecan.h gar nicht 
eingebunden ist in der ja die Funktionen genau stehen...
wenn ich die ecan.c jetzt aber im oberen teil einbinde wird die funktion 
InitECAN() ja wieder abgearbeitet bevor der Prototype gelesen wird?
denkfehler???
1
#ifndef _ECAN_H
2
#define _ECAN_H
3

4

5
/*********************************************************************
6
*
7
*                             Defines 
8
*
9
*********************************************************************/
10
#define TRUE    1
11
#define FALSE   0
12

13

14
/*********************************************************************
15
*
16
*                        Function Prototypes 
17
*
18
*********************************************************************/
19
void InitECAN(unsigned char);
20

21
unsigned char ECAN_Receive(void);
22

23
void ECAN_Transmit(void);
24

25

26

27
#endif
OP #3122921
Lesenswert?

THaala schrieb:
> Karl Heinz Buchegger schrieb:
>> Christoph Herzog schrieb:
>>> @ kbuchegg
>>> also das mit dem Buch versuch ich zu umgehen indem ich bei sprut,
>>> pic-projekte und co. google.
>>
>> ALles klar.
>> Dann bin ich raus.
>> Ich verbrenn mir nicht nochmal die Finger.
>
> Ach so. Da schliesse ich mich an.

werd ich mir wohl doch mal ein Büchlein ausleihen müssen. Gibt es 
empfehlenswerte Literatur???

PS.: möglichst auf Microcontroller zugeschnitten...
#3122962
Lesenswert?

troll schrieb:
> Christoph Herzog schrieb:
>> werd ich mir wohl doch mal ein Büchlein ausleihen müssen. Gibt es
>> empfehlenswerte Literatur???
> Kernighan & Ritchie, Programmieren in C, 2. Auflage

Und es lohnt sich einen zu kaufen.
Die nächsten 2 Jahre ist der deine Bibel.

Ich hab bisher 2 Stück besessen. Der erste war noch die 1. Auflage, 
altes K&R C und hat heute nur noch antiquarischen Wert. Der andere starb 
den 'Zerfledderungstod' - d.h. der war so lange im Gebrauch, bis er 
auseinandergefallen ist.
#3123735
Lesenswert?

Christoph Herzog schrieb:
> troll schrieb:
>
>> C lernt man am besten erstmal ohne µC, auf dem PC kann man besser
>> debuggen.
>
> und welches Programm dazu? bzw. wird in dem erwähnten Buch eins
> vorgeschlagen?

Ist völlig wurscht.
Irgendeinen freien C-Compiler.

Das ist nämlich der große Vorteil am PC: Das dortige C verhält sich Dank 
Normung exakt so, wie im Buch beschrieben. Das einzige was je nach 
System unterschiedlich ist, ist der Aufbau der IDE. Aber die Sprache mit 
all ihren Systemfunktionen ist exakt die, wie in jedem x beliebigen 
C-Buch beschrieben.

Die 'Krise' auf einem AVR beginnt ja schon damit, dass du erst mal kein 
funktionsfähiges I/O System zur Verfügung hast, auf dem man einfach mal 
mit printf irgendwelche Dinge ausgeben kann. Auf dem PC hast du das aber 
alles zur Verfügung. Und zwar exakt so, wie im Buch beschrieben. Dort 
steht diese Infrastruktur bereits, während man auf einem AVR mehr oder 
weniger wirklich bei 0 anfangen muss. Was die Dinge nicht einfacher 
macht.
Auf dem PC kannst du dich erst mal vollkommen auf C und nur auf C 
konzentrieren. Ohne dich sofort mit der Hardware rumschlagen zu müssen.
OP #3123778
Lesenswert?

vielen Dank für die informationen

mit µC hab ich allerdings schon länger zutun als mit C.
Früher im Texteditor und Asm geschrieben... jetzt durfte ich feststellen 
das C doch ganz angenehm dafür ist...

soweit habe ich mit C auch keine Probleme gehabt bis jetzt... Allerdings 
habe ich sonst alles immer in die main.c geschrieben und der 
übersichtlichkeit halber wollte ich auf ausgelagerte Datein 
zugreifen/schreiben...

Sich mit dem c-problem auseinander zu setzen wenn ich damit arbeiten 
muss hilft mir den ganzen Kram besser zu merken. wenn ich das Buch 
durcharbeite ohne konkretes Ziel wird es um so schwieriger die vielen 
Sachen zu behalten.
Drum versuch ich mich meist so durchzufuchsen.

PS.: warum ich ASM erwähnte: sich durch die Hardware zu fuchsen ist 
nicht das problem, wenn ich das dazugehörige Datenblatt durchwälzt hab 
gehts.
#3123800
Lesenswert?

Der Kernighan/Richie ist DAS Datasheet für C. Er eignet sich auch 
hervorragend als Nachschlagewerk.

Je höher die Programmiersprache, desto wenig kommst du mit 
"durchfuchsen" weiter.

Sei froh, dass Du auf einem MC nicht/wenig mit komplexen Datenstrukturen 
zu tun hast. Da hängt die Latte um einiges höher.

Grüsse

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