Hallo,
Was stellst du dir den vor, was der Prozessor jetzt machen sollte?
MfG Alex
Hallo,
ich möchte die Programmierung von AVRs in c++, was ich nur im Zusammenhang mit win32-Systemen kenne, erlernen, komm damit aber irgenwie nicht klar. Wieso klappt z.B. folgendes nicht:der Compiler(AVR-GCC) meldet nämlich, dass das Objekt "cout" nicht deklariert ist. Kann mir bitte jemand weiterhelfen?Code:#include <avr\io.h> int main(void) { cout << "Hallo Welt\n"; return 0; }
MfG Mark
Hallo,
Was stellst du dir den vor, was der Prozessor jetzt machen sollte?
MfG Alex
Auf nen AVR gibt es keine Standardausgabe, wo deine Meldung landet, wenn du ncihts anderes einstellst. Du musst dich schon selbst drum kümmern, wie du dein Hallo Welt zu Gesicht bekommst. Wohin hättest du den Text denn gern? auf die serielle Schnittstelle, auf nen LCD, auf einen Drucker, per Funk oder per Ethernet versendet? Der Compiler kann nicht gedankenlesen. Du muss schon ne passende lib für die Ausgabe organisieren und einbinden oder selbst schreiben.
Der Text sollte mit dem UART gesendet werden (wie <print "Hallo Welt> in BASCOM)
Wie schreibt man denn eine lib?
Hi,
schau mal hier: http://www.mikrocontroller.net/artic...R-GCC-Tutorial
Da steht auch wie du etwas per UART senden kannst.
lib steht für Library, sprich eine Datei die Funktionen enthält. Da kannst du dir dann eine Funktion schreiben die, dein UART initialisiert und eine der du einfach den auszugebenden Text als Parameter übergibst, und diese Funktion den Text dann per UART sendet.
Achja, wenn du bei C++ 'cout' bzw 'cin' verwenden willst musst du die lib <iostream> einbinden.
MfG
Hallo coCo,
die lib <iostream> hab ich nicht gefunden.
außerdem weiss ich wie man einzelne Zeichen mit dem UART sendet, aber ich möchte eine Funktion haben, die selbst das Umwandeln in einen ASCII-String übernimmt, ohne dass ich eingeben muss, was es für ein Datentyp ist, den ich senden möchte.
MfG Mark
deine vorstellungen von mikrocontrollern sind seltsam. natürlich findest du keine <iostream> denn es ist nunmal kein PC und besitzt keinen festgelegten iostream. scheinbar möchtest du laufen können, ohne gehen zu müssen. ich würde dir nahelegen, bei visual brainfuck.dot.net zu bleiben. oder einen blick ins datenblatt zu werfen.
wenn du weisst, wie man einzelne zeichen übermittelt, kannst du die doch fluxx mit einer schleife durchgehen und senden?
meine Vorstellungen von Microcontrollern sind nicht seltsam, das ich sehr wohl weiss was ein AVR hardwaremäßig (nicht) kann. schließlich hab ich bisher auch größere Programme in asm geschrieben, was mir aber mit der Zeit zu aufwändig wurde.
mein eigentliches problem ist, dass ich nicht weiss, wie man in c++ folgendes realisiert:
void irgendwas(a)
{
anweisung an den compiler: wann a ein float ist, dann f1(float a)
wenn a ein int ist, dann f2(int a)
u.s.w.
}
Die Funktionen void f1(float a) und void f2(int a) stehen irgendwo im Quelltext
AVR-GCC kann mit C++ spezifischen Anweisungen nichts anfangen. Ein AVR ist ein 8-bit-System mit stark eingeschränkem Arbeitsspeicher, das müsstest du doch vom ASM-Programmieren her wissen. C++ Funktionen sind aber alles andere als Arbeitsspeicherschonend. Du wirst von deinem C das ++ weglassen müssen um Erfolg zu haben.
avr-gcc bietet keine 100% C++-Unterstützung:Zitat von p_mork
https://www.roboternetz.de/wissen/in...vr-gcc#C.2B.2B
Als "Hallo Welt" ist eine Textausgabe schon recht kompliziert. Man fängt vielleicht besser ne Ebene einfacher an, wie in
https://www.roboternetz.de/wissen/in...LED_blinken%29
Disclaimer: none. Sue me.
Lesezeichen