www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme beim Code


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Tobias N. (silberkristall)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hi leute,

ich weiss gerade nicht weiter. Ich habe mir eine Schlatung zusammen 
gebaut wofür ich nun den Code erstellen muss. Eine Art "test" Code 
klappt auch so teilweise aber ich weis nicht wie ich z.b. delay_ms 
umgehen kann da, wenn der delay ja ausgeführt wird der chip erstmal 
nichts weiter macht.

Derzeit löse ich das so:

http://nopaste.info/524f0c214e.html

Das ganze klappt auch so aber wie schon erwähnt, wenn z.b. beide 
gleichzeitig schalten sollen dann schaltet erst der eine dann der andere 
wegen dem delay_ms, wie kann ich das umgehen/verändern?

Dann will ich noch Zählungen vornehmen aber das ganze klappt garnicht:

http://nopaste.info/b505bb7f84.html

Das ganze klappt garnicht. Das eingangssignal beträgt 5V also jedesmal 
wenn 5V anliegen und halt wieder weg gehen soll er zählen aber da 
passiert garnichts.

Ich hoffe mir kann jemand helfen.

Beitrag #2687608 wurde vom Autor gelöscht.
Beitrag #2687609 wurde vom Autor gelöscht.
Beitrag #2687612 wurde vom Autor gelöscht.
Beitrag #2687616 wurde vom Autor gelöscht.
Beitrag #2687627 wurde von einem Moderator gelöscht.
Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Mit externen Links sind wir hier gar nicht glücklich.
Wenn du Code zum herzeigen hast, dann poste ihn entweder direkt oder
häng ihn als Attachment an. So geht er nicht verloren, selbst wenn du in
3 Jahren deinen externen Webhoster wechselst.
//////////////////////
    // Türtasterfunktion//
    //////////////////////
    
    // Links
    
    if (tuerlinkstasterstrom == 1) {} else {
    
    if (!(PIND & 1<< PD0))
        {
            tuerlinkstaster = 1;
        } else  {
            tuerlinkstaster = 2;
        }
    }
    
    if (tuerlinkstaster == 1)
    {
        if (tuerlinkstasterstatus == 1) {}
        else
        {
            if (tuerlinkstasterset == 1) {}
            else
            { tuerlinkstastertime = 0; tuerlinkstasterset = 1; }
            tuerlinkstastertimer = 3;
            tuerlinkstasterstrom = 1;
            PORTC |= (1<<PC5);
            _delay_ms(300);
            PORTC &= ~ (1<<PC5);
            tuerlinkstasterstrom = 0;
            tuerlinkstasterstatus = 1;
        }
    
    }
    
    if (tuerlinkstaster == 2)
    {
        if (tuerlinkstasterstatus == 2) {}
        else
        {
            if (tuerlinkstasterset == 2) {}
            else
            { tuerlinkstastertime = 0; tuerlinkstasterset = 2; }
            tuerlinkstastertimer = 2;
            tuerlinkstasterstrom = 1;
            PORTC |= (1<<PC4);
            _delay_ms(600);
            PORTC &= ~ (1<<PC4);
            tuerlinkstasterstatus = 2;
            tuerlinkstasterstrom = 0;
        }
    
    }
    
    // Rechts
    
    if (tuerrechtstasterstrom == 1) {} else {
    
    if (!(PIND & 1<< PD1))
        {
            tuerrechtstaster = 1;
        } else  {
            tuerrechtstaster = 2;
        }
    }
    
    if (tuerrechtstaster == 1)
    {
        if (tuerrechtstasterstatus == 1) {}
        else
        {
            if (tuerrechtstasterset == 1) {}
            else
            { tuerrechtstastertime = 0; tuerrechtstasterset = 1; }
            tuerrechtstastertimer = 3;
            tuerrechtstasterstrom = 1;
            PORTC |= (1<<PC3);
            _delay_ms(300);
            PORTC &= ~ (1<<PC3);
            tuerrechtstasterstrom = 0;
            tuerrechtstasterstatus = 1;
        }
        
    
    }
    
    if (tuerrechtstaster == 2)
    {
        if (tuerrechtstasterstatus == 2) {}
        else
        {
            if (tuerrechtstasterset == 2) {}
            else
            { tuerrechtstastertime = 0; tuerrechtstasterset = 2; }
            tuerrechtstastertimer = 2;
            tuerrechtstasterstrom = 1;
            PORTC |= (1<<PC2);
            _delay_ms(600);
            PORTC &= ~ (1<<PC2);
            tuerrechtstasterstatus = 2;
            tuerrechtstasterstrom = 0;
        }
    
    }
    
    //////////////////////////
    //Türtasterfunktion ende//
    //////////////////////////

