-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: newbie problem

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    23.01.2005
    Beiträge
    18

    newbie problem

    Anzeige

    So ich bin einsteiger in C und hab Grundlagenkenntnisse in sachen Programmierung. Etz wollt ich in C folgendes machen. Programm läuft, Diode ist aus. Taster wird gedrückt -> Diode geht an. Und ohne entprellung sondern ganz quick and dirty. Und zwar folgendermaßen

    Code:
    #include <avr/io.h>;
    
    
    
    int main(void)
    {
            DDRD = (0 << PD5) | (1 <<PD7);
    		PORTD = (1 << PD5) | (0 << PD7);
    		
    		if (PIND = (0 << PIND5))
    		{
    		PORTD = (1 << PD7);
    		}
    }
    Problem ist...es tut sich nix. Und ich komm ned drauf wieso...bitte helft mir.

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    05.04.2005
    Beiträge
    66
    Dein Programm ist nicht Schuld; es macht genau das, was es soll. Evtl. hast du etwas anderes beabsichtigt.

    Mit der if-Abfrage testest du genau einmal, ob die Taste gedrückt ist. Ist sie es, schaltet das Programm die LED an. Ist sie es nicht, läuft das Programm einfach so weiter. Nach der if-Abfrage ist aber main() zu Ende, also beendet sich das Programm; das bedeutet bei WinAVR wohl, dass es in eine Endlosschleife geht und nichts mehr macht.

    Du solltest vielleicht erstmal die Grundlagen von C lernen, am besten nicht auf einem uC, sondern auf einem normalen PC mit gescheitem Debugger. Dann passieren dir solche Fehler nicht mehr.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    23.01.2005
    Beiträge
    18
    Ahso..

    gut danke! Ich werd mich mal mehr reinstressen müssen

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    lekro, er geht nicht in eine endloschleife, sondern das programm ist beendet. "c" ist immer noch "c" . ob winavr-c oder ultimo-c.
    mfg pebisoft

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    05.04.2005
    Beiträge
    66
    Zitat Zitat von pebisoft
    lekro, er geht nicht in eine endloschleife, sondern das programm ist beendet. "c" ist immer noch "c" . ob winavr-c oder ultimo-c.
    Glaub mir, ich weiß was ich geschrieben habe:
    Zitat Zitat von lekro
    Nach der if-Abfrage ist aber main() zu Ende, also beendet sich das Programm; das bedeutet bei WinAVR wohl, dass es in eine Endlosschleife geht und nichts mehr macht.
    Muss ich dazu wirklich noch mehr sagen?

  6. #6
    Ich denke das du da nicht nur einmal den taster überprüfen sondern dauernd. Benutze am besten

    while(1) //Immer wiederholen
    {


    }


    zu anderen has du da nichts was die led wieder auschaltet enweder else oder ne andere schleife

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    23.01.2005
    Beiträge
    18
    Ich hab jetzt um den If-block die while schleife gelegt, es tut sich aber leider immer noch nix...

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    05.04.2005
    Beiträge
    66
    @Fro: Poste bitte deine komplette main.

    Überleg dir aber bitte vorher auf dem Papier, ob dein Programm vom Code her das tut, was es soll.
    Denn herumraten und copy&paste führen beim Programmieren (besonders bei anspruchsvolleren Sprachen wie C) selten zum Erfolg.

  9. #9
    vegese bitte nicht die ports auf ein und asgänge zu schalten!
    Wer hat was gegen copy&paste

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    05.04.2005
    Beiträge
    66
    Zitat Zitat von dark emperor
    Wer hat was gegen copy&paste
    Schonmal die Tastatur eines richtigen "Copy&Paste-Proggers" gesehen?



    Das Problem ist nicht copy&paste per se. Ein Problem tritt dann auf, wenn man copy&paste völlig ohne Verständnis betreibt. Wenn man einen ernsthaften Mangel an Grundlagen hat und z.B. nicht weiß, wie Funktionen deklariert werden, ist es mehr als schädlich, zu versuchen per copy&paste ein uC-Programm zu schreiben.

    Man sollte grundsätzlich den Code verstehen, den man per copy&paste einfügt. Mit "verstehen" meine ich nicht jeden einzelnen Buchstaben, aber die grundlegenden Zusammenhänge müssen einem klar sein. Ansonsten stößt man zwangsläufig auf Probleme, man fragt wieder im Forum und bekommt wieder fertigen Code hingeknallt, den man per copy&paste einfügt. <tv kaiser>Ein Teufelskreis.</>

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •