- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: newbie problem

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

    LiFePo4 Akku selber bauen - Video
    Erstmal: Hier is nix Copy&Paste [-(. Alles aus meiner Feder, deswegen hab ich auch geschrieben: Quick&Dirty. Ich hab die Feinheiten ganz bestimmt ned raus.

    Aber hier mal der Code
    Code:
    #include <avr/io.h>
    
    
    
    int main(void)
    {
            DDRD = (0 << PD5) | (1 <<PD7); //PD5 auf Eingang schalten, PD7 auf Ausgang
    		PORTD = (1 << PD5) | (0 << PD7); //Pullup Widerstand an PD5 setzen
    		while(1){
    		if ( PIND & (0 << PIND5) ) //Wenn PD5 auf Masse gezogen wird....
    		{
    		PORTD = (1 << PD7); // dann setze PD7 auf high
    		}
    		}
    }

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    05.04.2005
    Beiträge
    66
    Dein Fehler liegt in der Zeile mit dem if. Du machst ein bitweises UND zwischen PIND und (0 << 5). letzteres ist eine 0, die um 5 Stellen nach links verschoben wurde. Also immer noch 0. Ein bitweises UND mit 0 ergibt auf jeden Fall auch wieder 0, daher ergibt der Ausdruck im if immer false und PD7 wird nie gesetzt.

    "0 << irgendwas" ergibt grundsätzlich immer 0, kann also genausogut durch 0 ersetzt werden (und sollte es auch, der Übersichtlichkeit wegen). Dein if muss also eher so aussehen:
    if(!(PIND & (1 << 5)))

    btw, einzelne Pins setzen geht so:
    PORTD |= (1 << 7);
    Wenn du nicht |= sondern = nimmst, setzt du alle anderen Pins auf 0.

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    23.01.2005
    Beiträge
    18
    Wunderbar! Es funktioniert! Dankeschön an alle die geholfen haben!

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests