-
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
-
Thread
Display mit Touchscreen bei Pollin?
lcd_line(70,35,70,20); lcd_line(21,20,70,20); lcd_gotoxy(28,24); lcd_writestringP(PSTR("Button")); while(!touched()){} lcd_gotoxy(51,50); lcd_writestringP(PSTR("das ist ein Test")); } while(1); return 0; } [/c]
wo ihr den Button gesetzt habt ? Klaus schrieb: > lcd_gotoxy(28,24); > lcd_writestringP(PSTR("Button")); Hier habt ihr doch die Stelle wo der button ist! Also fragt ihr einfach das Touch ab und errechnet dann ob ihr an der Stelle seit wo der button liegt !! greetz. Oliver
-
Thread
_delay_ms Faktor 13 zu langsam
{ unsigned char b; b=0;^M if(UCSRA & (1<<RXC)) b=1; return b; } void usart_pstr(char *s) { while (*s) { usart_putchar(*s); s++; } } int usart_putchar_printf(char var, FILE *stream) { if (var == '\n') usart_putchar('\r'); usart_putchar
-
Thread
[AVR] Strings im Flash mit __flash
%S Und wenn du die _P-Variante benutzt, muss natürlich der Formatstring selber auch ins Flash: PSTR("%S") S. R. schrieb im Beitrag #5010181: > Außerdem nutze ich ja kein PROGMEM... Für die Funktion spielt es keine Rolle, auf welche Weise du den String ins Flash befördert hast.
-
Thread
ADC mit ATmega8A
..^^ Mag er aber iwi nicht... undefined reference to 'uart_init' undefined reference to 'PSTR' undefined reference to 'uart_puts_p'
-
Thread
IRMP - Infrared Multi Protocol Decoder
*Aktualisierung* Die IRMP-Software kann unter [[IRMP]] --> Download heruntergeladen werden. Hallo zusammen, Anmerkung: Dieser Source entstand im Rahmen des Projektes "WordClock", siehe Artikel http://www.mikrocontroller.net/articles/Word_Clock bzw. Thread, der alles zum Auslösen gebracht hat: http://www.mikrocontroller.net/topic/156661 Da RC5 nicht nur veraltet, sondern mittlerweile obsolet ist und immer mehr die elektronischen Geräte der fernöstlichen Unterhaltungsindustrie in unseren Haushalten Einzug finden, ist es an der Zeit, einen IR-Decoder vorzustellen, der
-
Thread
stringkonstanten aus dem rom lesen
Was du suchst, ist dieses: [c]uart_puts(PSTR("blabla"));[/c] Aber weder diese Kurzform, noch deine lange Version, werden funktionieren, wenn uart_puts einen "normalen" String erwartet (also einen, der im RAM steht).
-
Thread
uart problem aufm atmega32
implementiert hab laeufts auch mit 18 MHz. uart_puts_P [c] #define uart_puts_P(__s) uart_puts_p(PSTR(__s)) [/c] Wie gesagt im Endeffeckt hab ich nur von Peter Fleury[1] die uart-lib um die ganzen anderen Controller erleichtert. Bei ihm steht nicht drin das man erst nen char im PROGMEM anlegen muss
-
Thread
String-Arrays im Flash-Memory bei AVR-GCC?
aReg16Names[][] PROGMEM = { "abc", "def", "ghi"}; .. geht nicht const char *aReg16Names[] PROGMEM = { PSTR("abc"), "def", "ghi"}; ..: "error: braced-group within expression allowed only inside a function" Wie könnte es gehen? Robert
-
Thread
mktime( 16:00:60 ) -> 17:01:00?
damit bleibt tm_isdst 0 und die Rechnung stimmt. Tippfehler: TZ_Etc_UTC, ist aber identisch (TZ.h,-> PSTR("UTC0")).
-
Thread
Problem mit strcmp???
. Habe aber jetzt eine Lösung gefunden die funktioniert: ...if (!strncasecmp(empfangsdaten, PSTR("OK"), 2)){... Vielen Dank für die antworten. Das mit dem vielen Speicher stimmt natürlich schon, aber ich wüsste nicht wie ich das anders machen soll?!? Ist ein ATMega16, der sollte genug Speicher
-
Thread
Ist mein Ram bereits voll?
am Programm >möglich sein So groß ist der Aufwand für die Strings doch gar nicht. Überall ein PSTR mit den zugehörigen Klammern eingefügt, dazu per replace die entsprechenden Funktionen durch ihre _P-Version ersetzt. Ist halt mal eine Stunde Fleißarbeit. Was ich nicht nachvollziehen kann, ist,
-
Thread
FatFS auf Atmega644
großartig anders wäre. Wie hast du denn deine String-Konstanten geschrieben? Sind Dir die Makros PSTR() und PROGMEM bekannt?
-
Thread
Erste UART-versuche AVRStudio meckert rum
einen String aus dem ROM ueber die RS-232 aus. Bsp.: rs232_putromstring(PSTR("Hallo Welt") -------------------------------------------------- */ void rs232_putromstring(const unsigned char *dataPtr) { unsigned char c; for (c=pgm_read_byte(dataPtr); c; ++dataPtr
-
Thread
Leds direkt miteinander vergleichen, Helligkeit lm/W
die Steigung der Geraden, wenn du die Messwerte in ein Diagramm einträgst. Messung geht dann so: Pstr = (F*Umess)/0,96. Beispielsweise misst du 367mV, was dann 3863mW wären, gerundet auf 3860mW da man sowieso nicht so genau ist. Die 0,96 sind da, weil nicht 100% des Lichtes absorbiert werden. Das
-
Thread
Wie kriege ich viele Strings in den Programm Memory
ich mache es auf vorgeschlagene Standardversion. Ich dachte aber, daß solche Strings, die nicht mit PSTR erzeugt worden sind, bei Programmstart ins RAM kopiert werden, und da wäre dann kein Platz mehr. Das mit dem unsigned char ist glaube ich, damit man auch ASCII Codes größer 127 verwenden kann. Oder
-
Thread
Die pseudo-Havard-Architektur
Thread, wo überhaupt der Unterschied zwischen funktionsname("Hallo Welt!"); und funktionsname(PSTR("Hallo Welt!"); liegt. Beides wird im µC im gleichen Speicher untergebracht bloß im ersten Fall am Ende, im zweiten Fall mitten drin. Welche Vorteile/Nachteile bietet dieses Prinzip? Warum legt
-
Thread
instabilität WinAVR und ATmega8535
schreiben, die den String aus'm ROM popelt, und die Aufrufe schreiben in der Art: LCD_WriteData(PSTR("**DisplSensors Set**")); Ein Editor mit "advanced search and replace features" (zum Beispiel mittels regulärer Ausdrücke) erledigt das in wenigen Sekunden.
-
Thread
avr-libc Fehlermeldung beim compilen
include/avr/pgmspace.h Zeile 255 die PSTR definition war auch static und nicht const. Compiled nun wunderbar