-
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
-
Thread
Mithilfe von printf auf UART0 und UART1 Ausgaben machen (LPC2138)
stderr = &lcd_str; fprintf(stderr, "Hello world!\n"); for (;;) { printf_P(PSTR("Enter command: ")); if (fgets(buf, sizeof buf - 1, stdin) == NULL) break; if (tolower(buf[0]) == 'q') break; switch (tolower(buf[0])) { default: printf("Unknown
-
Thread
uart progmem: invalid initialiser
Wenn ich mich richtig erinnere, ist uart_puts_P als Makro definiert und setzt dann irgendwo ein PSTR(x) ein. D.h. du musst in deiner main.c bzw. dort wo du uart_puts_P aufrufst, noch die <avr/progmem.h> includen.
-
Thread
lcd string "ü" darstellen.
RAM-Verschwendung und pgmspace.h. [c] #include <avr/pgmspace.h> set_cursor(0,2); lcd_string_P( PSTR("Belüftung") ); [/c] Werd ich demnächst mal ins Tutorial einbauen. MfG Falk
-
Thread
AVR warum braucht String RAM?
SRAM im m328 weniger weh tut. Aber selten mal ist RAM über und flash wird knapp dann natürlich ohne PSTR("hier ist ein langer Text....")
-
Thread
#defines für AT-Befehle
die at+ befehle legt man sich mit PSTR() oder PROGMEM am besten in den flash
-
Thread
[Glaskugel] Funktionsaufruf lässt Controller hängen
if (leadingZeros) { for (uint8_t i = getDigitCount(value); i < c; i++) lcd_print_P(PSTR("0")); } lcd_print(str); } //- Print string to cursor position void lcd_print(char *string) { while(*string) { lcd_putchar(*string++); } } //- Put char to atctual cursor
-
Thread
timer Probleme ctc OCRA/B
Initialisiert, Pins + timer1 and dann ist folgende Zeile eingefügt worden: [c] for(;;delay(1000)) p0(PSTR("\nMILLIS = "),(word)millis()),nl();[/c] p0 verwendet atoi der AVR lib Delay ist wie folgt definiert: [c] void delay(word ms) { while(ms--) _delay_loop_2(3999); } [/c] Ausserhalb von Timer1
-
Thread
ATtiny2313 verschluckt Zeichen beim Senden
9600 ); //init_i2c(); //sei(); //uart_puts("I2C-Sniffer" LINEFEED); //uart_puts_p(PSTR("This is a test")); uart_putc('1'); uart_putc('2'); uart_putc('3'); uart_putc('4'); uart_putc('5'); uart_putc('6'); uart_putc('7'); uart_putc('8'); uart_putc('9'); uart_putc
-
Thread
3Com 3C509B-TPO REV-A
3Com ? return 3; // no 3com // Produktkennung st = readreg(0x312); printf_P(PSTR("Product ID: %04X\n"), st); if(st != 0x9450) return 4; // no 3c5x9 [/C] Wenn es keine 3com Karte ist... selber Schuld. Und die Product ID: Ich habe hier natürlich auch nicht alle revisionen
-
Thread
AZ antennenrotor-strategie wenn ein sat vorbeifliegt
smallest) { smallest = diffminus; newaz = azminus; } Log::console(PSTR("az: %.0f, az+: %.0f, az-: %.0f, oaz %.0f, diff %.0f, smallest %.0f, newaz %.0f"), azangle, azplus, azminus, oldazangle, diff, smallest, newaz); oldazangle = newaz; // 1.8deg/step, 200
-
Thread
ATMega128 - Ram wird eng.
Strings werden vom Flash ins RAM geladen. Also ins Flash packen (PSTR Macro, pgmspace.h). Erschwert deren Verwendung zwar ungemein, macht aber den Platz frei. Finale Lösung: externes RAM.
-
Thread
Programmierung AVR
schneller lesen kann eh keiner! [c] // irgendwo sprintf_P(&menu[HAUPT_SCREEN][DATE_LINE-1][0], PSTR("%s %2d.%s %4d"), strWochenTagName_kurz(RTC.dow), RTC.day, strMonatsName_kurz( RTC.month ), RTC.year); // wird ins LCD kopiert //------------------------------------- for(uint8_t upd_line=0;
-
Thread
Progmem Funktionen
return strcpy_P((char *)str_FtoR,str); } [/c] weg? aufruf der funktion: [c] strings(PSTR("blabla")); [/c]
-
Thread
Schwer einschätzbarer Fehler(Interrupts?)
uart_putc(ETX); sreg_local = SREG; cli(); N3310_ClearLcd(); N3310_goto(0, 0); N3310_PutStr(PSTR("Temp1")); N3310_goto(42, 0); N3310_PutInt(adc_get(6)); //N3310_goto(42, 12); N3310_PutInt(istTemp); SREG = sreg_local; [/c] N3310 ist ein LCD Display. Der Code Ausschnitt wird alle 250ms durchgeführt
-
Thread
Arduino/C - sprintf_P() - Ersetzender String im Flash
strings im flash gibt es den format string %S, also grosses statt kleines s. Eventuell könnte man PSTR statt F verwenden.
-
Thread
I2C Slave mit dem Attiny 841
TWSSRA = 1<<TWBE; // reset bus error xmit_string(PSTR("BUS ERROR"), 0); } } [/c] Und im Watchdog-Interrupt gibts eins auf die Nuss, wenn I2C zu lange aktiv ist, weil dann der WDT /nicht/ zurückgesetzt wird:
-
Thread
Dummy für __flash bzw PROGMEN
pgm_read_word(a) (*(a)) #define pgm_read_pointer(a) (*(a)) #define constflash const #define PSTR(a) (a) #define strlen_P strlen #define strncpy_P strncpy #define vsnprintf_P vsnprintf #define printf_P printf #define fprintf_P fprintf #define fputs_P fputs
-
Thread
Stirngs auf dem Controller
pdutext,buf); kann man auch so machen if(strlen(buf)<2){ strcpy_P(&pdutext[strlen(pdutext)],PSTR("0")); }else strcpy(&pdutext[strlen(pdutext)],buf); das ist zwar etwas unübersichtlicher.. aber im if verbrauchst du weniger ram (weil direkt aus dem flash kopiert wird.. dann könnte man nun auch
-
Thread
strcmp_P für einzelne chars eines Strings
Der Vergleich kompletter Strings funktioniert, also z.B. folgendes: if (!strcmp_P (stringbuffer, PSTR ("\n\rHallo_alle"))) // funktioniert genauso auch: static char Empfang_test[13] PROGMEM = "\n\rHallo_alle"; if (!strcmp_P (stringbuffer, Empfang_test)) // funktioniert Was _nicht_ funktioniert
-
Thread
Nanoampere LED
erreichen 80% Wirkungsgrad und teilweise noch etwas mehr. Bei 1µA und 2,7V macht es Pel 2,7µW und ~2,2µW Pstr. Bei 470nm entspricht es 1,5*10^-4 Lumen. Dumm nur, dass man wahrscheinlich keine schwachen LEDs finden wird, die diese Wirkungsgrade haben, weil so gut sind nur die besten blauen Hochleistungs-LEDs
-
Thread
Viele verschiedene Strings über USART ausgeben
Hallo, danke für Eure Tipps! printf_P(PSTR("Text")); hats gebracht.... :-) Gruß Tido
-
Thread
AVR-GCC: snprintf_PF
zu "strlen_PF" oder "strcpy_PF" usw, daß soetwas ohne Klimmzüge geht: [c] snprintf_PF(strOut,21,PSTR("key_val=%6i"),time); [/c] Viele Grüße Nicolas
-
Thread
uAC Consolenfunktionalität
String "%s" arbeiten, aber es ist einfacher nur uac_printf (textimram) anzugeben als uac_printf (PSTR ("%s"), textimram).