-
paar sec fahren?
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
-
Ich habe jetzt nicht alles kontrolliert, aber der wichtigste Fehler ist das 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
-
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
-
Der Fehler ist der ; nach while(1)
-
ok Danke dir das war es wirklich.
Danke
by Donald
-
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
-
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
-
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.
-
Du hast da PORTB und PORTC vermischt.
-
ja du hast recht und ich zermartere mir den koppf
thx