-         

Ergebnis 1 bis 10 von 10

Thema: paar sec fahren?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.11.2009
    Beiträge
    29

    paar sec fahren?

    Anzeige

    Hallo

    ich möchte ein paar secunden nach vohrne und ein par secunden zurück fahren

    Code:
    #define VOHR  0b00101100
    #define ZURUECK  0b00110100
    #define LINKS  0b00100110
    #define RECHTS  0b00100101
    #define GERADE  0b00100111
    #define BREACK  0b00111111
    
    #define V_MITE  0b00111101
    #define V_LINKS  0b00111011
    #define V_RECHTS  0b00111110
    #define H_MITE  0b00101111
    #define H_LINKS  0b00011111
    #define H_RECHTS  0b00110111
    
    #define LED_ROT  0b10000000
    #define LED_GRUEN  0b01000000
    #define LED_AUS 0b00000000
    
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    #define DURCHLEUFE 256
    
    volatile unsigned int zahl, wert=0;
    
    ISR(TIMER0_OVF_vect)
    {
    
    wert++;
    TCNT0 = 256 -DURCHLEUFE;
    
    }
    
    int main(void)
    {
    
    TCNT0 = 256 -DURCHLEUFE;
    TCCR0 = (1 << CS02)|(1 << CS00);
    TIMSK = (1 << TOIE0);
    sei();
    
    DDRB = 0xFF; //Ausgang
    DDRC = 0b11000000; //Eingang
    
    while (1);
    if (wert == 10)
    {
    PORTB = VOHR;
    wert = 0;
    zahl++;
    }
    if (zahl == 10)
    {
    PORTB = BREACK;
    PORTB = ZURUECK;
    zahl = 0;
    wert = 0;
    }
    
    return 0;
    }
    wie könnte man das noch lössen derzeit get das programm nicht.

    Danke
    by Donald

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Ich habe jetzt nicht alles kontrolliert, aber der wichtigste Fehler ist das
    Code:
    while(1);
    Damit hast Du eine leere Endlosschleife definiert, alle Statements dahinter werden also nie erreicht.
    Versuchs mal mit
    Code:
    while (1){
    if (wert == 10)
    {
    PORTB = VOHR;
    wert = 0; 
    ...
    Gruß,
    askazo

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    12.11.2009
    Beiträge
    29
    ok ich habe es jetzt so um gändert
    Code:
    #define VOHR  0b00101100
    #define ZURUECK  0b00110100
    #define LINKS  0b00100110
    #define RECHTS  0b00100101
    #define GERADE  0b00100111
    #define BREACK  0b00111111
    
    #define V_MITE  0b00111101
    #define V_LINKS  0b00111011
    #define V_RECHTS  0b00111110
    #define H_MITE  0b00101111
    #define H_LINKS  0b00011111
    #define H_RECHTS  0b00110111
    
    #define LED_ROT  0b10000000
    #define LED_GRUEN  0b01000000
    #define LED_AUS 0b00000000
    
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    #define DURCHLEUFE 256
    
    volatile unsigned int zahl, wert=0;
    
    ISR(TIMER0_OVF_vect)
    {
    
    wert++;
    TCNT0 = 256 -DURCHLEUFE;
    
    }
    
    int main(void)
    {
    
    TCNT0 = 256 -DURCHLEUFE;
    TCCR0 = (1 << CS02)|(1 << CS00);
    TIMSK = (1 << TOIE0);
    sei();
    
    DDRB = 0xFF; //Ausgang
    DDRC = 0b11000000; //Eingang
    
    while (1);
    {
    if (wert == 10)
    {
    PORTB = VOHR;
    wert = 0;
    zahl++;
    }
    if (zahl == 10)
    {
    PORTB = BREACK;
    PORTB = ZURUECK;
    zahl = 0;
    wert = 0;
    }
    }
    return 0;
    }
    es geht aber trotsdem nicht.

    Danke
    by Donad

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Der Fehler ist der ; nach while(1)
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    12.11.2009
    Beiträge
    29
    ok Danke dir das war es wirklich.

    Danke
    by Donald

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    12.11.2009
    Beiträge
    29
    Hi

    Ich habe ein problem ich bekomme es einfach nicht hin das ich zwei gleich lange zeit ab schnite habe.

    Code:
    #define VOHR  0b00101100
    #define ZURUECK  0b00110100
    #define LINKS  0b00100110
    #define RECHTS  0b00100101
    #define GERADE  0b00100111
    #define BREACK  0b00111111
    
    #define V_MITE  0b00111101
    #define V_LINKS  0b00111011
    #define V_RECHTS  0b00111110
    #define H_MITE  0b00101111
    #define H_LINKS  0b00011111
    #define H_RECHTS  0b00110111
    
    #define LED_ROT  0b10000000
    #define LED_GRUEN  0b01000000
    #define LED_AUS 0b00000000
    
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    #define DURCHLEUFE 256
    
    volatile unsigned int wert=0;
    
    ISR(TIMER0_OVF_vect)
    {
    
    wert++;
    TCNT0 = 256 -DURCHLEUFE;
    
    }
    
    int main(void)
    {
    
    TCNT0 = 256 -DURCHLEUFE;
    TCCR0 = (1 << CS02)|(1 << CS00);
    TIMSK = (1 << TOIE0);
    sei();
    
    DDRB = 0xFF; //Ausgang
    DDRC = 0b11000000; //Eingang
    
    while (1)
    {
    
    	if (wert <= 20)
    	{
    	PORTC = LED_AUS ;
    	PORTC = LED_ROT ;
    	}
    	
    	else if(wert <= 60)
    	{
    	PORTC = LED_AUS ;
    	}
    
    	else if (wert <= 80)
    	{
    	PORTB = LED_AUS ;
    	PORTB = LED_GRUEN ;
    	}
    
    	else if (wert <= 100)
    	{
    	PORTC = LED_AUS ;
    	}
    
    	else
    	{
    	wert = 0 ;
    	}
    
    }
    return 0;
    }
    ich habe schon rum probirt was mache ich falsch?

    Danke
    by Donald

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Im Moment müsste Dein Programm so laufen:
    1) rote LED leuchtet für 20 Zeiteinheiten
    2) danach leuchtet für 40 Zeiteinheiten nichts
    3) grüne LED leuchtet für 20 Zeiteinheiten
    4) danach leuchtet für 20 Zeiteinheiten nichts

    Um welche Zeitabschnitte geht es Dir denn? Was willst Du überhaupt erreichen?

    Gruß,
    askazo

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    12.11.2009
    Beiträge
    29
    hi
    ich möchte einfach nur das die rote led an get und dan aus und dan sol die grüne an gehen dan wider aus und von forne beginen alles sollte eigentlich 20 zeiteinheiten lange sein.

    im momment get nur die rote led ca 1 sec an dan 5 sec aus und wider 1 sec an, die grüne leuchtet garnicht.

    ich weiss echt nicht an was es ligt das problem muss aber im programm sein hab die hardware nochmal geprüft.

    Danke
    by Donald.

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Du hast da PORTB und PORTC vermischt.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    12.11.2009
    Beiträge
    29
    ja du hast recht und ich zermartere mir den koppf

    thx

Berechtigungen

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