Hallo Forumgemeinde,
geht das in WINAVR so nicht? (2. define)
#define DDR_SS DDB4;
#define PIN_INIT_MASTER() {DDR_SS = 1;}
…..
Void init_spi_mode(void)
{
PIN_INIT_MASTER();
…
}
Ich bekomme die Fehlermeldung:
Expected expression befor ‚=’ token
Danke für eure Hilfe.
Viele Grüße...
Einfach selbst durchspielen und händisch ersetzen. Dann steht im Code
das hier. Da sollte der Fehler direkt erkennbar sein.
Void init_spi_mode(void)
{
{DDB4; = 1;};
…
}
In der Art auch ohne ; nicht, der Compiler "sieht" 4=1. Wenn das bei EWAVR funktioniert, steckt wohl eine Compilererweiterung von IAR dahinter (wohl das "@", habe EWAVR nie selbst benutzt, aber einiges an Code dafür nach avr-gcc/avr-libc portiert). Das sollte mit IAR und GNU funktionieren: #define PIN_INIT_MASTER() DDRB|=(1<<DDB4)
Falls mein Beitrag gemeint ist: glaube ich auch nicht, daher steht da ja "auch ohne". Mein Beitrag bezog sich nicht auf das ";", sondern auf die scheinbar beabsichtigte Funktionalität. IAR hat Compilererweiterungen zum "mappen" von Variablen/Bitfeldern auf Hardwareregister, die avr-gcc/avr-libc nicht haben. Kenne das etwas besser auch nur nur von EWARM und klinke mich daher betr. EWAVR hier aus, morgen wird ein ERAVR-Anwender wohl aus erster Hand etwas dazu schreiben.
Es geht schon, man muß sich nur vorher ein Macro schreiben, mit dem man dann Bitvariablen definiert. Hier ein Beispiel: http://www.mikrocontroller.net/attachment/30300/lcd_drv.zip Bei AVRfreaks gibts dazu auch ein Tutorial: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=67368&start=all&postdays=0&postorder=asc Peter
Nur mal zur Info damit man mal sieht wie das in IAR machen kann:
///////////////
#define OUTPUT 1
#define DDR_SS DDRB_Bit4
#define DDR_MOSI DDRB_Bit5
#define DDR_SCK DDRB_Bit7
#define PIN_INIT_MASTER(){ DDR_SS = OUTPUT;\
DDR_MOSI = OUTPUT;\
DDR_SCK = OUTPUT;}
// in der .c Datei dann...
void init_spi_master_mode(void)
{
PIN_INIT_MASTER();
.....
}
///////////////
Habe mal bei IAR nachgeschaut. die ersten defines funktionieren über ein
Macro. Wie das mir der "definefunktion" ist weiß ich auch nicht, egal!!
@Peter:
Danke für die Infos :o)
Viele Grüße...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.