- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 27 von 27

Thema: zeitverzögerung

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

    LiFePo4 Akku selber bauen - Video
    Ich hab dein Programm kopiert und bei mir eingefügt. Hab auch bisschen an den klammern rumgebastelt.
    Man kann klammern weglassen, wenn nur eine Anweisung folgt, oder?

    Hier nochmal der ganze Code von mir:
    Code:
    #include <avr/io.h>
    #include <stdint.h>
    #include <util/delay.h>
    #define F_CPU 1000000UL
    
    int main (void)
    {
    uint8_t i;
    uint8_t flanke;
              
    DDRA  = 0xff;
    DDRD  &= ~(1<<DDD0);
       
      while(1) 
      {
      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);
          }
      }
    
    }
    Weiß echt nich weiter.
    Man bräuchte einen Debugger um das alles mal schritt für schritt durchzuspielen.
    Naja, N8.

  2. #22
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Man bräuchte einen Debugger um das alles mal schritt für schritt durchzuspielen.
    Dann lad Dir doch AVRStudio runter, ist recht brauchbar

    Das mit den Klammern stimmt, wenn man sie wegläßt wird nur die Zeile, die darunter ist ausgeführt, der rest nicht mehr.
    Komisch, das letzte Programm von Dir müßte aber funktionieren, ich hab es doch ausprobiert, mußte zwar was anpassen, weil ich M8 zur Zeit drauf habe, und meine Taster gegen GND schalten, ich taste mir die Finger wund, und es klappt ohne Probleme, beide LED gehen sofort aus(natürlich nachdem man den Taster solange drückt, bis beide an sind)
    Hier mein Programm
    Code:
    #include <avr/io.h> 
    #include <stdint.h> 
    #define F_CPU 1000000UL
    #include <util/delay.h> 
     
    
    int main (void) 
    { 
      uint8_t i; 
      uint8_t flanke=0; 
      
      DDRB  = 0xff; 
      DDRD  &= ~(1<<DDD0); 
      
      while(1) { 
        if (!(PIND & (1<<PD0))) {
          if (!flanke){ 
    	flanke = 1; 
    	PORTB |= (1<<PB1); 
    	for (i=1; i<=100; i=i+1){ 
    	  _delay_ms(10); 
    	} 
    	PORTB |= (1<<PB0);
          }
        } else { 
          flanke = 0; 
          PORTB &= ~((1<<PB0)|(1<<PB1)); 
        } 
      } 
      return 0;
    }
    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  3. #23
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    39
    Beiträge
    199
    So wird das auf jeden Fall nie langweilig.
    Jetzt setze ich mich mit dem Nächsten Programm auseinander. AVR-Studio4
    Das hab ich sogar schon drauf, weil ich das mal von meiner Robotikhardware CD draufgemacht hab.
    Dann bis bald.
    Gruß Jan

  4. #24
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    39
    Beiträge
    199
    Moin.
    Ich hab grade mal das Programm in AVR-Studio4 geschrieben.Als ich auf Build gedrückt hab kamen erstmal 2 Warnungen. Diese:

    C:/WinAVR/avr/include/util/delay.h:136:3: warning: #warning "F_CPU not defined for <util/delay.h>"
    ../Testing.c: In function `main':

    Und diese:

    ../Testing.c:23: warning: statement with no effect

    Ich dachte das Prog is fehlerfrei.
    Oder soll ich die einfach ignorieren? Das kann doch irgendwie nich sein, oder?

    Wenn ich dann auf F10 durchticker bleibt der irgendwie immer bei der for-Schleife hängen. Hab die jetzt schon geändert. Jetzt: for (i=1; i<=2; i=i+1) aber der geht immer die gleiche schleife durch.

    MfG Jan

  5. #25
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo, erste Warnung ist klar, hast Du F_CPU auch vor #include<util/delay.h> definiert ?
    Die zweite Warnung ist an sich auch klar, nur wer soll bitte wissen, was in der Zeile 23 drin steht ?
    Zu AVRStudio muß ich im Moment Schulter zucken, da ich keinen Winrechner z.Z. habe, ich kann mich aber daran errinern, daß man komisches Verhalten beobachtet, wenn Optimierung eingeschaltet ist, kannst mal testen...
    Das könnte aber wiederum eine neue Warnung mit sich bringen, wiel mal _delay* nicht ohne Optimierung verwenden soll.
    Sonst kannst Du die _delay* weglassen und irgendwas anderes reinschreiben, der logische Aufbau bleibt dann doch gleich, oder ?
    Software is like s e x: its better when its free.
    Linus Torvald

  6. #26
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    39
    Beiträge
    199
    Da hab ich ja wieder eine geistige Glanzleistung vollbracht!!! In Zeile 23 stand:
    for (i=1; i<=2; i+1) dabei muss es doch i=i+1 heißen.
    Das is echt ziemlich dämlich!!!
    Naja, wie man die Optimierung ausstellt hab ich nicht rausgefunden.
    Das mit dem #Include... hinterher klappt. Danke!!!

  7. #27
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    39
    Beiträge
    199
    Hab das nochmal bei AVRStudio durchgespielt. Warum bei mir die LED immernoch verzögert ausgeht werde ich wohl nie verstehen.
    Kümmer mich jetzt mal lieber um Timer und so.
    Bis Bald
    Gruß Jan

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

Labornetzteil AliExpress