PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bitte um Hilfe beim Einstieg in AVR-C++ beim Studio 7



oberallgeier
27.04.2017, 16:44
Die erste Erfahrung mit C++ ist ein paste´n´copy-Programm für ein I²C-Display - das nach einigen Mühen läuft. Meine Hilfesuche im www ergab einen erfrischenden Satz:

a couple of months ago I started with AVR and c++. It's rather painful adventure ..
Ja, es ist ziemlich mühevoll - und richtig erhellende Ratschläge hatte ich nicht wirklich gefunden, auch die beiden nützlichen Seiten von Mikrocontroller.net über C++ und Cvs.C++ halfen mir nicht wirklich. Ich habe bereits einen ersten File eingebunden - funktionstüchtig: "disply01.h" , der eine Liste von Bitmaps enthält.

Hier ein winziger Überblick über den aktuellen Projektstand (https://dl.dropbox.com/s/7q8n144k30s06ow/Auszug_OLED1306-delay.jpg?dl=0).

Nun würde ich gerne ein Wait/Delay nutzen (um "auf die Schnelle" eine Pause zu bekommen - und ja, ich weiß, dass das mit einem interruptgetriebenen Timer "ordentlich"-er geht). Klappt weder mit der "#include <util/delay.h>" und dem dazugehörigen "_delay_ms ( 200 );" noch mit dem selbst geschriebenen Progrämmchen

// ================================================== =========================== =
//### Programm 1 ms pausieren lassen !! Der Pausenwert ist nur experimentell !
void wms (uint16_t ms)
{
for(; ms>0; ms--)
{
uint16_t __c = 4000;
__asm__ volatile (
"1: sbiw %0,1" "\n\t"
"brne 1b"
: "=w" (__c)
: "0" (__c)
);
}
}
// ================================================== =========================== =

Daher die

Frage 1 - gibt es ein empfehlenswertes Tutorial für C++ in ATMEL Stuido 7 ? Wo, wie heißt es?

Aktuell also die Bitte
Frage2 - wie benutze ich im "main" das "_delay_.." und nach MÖglichkeit hilfe beim erstellen eines ZUSÄTZLICHEN Moduls timer.(h und/oder gcc) für mein eigenes wait-Millisekunden-Progrämmchen, das in C Codes wunderbar läuft.

Welches "simple" Problem sehe ich aktuell:
Wie erstelle ich ein zusätzliches, neues Modul, das zusätzliche Funktionen enthält.

Da ich also offensichtlich schon die "richtige" Struktur eines C++-Programms nicht kenne, wäre das Tutorial wohl vorrangig.

Danke für eure Hilfe(n) !

Jimmybot
28.04.2017, 09:07
Darf ich eine Buchempfehlenung aussprechen: https://www.amazon.de/gp/aw/d/3486589881/ref=dbs_a_w_dp_3486589881
Das Buch geht auf die Programmiersprachen Assambler und C++ ein. Anschließend werden Funktionen des Controllers durchgegangen und mit beispielcode für Assembler und C++ besprochenen.

Für deine Delay.h Problem, kann ich helfen, wenn ich dein komplettes Programm sehe. Habe da eine Vermutung: man muss den CPU takt vor dem einbinden von delay.h definieren.

shedepe
28.04.2017, 09:44
Hey,
könntest du einfach deinen Fehler posten? Prinzipiell ist die Programmierung in C++ nicht anders als die Programmierung in C. D.h. du könntest direkt erst mal deinen C Code nehmen und durch den C++ Compiler werfen.
Desweiteren weiß ich nicht was du unter Modul verstehst? Meinst du ein neue Klasse, ein neues C++ File?

oberallgeier
28.04.2017, 13:21
Darf ich eine Buchempfehlenung aussprechen ..Danke für die Buchempfehlung, ich werd es mir überlegen: das Buch ist immerhin schon sieben Jahre alt, da dürften neuere Mikrocontroller noch recht unbekannt sein.


.. Für deine Delay.h Problem .. Vermutung: man muss den CPU takt vor dem einbinden von delay.h definieren.Ja, das hatte ich aus den früheren Fehlermeldungen rausgelesen und entsprechend angepasst. Seit gestern spät abends ist es ohne Fehlermeldung oder Warnung kompilierbar - und das delay läuft auch.


.. einfach deinen Fehler posten? .. Programmierung in C++ nicht anders als .. in C.. was du unter Modul verstehst? .. neue Klasse, ein neues C++ File?Fehlermeldungen und Warnungen gibts mittlerweile garnicht mehr, auch das delay läuft ebenso wie meine eigene wms-Funktion (Nur warten, sozusagen der Heizstrahler-effekt beim µProzessor).

Mit "Modul/e" meinte ich neue Files, hier "timer.h" dazu natürlich "timer.cpp" und die entsprechenden Einbindungen "include *.h" mit Funktionsprototyp(en) und Weiterleitung nach *.cpp. Das mit dem C-Code als ersten Versuch für den C++-Compiler geht wohl nicht, shedepe, denn er existiert garnicht - mein (ge-past´n´copy-rte) Programmcode ist eben in C++ angelegt. Ach - und was ne Class ist und so - das lese ich in diesem Code, weiß aber nicht, was das genau ist.

Der eigentliche, eng an den Ursprungscode angelehnte Hilfeschrei ist also hinfällig, auch mein (üblicher) Wunsch nach ner UART-Anbindung rückt wohl in greifbare Nähe. Mit dem Buch (der vorstehende Link wurde automatisch eingefügt) -- das überlege ich noch. Ich bin selbst über den C++Tutor (http://cpp-tutor.de/) gestolpert und hoffe, dass mir das mal guttun könnte.

Danke vielmals für die schnelle und umfassende Hilfe.