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.