-
PDF
AVR-C-Tutorial.pdf
(oder _P) versehen sind. Von einigen Bibliotheken werden Makros definiert, die "automatisch" ein PSTR bei Verwendung einer Funktion einfügen. Ein Blick in den Header-File der Bibliothek zeigt, ob dies der Fall ist. Ein Beispiel aus P. Fleurys lcd-Library: // Ausschnitt aus dem Header-File lcd.h der
in „AVR-C-Tutorial“ · Mikrocontroller und Digitale Elektronik ·
-
Thread
LCD, HD44780 und KS0076
automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H [/c] main.c [c]int main(void) { //Globale Interrupts einschalten sei(); /*-------------------------------------------------------------------------
Mikrocontroller und Digitale Elektronik ·Sebastian Röhrer · ·33 Antworten
-
Datei
main.c
32 bytes from flash for (i=0; i<32; i++) { mp3_data[i]=spi_io(0); // debug // sprintf_P(tmp_str, PSTR("%.2X "), mp3_data[i]); // uart0_puts(tmp_str); } flash_byte+= 32; if (flash_byte >= 528) { flash_byte -= 528; flash_page += 1024; if (flash_page == 0x800000) flash_page=0; } FLASH_NCS // feed VS1011
in „WAV mit VS1011 abspielen“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
code_schnipsel.c
ESP.restart(); } time(&rawtime); strftime (time_str,MAX_STRING-1,"%T", &timeinfo); sprintf_P(s_out_str,PSTR("%s Uhr"), time_str); Serial.println(s_out_str); } // if( strstr(serial_in_command, "gettime") ) } // if( strstr(serial_in_command, "time") ) else if( !strcmp(serial_in_command, "mute") ) { (!mute)
-
Datei
Parser.c
ifndef TRUE #define TRUE 1 #define FALSE 0 #endif #define BAUD 9600 #define uart_puts_P(x) uart_puts_p(PSTR(x)) void uart_init( uint16_t Baud ) { UCSRB |= (1<<TXEN) | ( 1<<RXEN); UCSRC |= (1<<URSEL) | (1<<UCSZ0)| (1<<UCSZ1); UBRRH = (uint8_t)((F_CPU/16/Baud-1)>>8); UBRRL = (uint8_t) (F_CPU/16/Baud-1); } void
in „Falsch gedacht... Stackframe“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
oliver_ds1820.c
_t T = 0; uint16_t T1 = 0; uart_init((UART_BAUD_SELECT((BAUD),F_CPU))); sei(); #if 1 uart_puts_P( PSTR("\0141-wire DS18x20...\r\n") ); uart_puts("ROM Code: "); owReadROMCode(); uart_puts("\r\n"); #else // Buggy! uart_puts_P( "\rVersuch eines 1 Wire Protokolls\r" ); uart_puts_P( "---------------------
in „1Wire Problem - mal wieder - mit DS18B20 in C“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
serial.h
volatile unsigned char busy; extern void _serputs_P(char const *txt); #define serputs_P(text) _serputs_P(PSTR(text)) // Anpassungen an die vielen bescheuerten Namensänderungen die ATMEL // quasi von ATMega zu ATMega in den Datenblättern vornimmt. // Es könnte soo einfach sein. #if defined (__AVR_ATmega32__)
in „Atmel ist unter "Profis" nicht gerade beliebt - Warum?“ · Mikrocontroller und Digitale Elektronik ·
-
Thread
atmega328 funktioniert teilweise nicht
automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H [/c]
Mikrocontroller und Digitale Elektronik ·Lowtzow .... · ·7 Antworten
-
Datei
Webserver_1-Wire.txt
* d.h. OW@nn für Balkenbreite verwenden und OW@mm für Celsius-Anzeige */ if (strncasecmp_P(token,PSTR("OW@"),3)==0) { HTTP_DEBUG(" - 1-wire"); b = (token[3]-48)*10; b +=(token[4]-48); if (b >= 20) { // Offset bei Sensor# abziehen und Wert als Dezimalzahl ausgeben b -= 20; int8_t i = (int8_t)(ow_array
in „AVR für wenig Geld im LAN“ · Mikrocontroller und Digitale Elektronik ·
-
Thread
Asuros fahren nicht
data Pointer to string */ void SerPrint_p(const char *data); #define SerPrint_P(_str) SerPrint_p(PSTR(_str)) /**************** Print Funktionen Floting Point printf.c ********/ /*! * \~english * \brief Send a Float value converted to a string to UART * \param wert float value * \param vorkomma
Mikrocontroller und Digitale Elektronik ·Anton · ·30 Antworten
-
Datei
T6963c.h
unsigned char,const char *Buffer,...); #define T6963_print(a,b,format, args...) T6963_print_P(a,b,PSTR(format) , ## args) #endif //T6963C_H
in „AVR für wenig Geld im LAN“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „winziges Problem“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
s555ht.c
; } int main() { #ifdef DEBUG uart_init(); stdout=&usart_out; #endif sei(); #ifdef DEBUG printf_P(PSTR( "Hallo Welt\n\r")); #endif // Timer 2 initialisieren TCNT2 = 0; TCCR2A = 0; TCCR2B = _BV(CS20); // kein Vorteiler TIMSK2 = _BV(TOIE2); // Interrupt an DDRB |= _BV(PB0); // Testpin als Ausgang setzten
-
Datei
TWI_IR_Master.c
unsigned char TWI_targetSlaveAddress, TWI_operation=0; USART_Init (MYUBRR); USART_getStringAdr ((PSTR("USART OK \n"))); TWI_Master_Initialise(); sei(); TWI_targetSlaveAddress = 0x07; // This example code runs forever; sends a byte to the slave, then requests a byte // from the slave and stores it on
in „AVR315 mit Warteschleifenproblem“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „DCF auf INT0“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
mw_lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „DCF auf INT0“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcdpcf8574.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „Eclipse Kompilierung LCD Buchstabensalat“ · Mikrocontroller und Digitale Elektronik ·
-
Thread
Peter Fleury LCD Lib für AT90USB162?
automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H [/c] und hier die lcd.c [c]/**************************************************************************** Title : HD44780U LCD library Author: Peter Fleury
Mikrocontroller und Digitale Elektronik ·Tobias Pfundt · ·11 Antworten
-
Datei
NRF24_SendRcvMIesp.ino
remain = payloadLen - 2 - 1 - 4 - 4 + 4; if (remain < 32) { dumpData(&p->packet[11], remain); printf_P(PSTR("%04X "), crc); if (((crc >> 8) != p->packet[payloadLen + 2]) || ((crc & 0xFF) != p->packet[payloadLen + 3])) DEBUG_OUT.print(0); else DEBUG_OUT.print(1); } else { DEBUG_OUT.print(F("Ill remain ")); DEBUG_OUT.print(remain); } } else { dumpData(&p->packet[2], payloadLen + 2); printf_P(PSTR("%04X "), crc); } DEBUG_OUT.println(); }//----DumpRcvPacket---------------------------------------------------------------------------- void HandleSerialCmd(void){ //read from serial for WR control
in „Wechselrichter Hoymiles HM-xxxx 2,4 GhZ Nordic Protokoll?“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
NRF24_SendRcvMIesp.ino
remain = payloadLen - 2 - 1 - 4 - 4 + 4; if (remain < 32) { dumpData(&p->packet[11], remain); printf_P(PSTR("%04X "), crc); if (((crc >> 8) != p->packet[payloadLen + 2]) || ((crc & 0xFF) != p->packet[payloadLen + 3])) DEBUG_OUT.print(0); else DEBUG_OUT.print(1); } else { DEBUG_OUT.print(F("Ill remain ")); DEBUG_OUT.print(remain); } } else { dumpData(&p->packet[2], payloadLen + 2); printf_P(PSTR("%04X "), crc); } DEBUG_OUT.println(); }//----DumpRcvPacket---------------------------------------------------------------------------- void HandleSerialCmd(void){ //read from serial for WR control
in „Wechselrichter Hoymiles HM-xxxx 2,4 GhZ Nordic Protokoll?“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
NRF24_SendRcvMIesp.ino
remain = payloadLen - 2 - 1 - 4 - 4 + 4; if (remain < 32) { dumpData(&p->packet[11], remain); printf_P(PSTR("%04X "), crc); if (((crc >> 8) != p->packet[payloadLen + 2]) || ((crc & 0xFF) != p->packet[payloadLen + 3])) DEBUG_OUT.print(0); else DEBUG_OUT.print(1); } else { DEBUG_OUT.print(F("Ill remain ")); DEBUG_OUT.print(remain); } } else { dumpData(&p->packet[2], payloadLen + 2); printf_P(PSTR("%04X "), crc); } DEBUG_OUT.println(); }//----DumpRcvPacket---------------------------------------------------------------------------- void HandleSerialCmd(void){ //read from serial for WR control
in „Wechselrichter Hoymiles HM-xxxx 2,4 GhZ Nordic Protokoll?“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
NRF24_SendRcvMIesp.ino
remain = payloadLen - 2 - 1 - 4 - 4 + 4; if (remain < 32) { dumpData(&p->packet[11], remain); printf_P(PSTR("%04X "), crc); if (((crc >> 8) != p->packet[payloadLen + 2]) || ((crc & 0xFF) != p->packet[payloadLen + 3])) DEBUG_OUT.print(0); else DEBUG_OUT.print(1); } else { DEBUG_OUT.print(F("Ill remain ")); DEBUG_OUT.print(remain); } } else { dumpData(&p->packet[2], payloadLen + 2); printf_P(PSTR("%04X "), crc); } DEBUG_OUT.println(); }//----DumpRcvPacket---------------------------------------------------------------------------- void HandleSerialCmd(void){ //read from serial for WR control
in „Wechselrichter Hoymiles HM-xxxx 2,4 GhZ Nordic Protokoll?“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
NRF24_SendRcvMIesp.ino
remain = payloadLen - 2 - 1 - 4 - 4 + 4; if (remain < 32) { dumpData(&p->packet[11], remain); printf_P(PSTR("%04X "), crc); if (((crc >> 8) != p->packet[payloadLen + 2]) || ((crc & 0xFF) != p->packet[payloadLen + 3])) DEBUG_OUT.print(0); else DEBUG_OUT.print(1); } else { DEBUG_OUT.print(F("Ill remain ")); DEBUG_OUT.print(remain); } } else { dumpData(&p->packet[2], payloadLen + 2); printf_P(PSTR("%04X "), crc); } DEBUG_OUT.println(); }//----DumpRcvPacket---------------------------------------------------------------------------- void HandleSerialCmd(void){ //read from serial for WR control
in „Wechselrichter Hoymiles HM-xxxx 2,4 GhZ Nordic Protokoll?“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „Problem mit LCD“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
tm1638.txt
zu verwenden, welches fb1638_puts aufruft. Beispiel Textausgabe "Error" linksbuendig: fb1638_puts(PSTR("Error"), 7); --------------------------------------------------- fb1638_prints(s, pos) --------------------------------------------------- Makro, das den Umgang mit fb1638_puts vereinfacht. Es wird
in „7-Segment und Keypad Software für TM1638“ · Projekte & Code ·
-
Datei
twi_lib.c
uint10msStepsSince( uintTimeOutStart ); if( uchrTwiBusyTime >= conTwiTimeOut ) { /**/ uart_puts_p( PSTR("HW TWI Time out: ") ); /**/ uart_putc('.'); /**/ uart_puts( itoa( uchrTwiBusyTime, strDest, 10 ) ); // difference /**/ uart_putc(' '); /**/ uart_puts( itoa( uintTimeOutStart, strDest, 10 ) ); // Start
in „TWI MUX per SW an einem Port“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
owucnet.c
digit |= (msb&0x7)<<4; decimal = lsb&0xf; decimal *= DS18B20_DECIMAL_STEPS_12BIT; sprintf_P(str, PSTR("%+d.%04u C"), digit, decimal); } void ds18b20_test(const uint8_t* rom, char *str) { ds18b20_startconv(rom); _delay_ms(800); uint16_t rawtemp = ds18b20_readtemp(rom); ds18b20_rawtmptostr(rawtemp, str
in „DS18B20: Mehrere Sensoren am Bus, nur letzte Temp. stimmt“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „Display geht immernoch nicht.“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
defines.h
uint32_t #define PROGMEM typedef char PROGMEM prog_char; #define PGM_P const prog_char * #define PSTR(s) ((const PROGMEM char *)(s)) #define pgm_read_byte * #define sei() #define cli() /* void _delay_ms(volatile uint32_t ms) { u32 ii,j; j=100000; while(j){ j--; } }*/ void _delay_ms(volatile uint32_t
in „Header Datei für Konfiguration erstellen“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
NRF24_SendRcvMIesp.ino
remain = payloadLen - 2 - 1 - 4 - 4 + 4; if (remain < 32) { dumpData(&p->packet[11], remain); printf_P(PSTR("%04X "), crc); if (((crc >> 8) != p->packet[payloadLen + 2]) || ((crc & 0xFF) != p->packet[payloadLen + 3])) DEBUG_OUT.print(0); else DEBUG_OUT.print(1); } else { DEBUG_OUT.print(F("Ill remain ")); DEBUG_OUT.print(remain); } } else { dumpData(&p->packet[2], payloadLen + 2); printf_P(PSTR("%04X "), crc); } DEBUG_OUT.println(); }//----DumpRcvPacket---------------------------------------------------------------------------- void HandleSerialCmd(void){ //read from serial for WR control
in „Wechselrichter Hoymiles HM-xxxx 2,4 GhZ Nordic Protokoll?“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
NRF24_SendRcvMIesp.ino
remain = payloadLen - 2 - 1 - 4 - 4 + 4; if (remain < 32) { dumpData(&p->packet[11], remain); printf_P(PSTR("%04X "), crc); if (((crc >> 8) != p->packet[payloadLen + 2]) || ((crc & 0xFF) != p->packet[payloadLen + 3])) DEBUG_OUT.print(0); else DEBUG_OUT.print(1); } else { DEBUG_OUT.print(F("Ill remain ")); DEBUG_OUT.print(remain); } } else { dumpData(&p->packet[2], payloadLen + 2); printf_P(PSTR("%04X "), crc); } DEBUG_OUT.println(); }//----DumpRcvPacket---------------------------------------------------------------------------- void HandleSerialCmd(void){ //read from serial for WR control
in „Wechselrichter Hoymiles HM-xxxx 2,4 GhZ Nordic Protokoll?“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
NRF24_SendRcvMIesp.ino
remain = payloadLen - 2 - 1 - 4 - 4 + 4; if (remain < 32) { dumpData(&p->packet[11], remain); printf_P(PSTR("%04X "), crc); if (((crc >> 8) != p->packet[payloadLen + 2]) || ((crc & 0xFF) != p->packet[payloadLen + 3])) DEBUG_OUT.print(0); else DEBUG_OUT.print(1); } else { DEBUG_OUT.print(F("Ill remain ")); DEBUG_OUT.print(remain); } } else { dumpData(&p->packet[2], payloadLen + 2); printf_P(PSTR("%04X "), crc); } DEBUG_OUT.println(); }//----DumpRcvPacket---------------------------------------------------------------------------- void HandleSerialCmd(void){ //read from serial for WR control
in „Wechselrichter Hoymiles HM-xxxx 2,4 GhZ Nordic Protokoll?“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „LCD von Peter Fleury“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
tm1638.txt
zu verwenden, welches fb1638_puts aufruft. Beispiel Textausgabe "Error" linksbuendig: fb1638_puts(PSTR("Error"), 7); --------------------------------------------------- fb1638_prints(s, pos) --------------------------------------------------- Makro, das den Umgang mit fb1638_puts vereinfacht. Es wird
in „7-Segment und Keypad Software für TM1638“ · Projekte & Code ·
-
Artikel
AVR-GCC-Tutorial
das erste ungleiche Zeichen in string_im_ram ist größer als in "Hallo Welt" Zu beachten ist, dass PSTR nur innerhalb von Funktionen verwendet werden kann. Array aus Strings: Arrays aus Strings im Flash-Speicher werden in zwei Schritten angelegt: Zuerst die einzelnen Elemente des Arrays und im Anschluss
muss. Dieses Konstrukt ist nur ausserhalb von Funktionen möglich und kann daher nicht als Ersatz für PSTR aus der avr-libc dienen. Soll array ein 2-dimensonales Array sein anstatt ein 1-dimensionales Array von Zeigern, dann geht das ohne große Verrenkungen: Weiters besteht die Möglichkeit, array analog
Artikel ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „LCD von Peter Fleury“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „1*16 LCD _mit Peter Fleury's LCD library“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „Problem LCD 2x8 Zeichen“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „LCD Problem“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „atmega8 und lcd“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „Makefile produziert undefined reference to“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd_new.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „mal wieder ein LCD am Atmega8“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „LCD zeigt nur die Hälfte an“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „LCD zeigt nur die Hälfte an“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
LCD.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „WinAVR Studio gibt Fehlermeldung aus beim "Build Projekt"“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „Grafikfähiger LCD Controller für 320x240 LCD mit 4 Graustufen“ · Projekte & Code ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „Kompilieren von C Dateien in Kubuntu“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „Kompilieren von C Dateien in Kubuntu“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „LCD Displaytech 164a“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
lcd.h
for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) /*@}*/ #endif //LCD_H
in „LCD + ATMEGA32“ · Mikrocontroller und Digitale Elektronik ·