- 12V Akku mit 280 Ah bauen         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 27

Thema: Kapiere _delay nicht

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    05.03.2007
    Beiträge
    43

    Kapiere _delay nicht

    Anzeige

    Praxistest und DIY Projekte
    Also ich hab folgendes Programm:

    Code:
    #include <avr/io.h> 
    #define F_CPU 1000000 
    #include <util/delay.h> 
    
    
    int main(void) 
    { 
    _delay_ms(10);
    DDRB=0x01; 
    
    
       return(0); 
    }
    Dann müsste doch eine Lampe an Port B leuchten. Macht sie aber nicht.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.07.2006
    Ort
    Karlsruhe/München
    Alter
    34
    Beiträge
    587
    Du musst PORTB die Pull ups noch setzen.

    Eventuell noch eine Endlosschleife, einbauen...

    Grüße

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.188
    Wie ist den deine Lampe angesteuert ?

    Wenn zum leuchten eine 1 am Ausgang gebraucht wird solltest Du noch:
    PORTB=0x01;
    in deinen Code einfügen.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    05.03.2007
    Beiträge
    43
    Also es ist so, wenn ich im obrigen Code das "_delay_ms(10);" weglasse leuchtet eine Lampe auf. Ich glaub der bleibt da bei delay hängen.

    Nächstes Problem: Hab es mit einer for-Schleife probiert aber die überspringt er irgendwie.
    z.B
    Code:
    #include <avr/io.h> 
    #define F_CPU 1000000 
    #include <util/delay.h> 
    
    
    int main(void) 
    { 
    int i;
    for(i=1;i>0;i++)
    {
    PORTB=0x00;
    DDRB=0x01;
    }
    
    
    
       return(0); 
    }
    Es leuchtet keine Lampe auf. Nur mit dem Schleifeninhalt schon.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.07.2006
    Ort
    Karlsruhe/München
    Alter
    34
    Beiträge
    587
    Hallo,

    ist ja auch klar...

    es muss heißen:
    for(i=1;i<0;i++){

    aber gleich besser ist:
    while(1){


    Grüße

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    05.03.2007
    Beiträge
    43
    Danke für die Hilfe.
    OK, Schleife funktioniert, aber delay geht immer noch net. Hab keine Ahnung was ich noch machen kann.

    Mfg Jokill

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.07.2006
    Ort
    Karlsruhe/München
    Alter
    34
    Beiträge
    587
    ich nehme mal an, dass du das ganze nicht so 100 Prozent genau brauchst.

    Mach eine Schleife die hochzählt, innenrein NOPs (no operation). Schau am besten im Wiki, Rubrik inline assembler, da ist das beschrieben.

    Achja: 10ms sind ja auch wenig, nimm mal 500ms dass du was siehst

    Grüße

    s.o.

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.08.2005
    Alter
    39
    Beiträge
    685
    Zitat Zitat von s.o.
    ich nehme mal an, dass du das ganze nicht so 100 Prozent genau brauchst.

    Mach eine Schleife die hochzählt, innenrein NOPs (no operation). Schau am besten im Wiki, Rubrik inline assembler, da ist das beschrieben.

    Achja: 10ms sind ja auch wenig, nimm mal 500ms dass du was siehst

    Grüße

    s.o.
    Beachte:
    The maximal possible delay is 262.14 ms / F_CPU in MHz.
    Also bei 1MHz: max 262,14ms. 500ms ist zu hoch.

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    05.03.2007
    Beiträge
    43
    Habs jetzt mal mit Schleife probiert und klappt immer noch nicht (es tritt keine Verzögerung auf):

    Code:
    #include <avr/io.h>
    #define F_CPU 1000000
    
    int main()
    {
    
    
    int i;
       
    for (i=0; i<50; i++)
    {
          (void) (int * volatile) &i;
    }
    
    DDRB=0x01;
    return 0;
    }
    Ich flipp langsam aus. Kann mir vielleicht nicht einer einen funktionierenden code posten?

    mfg Jokill

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.07.2006
    Ort
    Karlsruhe/München
    Alter
    34
    Beiträge
    587
    wundert mich nicht. Er hängt sich oben ja schon in der Schleife auf, dann kann er auch nix ausgeben...

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen