- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 7 von 7

Thema: If problem beim Schieberegister

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #4
    Youp ist mir klar war aber auch nicht fertig

    Code:
    void Latch_Serialout(uint8_t DATEN){
        PORTD &= ~(1<<PD1); //Serial clock Down
        uint8_t Puffer = 0;
        uint8_t Bitmask = 1;
        for (uint8_t x = 0;x < 8;x++)
        {
            Puffer = (DATEN & Bitmask);
            if ((Puffer == 1)||(Puffer == 2)||(Puffer == 4)||(Puffer == 8)||(Puffer == 16)||(Puffer == 32)||(Puffer == 64)||(Puffer == 128)){
                PORTD |= (1<<PD0); //setzen;
            }            
            else{        
                PORTD &= ~(1<<PD0); //Rüsetzen
            }            
            PORTD |= (1<<1); //setzen
            PORTD &= ~(1<<1); //Rücksetzen
            Bitmask = (Bitmask << 1);
        }
    }
    Der Simulator überspringt zuteil die Portsetz befehle mach ich da etwas falsch?

    EDIT: Kleines Beispiel wenn ich mit dem wert 255 in die Funktion gehe fängt meine bitmaske den Wert ab und der Puffer == 1 tritt ein.
    Das klappt auch aber der simulator überspringt dann
    PORTD |= (1<<PD1); //setzen
    und macht gleich
    PORTD &= ~(1<<PD1); //Rücksetzen

    Das ist natürlich doof den das latch bekommt dann keinen ganten takt

    EDIT:
    @ robocat deine idde find ich cool mit dem Daten nach rechts schieben.
    Aber im 255 fall funktioniert das ja nicht mehr weil das 7 bit 1 ist und doch 1er nachgeschoben werden. oder ist das beim AVR anders?

    EDIT:
    Ok es ist scheinbar anders bzw liegt am unsiend ... ich hab wohl nur siend geschiftet
    Code:
    void Latch_Serialout(uint8_t DATEN)void Latch_Serialout(uint8_t DATEN)
    {
    	PORTD &= ~(1<<PD1); //Serial clock Down
    	for (uint8_t x = 0;x < 8;x++)
    	{
    		if ((DATEN & 1) == 1){
    			PORTD |= (1<<PD0); //setzen;
    		}					
    		PORTD |= (1<<PD1); //setzen
    		PORTD &= ~(1<<PD1); //Rücksetzen
    		PORTD &= ~(1<<PD0); //Rüsetzen
    		DATEN = (DATEN >> 1);
    	}
    }





    Sieht jetz auch viel sauberer aus und braucht keine extra variablen mehr


    Geändert von Mathhias_199 (31.03.2013 um 00:22 Uhr)

Ähnliche Themen

  1. Problem beim Compilieren
    Von KingKaiser im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 15.01.2012, 19:02
  2. Problem beim Konfigurieren von TIMER1 beim M32-Board
    Von dirty_bird_981 im Forum Robby RP6
    Antworten: 8
    Letzter Beitrag: 10.01.2012, 22:52
  3. Schieberegister - Portzustand beim "rausschieben"
    Von VictimOfMyOwn im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 17.06.2006, 14:29
  4. ULN und Schieberegister problem
    Von colaturka im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 26.03.2006, 13:44
  5. Antworten: 9
    Letzter Beitrag: 14.03.2005, 20:08

Berechtigungen

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

12V Akku bauen