#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
Was hat das Ganze jetzt mit C++ zu tun? ;-)
1) Es heißt C, nicht C++ 2) Dein Programm beendet sich nach einem Durchlauf. So läuft es richtig in einer Endlosschleife:
1 | int main(void) |
2 | {
|
3 | while(1) |
4 | {
|
5 | // tu was
|
6 | }
|
7 | |
8 | return 0; |
9 | }
|
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.
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.
LordZiu schrieb: > Ich verstehe immer nicht, warum hier oft solche unqualifizierten > Antworten kommen. Weil du bereits vor dem Smiley aufgehört hast zu lesen?
1 | #include <avr/io.h> |
2 | |
3 | //int lokalinput; Braucht man nicht für so eine Aufgabe
|
4 | //int lokaloutput; Braucht man genau so nicht
|
5 | |
6 | |
7 | int main(void) |
8 | {
|
9 | //lokaloutput = 0x01;
|
10 | DDRD=0x00; //Datenrichtungsregister D als Eingang deklariert |
11 | DDRB=0xff; //Datenrichtungsregister B als Ausgang deklariert |
12 | //PIND = lokalinput;
|
13 | /*while(lokalinput !=0) { PORTB=lokaloutput;
|
14 | }*/
|
15 | while(1){ //Endlosschleife |
16 | PORTB=PIND; //Eingangszustände vom Port D (evtl. Taster) werden an Port B |
17 | } //ausgegeben |
18 | return 0; //wird nie erreicht |
19 | }
|
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
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!
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.
Das bringt den Fragesteller aber auch nicht weiter.
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
LordZiu schrieb:
> Das bringt den Fragesteller aber auch nicht weiter.
Nun, du hast ihm doch aber schon geholfen.
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.
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.)
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.
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.
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
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
> 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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.