2. Teil
if ((PIND & 1<< PD3))
            {
                blinking = blinking + 1;
                // Setze Timer zurück
                Timer1_Reset();
            }
        
            if (blinkingtime == 2)
                {
                // Wenn Zählungen der ZV vorhanden
                if (blinking > 0)
                    {
            
                    // Prüfe ZV Blinker zählungen
                    if (blinking == 1)
                        {
                            alarm = 1;    // Schalte Alarmvar. ein
                            //kfzschliessen = 1;    // Schalte KFZ Schliessenfunktion ein
                            blinking = 0;    // Setze blinking auf 0
                        }
                
                    if (blinking == 2)
                        {
                            alarm = 0;    // Schalte Alarmvar. aus
                            blinking = 0;    // Setze blinking auf 0
                        }
                        
                    if (blinking == 3)    // Fenster öffnen / schliessen
                        {
                            //zvfenster = 1;    // Schalte zvfenstervar. auf 1
                            blinking = 0;    // Setze blinking auf 0
                        }
                
                    if (blinking == 4)    // Kofferraum öffnen
                        {
                            //kofferraummotor = 1; // Setze Kofferraummotorvar. auf 1
                            blinking = 0;    // Setze blinking auf 0
                        }
                    }
                    blinkingtime = 0;
                    }
                
                if (blinking > 4) { blinking = 0; }

Autor: Frank (Gast)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Im Anhang wird nur �������������������������� angezeigt.

Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Danke Frank.
Keine Ahnung, was da schief läuft.

Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Konkret zum Code:

Was soll das eigentlich machen? Das kommt mir heftig viel Code vor, 
dessen Funktion nicht wirklich klar ist. Und ich bin mir fast sicher, 
dass man das auch einfacher lösen kann.


Deine _delay_ms scheinen beispielsweise nur die eine Aufgabe zu haben, 
eine LED nach einer bestimmten Zeit wieder abzuschalten.
Das macht man mit einem Timer. LED einschalten, Timer starten und wenn 
der Timer abgelaufen ist, schaltet der die LED wieder ab.

Autor: Tobias N. (silberkristall)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Also der Taster code soll folgendes machen (geschaltet wird auf masse)

Wenn der Taster gedrückt wird soll er 600 ms schalten und wenn er wieder 
losgelassen wird soll er 300 ms schalten.

Rechts sowie links, also das sind die Taster die an den Türen vom Auto 
sind. Wird die Tür zu gemacht soll das fenster 600 ms hoch fahren, wird 
die tür auf gemacht dann 300ms runter. das klappt ja auch soweit nur 
halt wenn man beide türen gleichzeitig öffnet geht erst die eine, dann 
die andere seite runter.

Der Zähler Code soll folgendes machen.

Wenn man per Funk ZV (Zentralverriegelung) Blinken die Blinker halt 1mal 
oder 2 mal oder 3 mal etc. und anhand des "blinkens" soll der Zählen wie 
oft es war, danach 2 sek. warten (vom ersten bis zum zweiten blinken 
dauert es jeweils 1 sek.) dann soll der jenachdem wie oft das blinken 
war etwas schalten, ein relai o.ä.

Das Signal kommt direkt von den Blinkern und wird mittels 7805er auf 5V 
und dann mittels 1k widerstand an den Chip gegeben.

Einen Timer habe ich auch, dieser lässt alle 3 sek eine LED in der Tür 
blinken.

Ich hatte mit C noch nicht viel zu tun deswegen wird der Code vll. etwas 
umständlich sein aber vorerst geht es mir darum das es geht.

Autor: Tobias (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Kann mir denn keiner weiter helfen?

Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Dein Tasten/Schaltzeiten Problem ist eine Variation hiervon

Beitrag "Re: Arduino Keypad und Multitasking"

Autor: Klaus Wachtler (mfgkw)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Wenn dein Programm mehrere Sachen (quasi) gleichzeitig machen soll, 
lohnt es sich das gcc-Tutorial durchzuarbeiten.

Das hat auch den Vorteil, daß man nicht jedem alles wieder von vorne 
erklären muß, obwohl es schon tausendmal durchgekaut wurde und genau 
deshalb ins Tutorial kam.

Wenn du das mit Verstand durch hast, sollte dein Problem auch gelöst 
sein.
Wenn nicht, lohnt es sich konkret zu fragen wo es hakt.

Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Klaus Wachtler schrieb:

> Wenn nicht, lohnt es sich konkret zu fragen wo es hakt.


Wo's hakt?
Wie immer:   "Ich muss auf etwas warten"   ---->  _delay_ms

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net