-
Thread
Uhrzeit formatieren...
Mit WinAVR aktuelle Version von avrLibC snprintf_P(buffer, 20, PSTR(" %02d:%02d:%02d %-6S"), tm.tm_hour, tm.tm_minute, tm.tm_second, dst); NULL problemo
-
Thread
LC 7981 Grafikdysplay Ansteuerung
PSTR() und PROGMEM sind wohl auch nicht so angebracht. Da fehlt allerdings noch einiges! (diverse Header-Dateien, LCD-Routinen)
-
Thread
WinApi CreateThread
des Api Mains: int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { HWND hWnd; MSG msg; WNDCLASSEX wc; HANDLE hHandle1; DWORD ThreadId1=0; .... dann mache ich irgentwann das: hHandle1
-
Thread
Stackbelastung durch printf()
Probier mal sprintf_P (cString,PSTR("init Bluetooth")); Da kann man oft ne Menge RAM mit freischaufeln.
-
Thread
Probleme mit meinem LCD-Display
(LCD_DISPLAYON | LCD_CURSORON | LCD_BLINKINGON); lcd_light(true); lcd_printlc_P(1, 1, PSTR("Hello World")); } [/c] Die Lib ist angehängt Ein I2C Scanner sagt, es ist 0x3F, aber es funktioniert nicht Durch die Verschiebung um 1 Bit vermute ich mal 0x7E, aber das funktioniert auch
-
Thread
ATMega328, komisches Verhalten bei fast vollem Speicher
[c] //fuer den Zugriff auf den Flashspeicher #include <avr/pgmspace.h> ... screen_print_p(PSTR("(Speed restored)"); ... //funktion zum Schreiben von Strings aus dem Flash void screen_print_p(const char* stringFromFlash) { register char zeichen; while( zeichen = pgm_read_byte(stringFromFlash
Hmmm, mit screen_locate(1, 2); screen_print_p(PSTR("(Speed restored)")); funktioniert das Ding wiederum. Krank! Gruß, Sebastian
-
Thread
STM32 ohne JTAG starten
= "K pressed long"; uputs(c); Aber das ist etwas umständlich zu schreiben. Beim AVR hab ich PSTR benutzt. Aber der hat auch ne andere Architektur. Bin noch etwas Newbie mit den ARMs ;) Aber danke für die geduldige Hilfe!
-
Thread
AVR - USART RX via Interrupt, funktioniert nicht
{ intflags.rx_int = 0; switch (rxbuff) { case 'h': printstr_p(PSTR("\nHelp Please help me Please")); break; } } } }
-
Thread
Unerwünschter Reset - wie Interrupt abfangen?
wusste ich bis gestern noch nicht, dass in diesem Fall die Strings im RAM angelegt werden. Umstieg auf PSTR("....") und fputs_P() brachte dann auch eine deutliche RAM-Entlastung, und seitdem läuft alles wieder stabil. Vorsorglich habe ich jetzt noch ein paar lokale Variablen, sofern sinnvoll machbar, "globalisiert
-
Thread
LCD - Menu
@Stefan, PGM_P pStr = pgm_read_word( &menue[0].text ); und dann zB lcd_printf_P(pStr);
-
Thread
uC stürzt beu Zugriff auf MMC ab
jeder Text der rechts steht immer noch ein String im RAM und belegt auch ram. strcpy_P(LCD_buffer,PSTR("Hallo Test3")); sollte genau das machen, was du beschreibst. Die beste Lösung wäre aber, die LCD Routinen so umzubauen, dass sie direkt aus dem Flash lesen.
-
Thread
ATmega328PB macht was er will
!= 0) { free(p); } else { size=0; } return sprintf_P(buffer,PSTR("%5u"),size); } [/c] Die Funktion schreibt die das Ergebnis als Text in den Buffer und liefert die Anzahl der Zeichen zurück. Fragt mich bitte nicht, von wo ich das kopiert habe. Habe ich vergessen
-
Thread
Tasterabfrage nach Dannegger – plötzlich unplausible Resultate
der Compiler damit das macht was Du moechtest? Ich meine das sollte so aussehen lcd_puts_P(PSTR("wait"));
pfleury__lcd.html#gd33c0d74b983e3f2c36f3278a462be15 [code] #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) [/code]
-
Thread
C Preprozessor-Trickserei
aufgerufen wird sieht so aus: [c] void __wdt_reset(uint8_t moduleID, uint16_t line) { uart_puts_P(PSTR("wdt_reset: ")); uintOut(moduleID); uart_putchar(','); uintOut(line); nl(); wdt_reset(); } [/c] Weil sie in watchdog.c liegt, wird dort wdt_reset aus avr/wdt.h ausgeführt
-
Thread
Variablenausgabe auf GLCD
schon probiert: ks0108Init(); ks0108GotoXY(0,4); fdevopen(ks0108PutChar,Null, 0); printf_P(PSTR("Variable: %d"), z); habe ich hier ausm forum aber er meckert an den 3 parametern rum und will nur 2 haben.
-
Thread
Arduino Mega SRAM erweitern
display oder viel "strings" ? Dann bestudiere dich mal die F() funktion von Arduino oder print_P(PSTR()) funktionen von C. http://playground.arduino.cc/Learning/Memory Dabei denke ich das mann besser z.B. einen 2/4/8 Gb sd-karte benutzen kann als extra memory. Flexibeler und heutzutage mehr standard
-
Thread
H-Brücke für Gleichstrommotor 12V / 20A gesucht
L6201PSTR wär ev eine möglichkeit
-
Thread
Bootloader-Test; großes Hex-File erzeugen
probates Mittel, mit wenig Aufwand viel Speicher zu verbrauchen, ohne tausend mal [c] uart_puts(PSTR("kjhkjhkjhkhkjh")); [/c] zuschreiben? Grüße, Alex
-
Thread
Strings allgemein
damit "welt" direkt aus dem FLASH // geladen wird und kein RAM verschwendet wird strcpy_P(test,PSTR("welt")); MfG Peter
-
Thread
Sonof Obi Switch und Tasmota Prellen
// Settings.flag.button_single = 0; snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_SETOPTION "13 0")); // Disable single press only ExecuteCommand(scmnd, SRC_BUTTON); }[/c] Das dürfte je nach Laufzeit (wann gedrückt), mehr schlecht als recht funktionieren
-
Thread
Speicherort Übergabeparamter
erwägen, String im Programmspeicher statt im RAM abzulegen. Bei AVR geht das zum Beispiel so: puts_P(PSTR("Hallo")); In diesem Fall ein Zeiger auf den Programmspeicher (=Flash, nicht RAM) übergeben, in dem der Text steht. Und weil der Zeiger in einem anderen Adressrau liegt, muss man die Funtkion puts_P
-
Thread
Alternative zu sprintf
RAM, der mit konstanten Strings vollgestopft wird. Wenn AVR dann schaue mal unter sprintf_P und PSTR nach. https://cpp.hotexamples.com/examples/-/-/sprintf_P/cpp-sprintf_p-function-examples.html
-
Thread
Datum & Zeit (GCC, AVR)
p.s.: [c]PGM_P s = PSTR(__DATE__);[/c]
-
Thread
ATMega32 Stack overflow. Wie vermeiden/analysieren?
Lösungvorschlag gaga. Die vernünftige Lösung wurde bereits oben genannt: z.B. sprintf_P() in Kombination mit PSTR().
-
Thread
Warnung bei volatile (AVR-GCC)
*/ cli(); memcpy(timedate,TimeDate,sizeof(timedate)); SREG=sreg; fprintf_P(&DevLCD,PSTR("%02u:%02u %02u.%02u.%02u"), timedate[0],timedate[1],timedate[2],timedate[3],timedate[4]); ... } Wahrscheinlich erscheinen die Warnungen im Zusammenhang mit der Verwendung von Zeigern
-
Thread
uip string ausgabe
Protosockets kümmern sich um diese Wiedeholung automatisch: [code] PSOCK_SEND_STR_P(&app_state->socket,PSTR("Hello\n")); [/code] Lies das: http://stefanfrings.de/avr_io/protosockets.html
-
Thread
AX8 Softcore Problem.
schleierhaft. Dafür hat der AVR spezielle Instruktionen bzw. Opcodes. Da muss man doch mit _flash und PSTR arbeiten. Duke
-
Thread
AVR: USART und Strings im RXIE-Modus
string.h> U8 rxpuf[16]; while(USARTBufferOut(rxpuf)) ; if (strncmp_P ( rxpuf, PSTR("$"), 1) == 0) OutChar('O'); [/c] Das mit den Zeigern kann manchmal echt verwirrend sein.
-
Thread
Leuchtdioden LEDs Beleuchtungsstärke für Taglicht
müsstest Du nochmal präziser stellen. Die Beleuchtungsstärke hat die Einheit Lux, also lm/m², also (Pstr * vLamda) / m². Es geht hier also um die Lichtmenge die pro Fläche fällt, also um klassische Beleuchtungsaufgaben und nicht um Signalzwecke. Für reine Signalzwecke ist da ein extrem kleiner Bruchteil
-
Thread
Zeiger auf 2D Char-Array - casten
merkwürdige Effekte beobachte ;) Wie sähe denn eine korrekte Definition aus? Muss ich die Strings mit PSTR("blabla") ins Array schreiben? Gruß, Daniel
-
Thread
Hilfe bei Code-Interpretation
Nachtrag: Dafür gibt es eigentlich seit ewigen Zeiten das Makro PSTR in der avrlibc. Oliver
-
Thread
einzelne Zeichen aus String auslesen in C
; Dann diese Funktion implementieren: void lcdPutString( char * dat ) { char * pStr; pStr = dat; for(;*pStr!=0;pStr++) { lcdPutchar( *pStr ); } } Und rufe dann auf: lcdPutString( beispielArray ); Sollte eigentlich Funktionieren ;-) Alternativ, kann man auch ohne
-
Thread
Buss'scher Webserver - meine Probleme
return 3; // no 3com // Produktkennung st = readreg(0x312); printf_P(PSTR("Product ID: %04X\n"), st); if(st != 0x9450) return 4; // no 3c5x9 [/C]
-
Thread
Problem mit Textausgabe an UART
uartPutChar( c ); c = pgm_read_byte( buffer++ ); } } ... uartPutString_P( PSTR( " THIS IS " ) ); [/C]
-
Thread
Strings vergleichen wenn Sonderzeichen enthalten sind
Rückgabe eines Wertes aus einer `brace group') übrigens wirklich, siehe die Implementierung des PSTR-Makros in der avr-libc. Dort ist es aber ein Makro, mit dem explizit im ROM Speicher angefordert wird.
-
Thread
ATtiny44 -Software Uart - nur senden
// Macro to send strings stored in program memory space #define PRINT(format, ...) printf_P(PSTR(format), ## __VA_ARGS__) // Write a character to the serial port static int serial_write(char cData, FILE *pxStream) { // Recursive function to prepend a carriage return before
-
Thread
Frage zu Pointern - Menu
Strings die neue Variable eintragen, um den String auch im Flash unterzubringen. Evtl. geht auch PSTR("Modus aendern") in der Initilisierung, aber ich glaube, das frisst der Compiler nicht. > Und diese Adresse gebe ich dann an meine > putsf Routine weiter, damit sie den Text ausgeben kann? Ja
-
Thread
Mein erstes WinAPI Programm
mehrmals.\""; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { int iAntwort = MessageBox(NULL, szWitz, "Ha, ha, ha, ha...", MB_ICONINFORMATION | MB_OKCANCEL | MB_DEFBUTTON1); if (IDOK == iAntwort) { MessageBox(NULL