- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 3 von 3

Thema: division durch null

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.02.2007
    Beiträge
    139

    division durch null

    Hallo

    Ich habe das Problem das mir der Compiler division durch null als Warning meldet.
    test.c:19: warning: division by zero

    Also die Datei test.c wird mittels : "avr-gcc -c test.c -mmcu=atmega168 -DF_CPU=1000000UL" compiliert (avr-gcc 4.3.2..), nun gibt es hier ein define das ICR heißt und in der verschiedene Defines zu einem neuen Define zusamme gefügt werden.

    Nun in jeder zeile in der ich nun ICR einsetze erhalte ich ein Warning division durch null....

    Wenn ich jedoch zuerst den Precompiler mit "-E" drüberlaufen lasse und dann erst -c mache geht es...


    Könnte mal jemand von euch versuchen das zu Compilieren bzw hat jemand ne Erklärung....



    Datei ist im Anhang.

    edit:
    Keine Ahnung warum aber es wurde 3mal angehängt...
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    Beiträge
    4.255
    Das könnte damit zusammenhängen, dass der Präprozessor hier anscheinend mit int rechnet.
    1/(F_CPU/PRESCALE) ergibt dann 0,000008, was als int auf Null abgeschnitten wird. Dasselbe passiert nochmal bei (PERIOD/1000) = 0,02, was auch zu Null wird. Letztendlich wird also 0 durch 0 geteilt...

    Edit: ist 1250 das, was deiner Meinung nach rauskommen sollte? Das passiert bei
    #define ICR (int) (((PERIOD/(float)1000)/(1/(F_CPU/(float)PRESCALE)))/2)

    PS: so ein kurzes Stück Code sollte man besser in [code ][/code ]-Tags packen statt in den Anhang. Dann sieht jeder sofort, was drinsteht.

    PPS: und so wird es auch noch einigermaßen lesbar:
    Code:
    #define ICR (int) 	(											\
    						(										\
    							(PERIOD/(float)1000)				\
    							/									\
    							(									\
    								1								\
    								/								\
    								(F_CPU/(float)PRESCALE)			\
    							)									\
    						)										\
    					/											\
    					2											\
    					)

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.02.2007
    Beiträge
    139
    Danke sehr, daran habe ich gar nicht gedacht...

    Ja, sollte stimmen bei 8000000hz, sinds dann 10000;

    lg manhunt

Berechtigungen

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

Labornetzteil AliExpress