mikrocontroller.net

Forum: Compiler & IDEs [c] Blutiger Anfänger hat Probleme mit AVR C++ Programmierung


Autor: Adrian O. (buhmann1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include <avr/io.h>

int lokalinput;    //Platzhalter für Eingangsinfo
int lokaloutput;  //Platzhalter für Ausgangsinfo


int main(void)
{
  lokaloutput = 0x01;
  DDRD=0x00;  //Datenrichtungsregister D als Eingang deklariert
  DDRB=0xff;  //Datenrichtungsregister B als Ausgang deklariert
  PIND = lokalinput;
while(lokalinput !=0) { PORTB=lokaloutput;
              }

   return 0;
 }

Hi,

ich bin blutiger Anfänger in sachen Programmierung und µC. Habe auch 
vorher nicht programmiert oder ähnliches.
Nun will ich aber damit beginnen bzw habe bereits begonnen und komme 
auch gleich an meine Grenzen. Ich bekomme keinen zyklischen ablauf hin. 
Ich kann das programm zwar übertragen, jedoch führ t es nicht die 
gewünschten Aktionen aus.
ich möchte, dass das prog. die eingange permanent abfragt und wenn ein 
eingang = 1 dann soll er die Ausgänge bzw einen Ausgang schalten. Bisher 
kam nicht der gewünschte erfolg, daher hoffe ich dass sich jemand meiner 
annehmen kann, mir ein paar tipps gibt und mit evtl . aufzeigt was ich 
am prog ändern muss um zu den gewünschten erfolgen zu gelangen.

mfg adrian

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hat das Ganze jetzt mit C++ zu tun? ;-)

Autor: LordZiu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1) Es heißt C, nicht C++
2) Dein Programm beendet sich nach einem Durchlauf.

So läuft es richtig in einer Endlosschleife:
int main(void)
{
  while(1)
  {
    // tu was
  }

  return 0;
}

3) Lies bitte das AVR-GCC Tutorial. Da kannst du super nachlesen, wie 
das mit den Ein- und Ausgängen funktioniert. Mir scheint, dass du das 
Konzept dahinter noch nicht ganz verstanden hast.

4) Bei konkreten Fragen kannst du dann wieder hier posten.

Autor: LordZiu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark Brandis schrieb:
> Was hat das Ganze jetzt mit C++ zu tun? ;-)

Ich verstehe immer nicht, warum hier oft solche unqualifizierten 
Antworten kommen. Aus dem Inhalt seines Textes ergibt sich doch, dass er 
gerade damit anfängt und scheinbar nicht weiß, dass C und C++ 
unterschiedliche Programmiersprachen sind.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LordZiu schrieb:

> Ich verstehe immer nicht, warum hier oft solche unqualifizierten
> Antworten kommen.

Weil du bereits vor dem Smiley aufgehört hast zu lesen?

