-
        

Ergebnis 1 bis 5 von 5

Thema: Ports schalten in CodevisionAVR

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.07.2013
    Beiträge
    11

    Ports schalten in CodevisionAVR

    Anzeige

    Hallo,
    versuche mich in Micro-Controller Programmierung.
    Schon am Anfang habe ich eine Frage.

    Warum funktioniert dieses Programm nicht?

    Code:
    while (1)
          {
          PORTA=(1<<PORTA0)|(1<<PORTA3);//rot anmachen  
          
          delay_ms(3000);  //warten 3sec
    
          PORTA=(1<<PORTA1)|(1<<PORTA4) //gelb dazu anmachen <-- wird zwar gemacht aber rot geht aus
    
          // PORTA=(1<<PORTA1)|(1<<PORTA4)|(1<<PORTA0)|(1<<PORTA3); <---das hingegen funktioniert
    
          delay_ms(1000);    //warten 1sec
          PORTA=(0<<PORTA0)|(0<<PORTA3); //Rot und
          PORTA=(0<<PORTA1)|(0<<PORTA4); //gelb ausmachen 
          PORTA=(1<<PORTA2)|(1<<PORTA5);  //Grün anmachen
          delay_ms(3000) ;           //Warten 3sec
          PORTA=(1<<PORTA1)|(1<<PORTA4)|(1<<PORTA2)|(1<<PORTA5);  //Gelb anmachen <--dito
          delay_ms(1000);            //Warten 1 sec  
          PORTA=(0<<PORTA2)|(0<<PORTA5);  //grün ausmachen   
          
          
    
          }
    Ganz einfache Schaltung: Rot-> 3 sek->Gelb DAZU->1 sek->Rot u. Geld aus->Grün->3 sek->Gelb dazu->1 sek Grün und Gelb aus.(Das ganze zwei mal,zwei Ampeln quasi)

    Mein Problem ist in der Zeile Nummer 5(für Grün dito). Rot ist schon an,ich will nun Geld dazu schalten.Gelb wird auch zugeschaltet,aber leider geht dann Rot aus.

    Ist das die Eigenschaft von Controllern?Oder mache ich einen Denkfehler?

    Vielen Dank!

    P.S: Ich schreibe in CodevisionAVR für Mega16. Als Simulator benutze ich Proteus. Leider habe ich noch keine Hardware (ist aber bestellt).Liegt es vlt an der Simulation?Wird das ,so wie ich das will, auf der echten Hardware funktionieren?


    EDIT: Ach nun ist mir das wohl von alleine klar gewordenso ziemlich direkt nach dem klicken auf "Abschicken"....

    Code:
    PORTA=(1<<PORTA0)|PORTA=(1<<PORTA1)
    ist wohl nichts anderes als
    Code:
    PORTA=0b00000011;
    Deswegen setzt die Zeile Nummer 5 die beiden Ports von ROT wieder auf 0..
    Liege ich damit richtig?
    Also bleibt als Lösung immer neu zuweisen ?
    Code:
     PORTA=(1<<PORTA1)|(1<<PORTA4)|(1<<PORTA0)|(1<<PORTA3);
    Geändert von Cheffe Boss (02.08.2013 um 13:44 Uhr) Grund: Die Lösung?

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Ich weiss nicht ob es im CodeVision auch so ist.
    Aber wenn du die vorhandenen Porteinstellungen nicht verändern willst, nur neu dazu, dann sollte es so sein:

    PORTA|=(1<<PORTA0)|(1<<PORTA1);
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    29.07.2013
    Beiträge
    11
    Jop!Funktioniert!
    Warum bin ich nicht von alleine drauf gekommen
    "ODER"-Maske
    Vielen Dank!

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    29.07.2013
    Beiträge
    11
    Eine andere Frage:
    Um dem Fussgänger zu ermöglichen rüberzugehen,muss ich eine Tastereingabe auslesen.Muss ich dafür die (noch) geheimnissvollen Interrupte bemühen oder geht das in einer Schleife?

    Das Problem welches ich zZ habe: Wenn ich es mit "IF" mache, dann musste ich den Taster wohl solange gedrückt halten bis die while(1)-schleife von vorne beginnt.

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Tastenabfrage über Pollen ist sicher kein Problem, es muss nur das Tastenprellen berücksichtigt werden.
    In eine while-Schleife baut man aus diesem Grund auch keine delay ein.
    Verzögerungen und dergleichen macht man über Timer. Man startet einen z.B. 10msek Takt und zählt diesen.
    Dadurch bleibt die while-Schleife schnell.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Ähnliche Themen

  1. IO Ports
    Von sputnik265 im Forum Robby RP6
    Antworten: 4
    Letzter Beitrag: 18.03.2009, 16:17
  2. IO-Ports
    Von Luki.B. im Forum Robby RP6
    Antworten: 1
    Letzter Beitrag: 25.10.2008, 14:13
  3. IO ports
    Von blenderkid im Forum Robby RP6
    Antworten: 7
    Letzter Beitrag: 13.11.2007, 16:12
  4. AD Ports
    Von CodeWarrior im Forum AVR Hardwarethemen
    Antworten: 28
    Letzter Beitrag: 24.02.2006, 17:54
  5. A/D-Ports
    Von mgsimon im Forum Robby CCRP5
    Antworten: 5
    Letzter Beitrag: 10.03.2004, 22:32

Berechtigungen

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