Problem RFM12 Library von Manuel Stahl

OP #3194222
Lesenswert?

Moin,

mache gerade Gehversuche mit einem RFM12 Modul.
Benutze die Library von der Seite
http://www.mikrocontroller.net/articles/AVR_RFM12 von Manuel Stahl
Version: RFM12_V3.zip

SW: AVR Studio    4.18.684
HW: STK500 mit ATtiny 2313

Hauptroutine sieht so aus:

#include "rfm12.h"
void main ()
{
 RFM12_init();
while(1)
 {  }
 }
rfm12.h + rfm12.c +fifo.h sind includiert

Beim Compilierversuch wird sofort der Fehler:

/rfm12.h:161: error: expected ')' before 'autoLock' angezeigt
Muss noch etwas in die Hauptroutien eingebunden werden?

Gruß Eric
Gast #3194332
Lesenswert?

Hallo,

das ist der Bereich

#define RFM12FREQ(freq)  ((freq-430.0)/0.0025)   // macro for 
calculating frequency value out of frequency in MHz


void RFM12_init(void);


*void RFM12_setDataFilter(bool autoLock, bool fastMode, bool analog, 
uint8_t dqdThres);*


void RFM12_setReceiverBandwidth(RFM12_VDI_t vdi, RFM12_RxBW_t bandwidth, 
RFM12_GAIN_t gain, RFM12_RSSI_t drssi);


void RFM12_setCenterFrequency(uint16_t freq);


void RFM12_setBaudrate(uint32_t baud);


void RFM12_setTransmitPower(RFM12_Power_t power, RFM12_TxDev_t 
deviation);


uint8_t RFM12_dataInReceiveBuffer();


uint8_t RFM12_receiveByte();


uint8_t RFM12_transmitByte(uint8_t data);


inline uint16_t RFM12_status(void);

#endif /*RFM12_H_*/
Gast #3194335
Lesenswert?

AVR schrieb im Beitrag #3194332:

> *void RFM12_setDataFilter(bool autoLock, bool fastMode, bool analog,
> uint8_t dqdThres);*

Das sieht ziemlich eigenartig aus. Etwa so, als wäre es mal 
auskommentiert gewesen, aber irgendwie sind die '/' vor bzw. nach den 
'*' verloren gegangen.

So, wie es da steht, macht es jedenfalls keinen Sinn.

Mal abgesehen davon, daß überflüssige Füllworter wie 
'void'-Funktionsergebnisse sowieso keinen Sinn machen, aber das ist ein 
ganz anderes Thema. In der Krücke, die du und viele andere für eine 
Programmiersprache halten, muß man das halt so hinschreiben, auch wenn 
es völlig redundant ist.
#3194365
Lesenswert?

Eric S. schrieb:
1
#include "rfm12.h"
2

3
void main ()
4
 {
5
 RFM12_init();
6
 while(1)
7
   {
8
   }
9
 }

> Beim Compilierversuch wird sofort der Fehler:
> /rfm12.h:161: error: expected ')' before 'autoLock' angezeigt


AVR schrieb im Beitrag #3194332:
1
void RFM12_setDataFilter(bool autoLock, bool fastMode, bool analog, uint8_t dqdThres);

Du musst auch die Systemheader einfügen, die die entsprechenden 
Datentypen definieren. Im Minimum sehe ich da
1
#include <stdint.h>
2
#include <stdbool.h>

Grüße

Stefan

PS: Falls du noch kein Grundlagenbuch über C durchgearbeitet hast: 
Jetzt ist der richtige Zeitpunkt, das zu tun.
Gast #3195044
Lesenswert?

Danke für die Info,

die Systemheader habe im im Vorfeld schon mal eingebunden.

#include "rfm12.h"
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <util/delay.h>

void main ()
{
  RFM12_init();

while(1)
  {  }

 }
was den Compiler aber nicht veranlasst wieder den Fehler:
rfm12.h:161: error: expected ')' before 'autoLock'
auszuspucken.

c-hater schrieb:
> Das sieht ziemlich eigenartig aus. Etwa so, als wäre es mal
> auskommentiert gewesen, aber irgendwie sind die '/' vor bzw. nach den
> '*' verloren gegangen.

Die Sterne sind mein Fehler, habe versucht die Zeile fett 
darzustellen.
#3195182
Lesenswert?

AVR schrieb im Beitrag #3195044:
> #include "rfm12.h"
> #include <stdint.h>
> #include <stdbool.h>

Ändere mal die Reihenfolge.

Erst die Systemheader, dann die des Projekts.

In rfm12.h werden Definitionen aus stdint.h und stdbool.h verwendet. 
Woher soll der Compiler die denn kennen, wenn du diese Header erst nach 
rfm12.h einbindest?

Viele Grüße

Stefan
Gast #3195390
Lesenswert?

c-hater schrieb:
> Mal abgesehen davon, daß überflüssige Füllworter wie
> 'void'-Funktionsergebnisse sowieso keinen Sinn machen, aber das ist ein
> ganz anderes Thema. In der Krücke, die du und viele andere für eine
> Programmiersprache halten, muß man das halt so hinschreiben, auch wenn
> es völlig redundant ist.

void und kein void ist in C redundant? Aus welcher Basic-Grotte bist du 
denn entfleucht?


MfG
#3197426
Lesenswert?

So, hab das mal durch den Compiler laufen lassen.

Wird stdbool.h mit eingebunden, ist in rfm12.h nur ein Fehler (die nicht 
definierte inline-Funktion RFM12_status).

Mit rfm12.c sieht es aber deutlich schlechter aus. Das ist nämlich für 
eine CPU mit SPI-Interface vorgesehen (hat der Tiny2313 nicht), 
weiterhin wird der Timer 5 verwendet, den es nur bei den "ganz großen" 
ATMega gibt (z.B. ATMega 2560).

Da wirst du etwas mehr anpassen müssen.

Grüße

Stefan

PS: Zum obsoleten Datentyp prog_uint8_t siehe z.B. den 
Beitrag "Problem mit "prog_uint8_t" bei AVR Studio 6"

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