Hallo Ich versuche mühselig die GrafikLCD routinen von Bakke aus AVRGCC aufzurufen , habe das ein teil des gd50_gfx_lib.asm file in g_lcd_putbyte.s umbenannt , die Dateiname in Make unter ASRC eingetragen , in das Assemblerfile #include <macros.inc> und #include <ctoasm.inc> eingefügt ,die Routine vorher .global g_lcd_putbyte und .func g_lcd_putbyte eingefügt und am ende .endfunc beim builden kriege ich nun immer Error : constant value required bei jeder Assembler Anweisung im file steht da z.B. cbi portc,1 was mache ich bloß falsch Ich wollte ein Nokia 7110 LCD unter AVRGCC ansteuern ,hat jemand da ein tip , oder beispiel oder Bakke´s routinen eingebunden wo es funktioniert damit ich mein Fehlern abschaffen kann ?? Bitte Antwort per email dl6du@t-online.de Danke
Geht so einfach nicht. Richtig wäre es, die Aufrufe von PORTC etc. umzuschreiben in _SFR_IO_ADDR(PORTC). Ich befürchte, daß Du dazu keine Lust haben wirst. Alternativ kann man sich mit #define __SFR_OFFSET 0 behelfen. Lesestoff dazu: http://savannah.nongnu.org/download/avr-libc/doc/avr-libc-user-manual/group__avr__sfr__notes.html
Danke Jörg Habe es probiert mit #define __SFR_OFFSET 0 an anfang , aber es ändert sich leider nichts.. solls den heissen cbi _SFR_IO_ADDR(PORTC),1 ????
Letzteres wäre der ,,richtig saubere'' Weg, ja. Ersteres muß auch gehen, aber Du mußt das natürlich vor dem #include <avr/io.h> angeben. Dieses File wertet ja den Makro __SFR_OFFSET bereits aus.
Es bleibt konsequent beim Error : constant value required und es ist nun noch Error : ´',required Error : number must be less than 8 Error : garbage at end of line Alles wird noch schlimmer und ich weis überhaupt nicht wodrann es liegen soll der Include hab ich drinn denke der syntax ist noch falsch
Hmm, muß ich mir dann wohl selbst nochmal ansehen. Mit avr-gcc -E kannst Du Dir angucken, was der Präprozessor daraus macht. 73! de DL8DTl
Aha es gibt noch mehr OM´s... Ja ich werde es mal mit -E versuchen , bin noch nicht so lange mit avrgcc unterwegs , alles neu für mich.. kämpfe mich durch.. lesen lesen lesen... 73es
Öhm, nö. Bei mir tat das aber soweit, hast Du vielleicht mal ein File, mit dem das nicht tut?
Das Problem ist ja schon bei 2 Zeilen , von Programm kann man da noch gar nicht reden.. im C Programm steht extern void g_lcd_putbyte(unsigned char) und nach main : g_lcd_putbyte(10); und im make steht: ASRC = g_lcd_putbyte.s im file g_lcd_putbyte.s steht: #include <macros.inc> #include <ctoasm.inc> #include <avr/io.h> .global g_lcd_putbyte .func g_lcd_putbyte g_lcd_putbyte: cbi __SFR_IO_ADDR(PORTC),1 ret .endfunc und schon geht nix... reicht das ?? ...Aart
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.