- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 27

Thema: zeitverzögerung

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    39
    Beiträge
    199
    Anzeige

    Powerstation Test
    Ha, damit hast du mir die Lösung ja schon fast direkt gesagt. Auf den letzten Satz bin ich ja bis jetzt noch gar nicht so wirklich eingegangen. Das heißt bei einer Taktfrequenz von 1 MHz ist die Maximale verzögerung 262.14ms und je höher die Frequenz um so kleiner ist die maximal mögliche delayzeit.
    Ich denke eine for-Schleife wäre da ganz nutzlich
    Find ich komisch. wenn ich 100 ms eingebe und danach 1000 kommt mir die verzögerungszeit schon extrem länger vor. Aber egal. werde in meiner for-schleife dann aber 100ms nehmen.
    Danke!!!
    Aber das nächste Problem kommt sicher bald. Werde mich heut abend mal mit den Fuses auseinander setzen.
    Bis bald.

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    ,
    Es ist doch schöner auf die Lösung selber zu kommen, oder?
    Wenn Du mal hier in Forum etwas gesucht hättest... auf jedem Fall bist Du nicht der erste, der mit delay Probleme hatte.
    Dazu muß ich noch sagen, benutz die delays nicht all zu oft, sie sind gut um mal eben Blinki,Blinki zu nachen, oder ein LCD zu bedienen, am sonsten ist es kein guter Programierstil den µC die Zeit totschlagenzulassen.
    Eleganter ist es Timer zu nutzen, aber für den Anfang sind die "Zeitvernichtungsroutinen" ok.
    Zu Fusebits, sei gewarnt,
    solltest Du irgendwas falsch einstellen, wirst Du keinen Zugriff mehr auf den µC haben
    Auch dafür gibt es genug Beiträge hier in Forum.
    Mit welchem Programm brennst Du ?

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    39
    Beiträge
    199
    Bringt auf jeden fall mehr spaß selbst drauf zu kommen.
    Hab das jetzt so gemacht:

    Code:
    #include <avr/io.h>
    #include <stdint.h>
    #define F_CPU 1000000UL 
    #include <util/delay.h>     
     
    int main (void)
    {
    uint8_t i;          
       DDRA  |= (1<<DDA0) | (1<<DDA1);
       DDRD  &= ~(1<<DDD0);
       PORTA &= ~(1<<PA0) | (1<<PA1);
       
       OSCCAL = 0x00;
       
       while(1) 
       {
       if ((PIND & (1<<PD0)) != 0)
         {
    	 PORTA |= (1<<PA1);
    	 
    	 for (i=1; i<=100; i=i+1)
    	   {
    	   _delay_ms(10);
    	   }
    	   PORTA |= (1<<PA0);
         }
    	 
    	 else
    	 PORTA &= ~(1<<PA0);
    	 PORTA &= ~(1<<PA1);
    
       }
    return 0;                                     
    }
    wenn ich jetzt den Taster drück, dauert das aber ca. 3 sec bis die Lampe leuchtet. sollte soch nur 1 sec dauern, denke ich. 10ms mal 100 sind doch 1000ms also 1 sec. is alles komisch. Dann gibts da noch das problem das es nochmal ca. die gleiche zeit dauert bis beide LEDs wieder ausgehen. Hast da ne Idee? Glaub ich besorg mir mal ein Quarz... hilft mir auf jeden fall mit den Zeiten.
    Ich brenne mit "Programmers Notepad 2". Drück da auf "programm". Das meinst du doch, ne? Ich hab das mit den Gefahren bei Fuses schon gehört.
    Werde auch nur was ändern wenn ich mir 100% sicher bin.
    Kuck mir gleich mal Timer an.

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Ich denke es hat mit OSCCAL = 0x00; zu tun, lass das mal weg,
    Der µC ist vom Werk aus für 5V bei 20 Grad kalibriert(glaub ich)
    Hab jetzt keine Lust genau nachzusehen, also nicht schlagen, wenn das nicht ganz stimmt.
    OSCAL wird interessant, wenn Du mit kleineren Spannungen arbeitest.
    Sonst brauchst Du fürs erste keinen Quarz.
    Das andere Problem, weiß ich nicht genau, aber was hast Du für ein Board ?
    Oder Steckbrett?
    Dieser Zeile nach zu urteilen
    Code:
    if ((PIND & (1<<PD0)) != 0)
    Tastest Du VCC (5V) mit dem Taster auf PD0 richtig?
    Taste gedrückt PD0 -> VCC
    Taste los PD0 -> ? was ? hängt in der Luft, oder hast Du einen Pulldown Widerstand dran?
    Wenn in der Luft, dann ist es schlecht, nimm irgendein Widerstand von etwa 10 Kohm
    und schalte ihn zwischen PD0 und GND(0V,minus)
    Üblich ist es Pullup Widerstände zu nehmen(also zwischen PD0 und VCC) und mit dem Tastendruck GND auf den Pin zu schalten, dann könnte man sich sogar den Widerstand sparen und einen internen einschalten.
    Wenn Du jetzt nicht weißt, was ich von Dir will schau Dir die Bildchen auf meiner HP an.
    Es geht sich da zwar um Assembler, das Prinzip bleibt aber gleich

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    39
    Beiträge
    199
    Jetzt klappt das mit den Zeiten! Danke Ich bastel jetzt grade an einem Lauflicht rum.
    Ja, wenn man den Taster drückt dann schaltet man 5V auf den Eingang.
    Klar hab ich Pull down widerstände. Kenn das aus meiner Lehrzeit von der TTL-Technik, aber als ich die Schalterplatine gelötet hab, hab ich 1,8kOhm oder so genommen. Hab ein Steckbrett. Aber dazu hab ich auch 2 Bilder angehängt. Deine Homepage is echt gut gelungen. Wollte auch mal eine machen aber das ist ne andere Geschichte.
    Bis bald,
    Gruß Jan
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken chaos2.jpg   chaos1.jpg  

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Klar hab ich Pull down widerstände. Kenn das aus meiner Lehrzeit von der TTL-Technik, aber als ich die Schalterplatine gelötet hab, hab ich 1,8kOhm oder so genommen. Hab ein Steckbrett.
    Das ist gut,man weißt ja nicht wie fit jemand in der Technik ist, und unkontrolierte Schaltvorgänge würden auf offene Eingänge hindeuten

    Gruß Sebastian

    P.S.
    Schönes Netzteil...
    Software is like s e x: its better when its free.
    Linus Torvald

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    39
    Beiträge
    199
    Ja, auf die Idee mit den Pulldown Widerständen wäre ich glaub ich auch zuerst gekommen, wenn ich du wäre. Ich hab jetzt noch das problem das die LED zwar verzögert aufleuchtet aber auch nach loslassen des Tasters auch verzögert wieder ausgeht, bzw. beide gehen verzögert aus. Hab im "else Zweig" doch gar keine Verzögerung programmiert. Versteh nicht woran das liegen kann.
    MfG Jan

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Versteh nicht woran das liegen kann.
    Ich sag mal, das Problem ist eher logischer Natur
    Schau Dir den Programmablauf in Ruhe an...
    Du Testest, ob ein Pin HIGH ist, wenn ja schaltest Du eine LED sofort an, dann gehst Du in die "1Sekunde vernichten" Schleife rein, in der der µC jetzt gefangen ist, dann fragst Du wieder den Pin ab, wenn HIGH wieder 1 Sekunde nichts tun, egal ob die LEDs schon an ist, oder nicht
    Wenn Du jetzt ungünstig Deinen Taster loslässt, also wenn i sag
    ich mal 2 ist, wie lange dauert es, bis die nächste Pin Prüfung gemacht wird?
    Besser wäre hier auf Flankenwechsel zu reagieren, also in die Zeilen mit LED an und delay nur dann springen wenn der Pegel am PD0 von LOW auf HIGH wechselt.

    Mögliche Lösung sieht dann so aus:
    Code:
    uint8_t flanke = 0;
    ...
    ...
     if (PIND & (1<<PD0)) {
    	 if (!flanke){
    	   flanke = 1;
    	   PORTA |= (1<<PA1);
    	   for (i=1; i<=100; i=i+1)
    	     {
    	       _delay_ms(10);
    	     }
    	   PORTA |= (1<<PA0);
    	 }
           }
           
           else{
    	 flanke = 0;
    	 PORTA &= ~(1<<PA0);
    	 PORTA &= ~(1<<PA1);
           }
    Naja, ein Durchlauf ist jetzt aber nötig, Du mußt also die Taste solange drücken, bis PA0 HIGH wird, dafür gehen die LEDs sofort aus...
    Logisch?
    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    39
    Beiträge
    199
    Moin!!!
    Hatte heut nicht so viel Zeit. Meine Freundin und ich haben Monatstag.
    Ich hab das programm grade mal auf den uC gebrannt und es funzt auch gut,
    nur das die LED an PA1 immer noch verzögert ausgeht. Das kann ich mir echt nicht mehr erklähren.
    Das mit der Flankensteuerung find ich echt cool. Hat mir aber echt zu denken gegeben, wegen der Logik.
    Hatte die ganze Zeit so einen blöden denkfehler.
    Weißt du da auch noch eine Lösung? Warum werden die beiden Prots den unterschiedlich behandelt? Die stehen doch beide unter "else" und das die Flankensteuerung bezieht sich doch auch auf beide. Durch "Flanke = 1" kann das delay doch nur einmal ablaufen und dann erst wieder, wenn der taster losgelassen und erneut gedrückt wird.
    Es müsste sowas wie einen Debugger geben das man das schrittweise durchlaufen lassen könnt. Dann würde man sehen wo´s hackt.
    Naja,
    MfG Jan

  10. #20
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo,
    Hatte heut nicht so viel Zeit. Meine Freundin und ich haben Monatstag.
    Verständlich, meine Frau würd mir auch was antun, wenn ich an unserem Jahrestag an was anderem basteln würde...

    Aber zu Deinem Problem, zuerst wolte ich schon das Programmchen auf meinen STK500 aufspielen um diesem "Phänomen" nachzugehen.
    Es war aber nicht nötig (hoffe ich)
    Vergleiche mal Deine Schleife mit der, die ich gepostet habe...
    Ein Tip:
    C erlaubt es Klammern{} wegzulassen, wenn ... was ?
    Sowas fällt auf, wenn man das automatische Einrücken einschaltet...

    Gruß Sebastian

    P.S.
    Das sollte schon früher auffallen... sowas sowas
    Software is like s e x: its better when its free.
    Linus Torvald

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test