NIBOBee sagt "Hallo Welt!"
Hallo zusammen,
ich habe mir einen USB UART-Wandler (http://watterott.com/FTDI-Basic-Breakout-5V) besorgt und mir ein Programm gemacht das die Bee "Hallo Welt" sagen lässt:
Code:
#include <nibobee/iodefs.h>
#include <nibobee/led.h>
#include <nibobee/line.h>
void writeChar(uint8_t data );
void writeString(char *string);
int main() {
writeString("NIBOBee sagt\n\r");
writeString("Hallo Welt!\n\r");
}
void writeChar(uint8_t data )
{
while ( !( UCSRA & (1<<UDRE)) );
UDR = data;
}
void writeString(char *string)
{
while(*string)
writeChar(*string++);
}
Lässt sich fehlerfrei kompilieren und auch flashen - nur kommt im Terminalprogramm nichts an.
Bitte um Hilfe, was ich falsch gemacht haben könnte.
Liste der Anhänge anzeigen (Anzahl: 2)
In einem völlig anderen Projekt hatte ich den seriellen Port so eingerichtet, dass die ganzen Funktionen der Standard C Library den seriellen Port als Konsole verwenden.
So kann man z.B. puts() und printf() für Ausgaben, sowie fgets() und scanf() für Eingaben benutzen. Beispiel:
Code:
char buffer[100];
int main(void) {
initserial();
while (1) {
fgets(buffer,sizeof(buffer),stdin);
if (strcmp_P(buffer,PSTR("help"))==0) {
puts_P(PSTR("Can I help you?"));
}
}
return 0;
}
Wer diese PSTR() Sachen nicht kennt: Zeichenketten belegen doppelt Speicher (und zwar RAM und ROM), wenn man es nicht so macht. Die Funktion puts_P gibt eine Zeichenkette aus, die im Programmspeicher liegt, während puts vorraussetzt, dass die Zeichenkette im RAM liegt.
Schlecht: puts("Hallo");
Besser: puts_P(PSTR("Hallo"));