hi sebastian, du hast mir sozusagen zu 50% geholfen
denn wenn ich "zeichen" dann ausgebe kommt im HT folgendes an:
Code:Flash! O
hi sebastian, du hast mir sozusagen zu 50% geholfen
denn wenn ich "zeichen" dann ausgebe kommt im HT folgendes an:
Code:Flash! O
Hallo ElTransistor,
Hmm,
ich sehe gerade, da es Probleme geben knnte, weil ich die Senderoutine einfach aus irgendeinem meiner 'nicht Asuro' Programme rauskopiert habe, und da gibt es leider kleine diferenzen.
Versuch es mal damit:
Ich hoffe damit erreichst Du Dein Vorhaben.Code:void push_flash(const char *string){ char zeichen; while((zeichen = pgm_read_byte(string))) { Uart_Putc(zeichen); string++; } }
Gru Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
hi..
ich hab das gestern nacht nochmal versucht, und zuerst hat es wunderbar geklappt! aber als ich dann die funktion in mein programm bernommen habe hat er wieder nur zeichen ausgespuck..und dann hab ichs nochmal von dir kopiert und nun geht es auch mit deinem beispiel nicht![]()
Code:#include "asuro.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "string.h" void push_flash(const char *string){ char zeichen; while((zeichen = pgm_read_byte(string))) { UartPutc(zeichen); string++; } } int main(void) { Init(); push_flash("lskjdhflkajshdlfkjhslkdjfhlkjhlkj"); return 0; }
liefertich wei nur nich warum das einmal ging und dann wieder nicht..Code:ߓ$!#ߑϕЀ߀$]
Hallo ElTransistor,
2 Probleme:
1. ich habe geschrieben
Du aberCode:push_flash(PSTR("Hallo, ich bin im Flash!\r\n"));
Na Fehler gefunden ?Code:push_flash("lskjdhflkajshdlfkjhslkdjfhlkjhlkj");
2.
Ich vermisse eine Endlosschleife in deinem Programm, das ist nicht gut.
Gru Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
AH du hast recht! ja das ist der nachteil wenn man nachts noch prgrammieren will![]()
ich glaube das war es, man ich hasse es immer diese kleinigkeiten zu bersehen
thx!
sowas ist in assmbler ja recht elegant zu lsen... aber da sieht man ganz gut die grenzen dec compilers :P
Hi,
Steht nicht am ende eines Strings eine Dezimal "0"?
MfG Maritn
Hallo Damaltor ,
Versteh ich nicht so recht, was Du meinst, warum erreicht der Kompiler hier seine Grenzen ?sowas ist in assmbler ja recht elegant zu lsen... aber da sieht man ganz gut die grenzen dec compilers![]()
Meinst Du, weil man nicht so einfach aus dem Flash lesen kann?
Wenn ja liegt das nicht am Kompiler, sondern an der AVR Architektur wrde ich mal sagen.
Trotzdem haben die avr-gcc Macher die Problematik gut gelst, man mu es nur wissen !
@Martin Funk ,
Du hast recht, ich wei aber nicht recht, worauf Du hinauswillst.
Gru Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
sag mal, izaseba, warum nennst Du Deine Routine eigentlich "push_flash". Um etwas zu holen, nimmt man doch normalerweis "pop" statt push
Hi stochri,
nun ja, kommt drauf an, von welcher Seite man das ganze sieht
Hier sehe ich das von der UART Seite...
man knnte auch getfromflashandputinuart sagen, oder wei was ich.
die Routne pushed ja was in UART (poped aber aus den flash)
Ehrlichgesagt habe ich mir keine Gedanken darber gemacht \/
Schlag was sinvolles vor, dann benenne ich sie um
Gru Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
Lesezeichen