Autor: Christoph S. (mixer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include <avr/io.h>
 
//int lokalinput;   Braucht man nicht für so eine Aufgabe
//int lokaloutput;  Braucht man genau so nicht
 
 
int main(void)
{
//lokaloutput = 0x01;
DDRD=0x00;  //Datenrichtungsregister D als Eingang deklariert
DDRB=0xff;  //Datenrichtungsregister B als Ausgang deklariert
//PIND = lokalinput;
 /*while(lokalinput !=0) { PORTB=lokaloutput;
               }*/
  while(1){    //Endlosschleife
   PORTB=PIND; //Eingangszustände vom Port D (evtl. Taster) werden an Port B
 }             //ausgegeben
return 0;      //wird nie erreicht
}


Du solltest dich erst mal mit einem C Buch befassen (google mal nach 
galileo computing c) bevor du dich auf einen Mikrocontroller stürzt um 
wenigstens Grundkenntnisse im Programmieren hast. Dann kannst du mal das 
AVR-GCC-Tutorial anschauen!

MFG Mixer

Autor: LordZiu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch schrieb:
> LordZiu schrieb:
>
>> Ich verstehe immer nicht, warum hier oft solche unqualifizierten
>> Antworten kommen.
>
> Weil du bereits vor dem Smiley aufgehört hast zu lesen?

Nein, stell dir vor. Ich bin schon groß genug um bis ans Zeilenende zu 
lesen. Mir ist auch durchaus die gewünschte Wirkung des Smileys bewusst.

Aber warum antwortet man denn auf eine Frage wenn der Informationsgehalt 
der Antwort kleiner 0 ist?

Er hätte auch schreiben können: "1 kg = 1000 g". Das ist zwar auch 
korrekt, aber ist in diesem Kontext hier völlig belanglos!

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LordZiu schrieb:
> Aber warum antwortet man denn auf eine Frage wenn der Informationsgehalt
> der Antwort kleiner 0 ist?

Vielleicht, weil man durchaus auch mit einem ironischen Kommentar
darauf hinweisen möchte, dass C eben nicht gleich C++ ist.

Autor: LordZiu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das bringt den Fragesteller aber auch nicht weiter.

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Adrian O. schrieb:
> PIND = lokalinput;
> while(lokalinput !=0) { PORTB=lokaloutput;

das ist doppelt falsch,
zum einen willst du wohl lokalinput=PIND,
zum anderen musst du diese zuweisung in der schleife machen

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LordZiu schrieb:
> Das bringt den Fragesteller aber auch nicht weiter.

Nun, du hast ihm doch aber schon geholfen.

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich war gerade dabei, meine editierte Antwort abzuschicken (mit Hinweis 
auf Endlosschleife etc.), da macht mir die Foren-Software einen Strich 
durch die Rechnung. Schade, dass man seinen eigenen Beitrag nicht mehr 
editieren kann, sobald ein weiterer im Thread gepostet wurde. Und das 
kommt gar nicht mal sooo selten vor, dass man genau in der Verlegenheit 
ist.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark Brandis schrieb:
> Schade, dass man seinen eigenen Beitrag nicht mehr
> editieren kann, sobald ein weiterer im Thread gepostet wurde.

Kannst du schon, aber meiner Erinnerung nach nur 15 Minuten lang.
Ist nur dafür gedacht, dass du mal noch schnell einen nachträglich
bemerkten Tippfehler korrigieren kannst oder schnell noch einen
vergessenen Satz anhängen.  Andreas möchte einfach nicht, dass
nachträglich umfangreiche Editierarbeiten vorgenommen werden und
damit Dinge verschwinden, über die vielleicht bereits ausgiebig
diskutiert worden ist.  (Ursprünglich konnte man gar nicht mehr
editieren, die 15 Minuten waren dann der Kompromiss.)

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch schrieb:
> Mark Brandis schrieb:
>> Schade, dass man seinen eigenen Beitrag nicht mehr
>> editieren kann, sobald ein weiterer im Thread gepostet wurde.
>
> Kannst du schon, aber meiner Erinnerung nach nur 15 Minuten lang.

Andreas hat das geändert. Sobald ein weiterer Post im Thread ist, haben 
sich die 15 Minuten erledigt.

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Ernst schrieb:
> Andreas hat das geändert. Sobald ein weiterer Post im Thread ist, haben
> sich die 15 Minuten erledigt.

Das war denn definitiv keine Verbesserung. Woher weiß ich denn als 
Nutzer, wann der nächste im Thread posten wird? Eine Editiermöglichkeit 
sollte nicht von Ereignissen abhängen, auf die ich keinen Einfluss habe. 
Das ergibt keinen Sinn.

Autor: Adrian O. (buhmann1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,

ich hätte nicht gedacht, dass diese kurze noob-frage euch in einen 
solchen diskurs stürzen würde;)

wie dem auch sei. ich bin froh dass ihr geantwortet habt. mit eurer 
hilfe läuft das prog nun. und ich gesteh mir ein, dass ich bevor ich das 
tut durchgehe,mir die grundlegenden dinge des c-programmierens anschauen 
werde um auch nur ansatzweise zu verstehen was ich da mache....


leider läuft es nicht so, dass ich mich vor den atmel setze, ihm nach 
der try & error methode ein paar befehle einpresche und es dann so 
funzt, wie ich mir das vorstelle.(Bislang hat das gut geklappt).
zumal ich auch nicht einfach nur die programme über kopieren einfügen 
entwickeln möchte.

nun gut nochmals vielen dank und wenn ich dann in ein paar eonen das 
vermeindlich nötige grundwissen besitze, dann werd ich mich wohl wieder 
hierher verirren;) oder ich verfahre parallel......schaun wa mal


mfg adrian

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um der vollständigkeit den üblichen, aber hier noch nicht gegeben 
Hinweis auch noch zun geben: Um C (oder überhaupt das Programmieren) zu 
lernen, ist ein Mikrocontroller nicht sonderlich gut geeignet. Das geht 
viel besser auf dem PC.

Oliver

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Eine Editiermöglichkeit sollte nicht von Ereignissen abhängen, auf die
> ich keinen Einfluss habe.

Umgekehrt wird ein Schuh daraus. Dein abgesendetes Posting sollte nicht 
von Ereignissen abhängen, auf die du keinen Einfluss hast. Das bedeutet, 
daß, wenn du auf ein Posting antwortest, dieses nicht nachträglich 
nochmal verändert wird und damit deine Antwort evtl. unsinnig wird. Ich 
hätte zumindest keine Lust, ständig alles, was ich gepostet habe, 
daraufhin überprüfen zu müssen, ob sich die vorhergehenden Postings 
inzwischen geändert haben und ich meine Antworten dann nachträglich 
daran anpassen muß.

> Das ergibt keinen Sinn.

Keinen Sinn ergäbe es, wenn sich Postings mitten in einem Thread auf 
einmal ändern könnten.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.