hi sebastian, du hast mir sozusagen zu 50% geholfen ;)
denn wenn ich "zeichen" dann ausgebe kommt im HT folgendes an:
Code:Flash!øþ O†Å
Druckbare Version
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 könnte, 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
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
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 lösen... 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 ? :-kZitat:
sowas ist in assmbler ja recht elegant zu lösen... 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 würde ich mal sagen.
Trotzdem haben die avr-gcc Macher die Problematik gut gelöst, man muß es nur wissen !
@Martin Funk ,
Du hast recht, ich weiß aber nicht recht, worauf Du hinauswillst.
Gruß Sebastian
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 könnte auch getfromflashandputinuart sagen, oder weiß was ich.
die Routne pushed ja was in UART (poped aber aus den flash #-o )
Ehrlichgesagt habe ich mir keine Gedanken darüber gemacht \:D/
Schlag was sinvolles vor, dann benenne ich sie um O:)
Gruß Sebastian