Forum: Mikrocontroller und Digitale Elektronik ATMEGA328P-AU läuft etwa um Faktor 10 langsamer als normal


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.
von Marco W. (wima75)


Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich habe ein kleines Board gemacht, wo ich den ATMEGA328P-AU 
(https://lcsc.com/product-detail/ATMEL-AVR_Microchip-Tech-ATMEGA328P-AU_C14877.html) 
und einen 16MHz Resonator 
(https://lcsc.com/product-detail/SMD-Crystal-Resonators_Yangxing-Tech-X322516MLB4SI_C13738.html) 
draufgelötet habe. Zusätzlich den Pullup Widerstand 10K beim Reset-Pin.
Und eine Leuchtdiode über einen Vorwiderstand an PD7.
Im Blink-Example habe ich die beiden delays auf delay(50) geändert.
Programmiert habe ich über ein anderes Arduino.
Danach starte ich und die LED blinkt etwa im Halbsekunden-Takt. Etwa so 
wie bei einem richtigen Arduino mit delay(500). Was läuft hier falsch? 
Ich denke ich brauche keine Kondensatoren, die sind im Resonator drin, 
oder?
Vielen Dank für eure Tipps.
Gruss Marco

: Bearbeitet durch User
von M. K. (matthias_k33)


Bewertung
1 lesenswert
nicht lesenswert
Fuse  CKDIV8 (device clock by 8, wohl gemeint, dass Takt um 8 fach 
langsamer ist.)  ist bei dir wohl gesetzt... einfach rausnehmen, dann 
stimmt es.

: Bearbeitet durch User
von Marco W. (wima75)


Bewertung
0 lesenswert
nicht lesenswert
tönt gut, ich weiss grad noch nicht wo und wie. Kann ich das über die 
Arduino IDE machen?

von Jacko (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Dein zweiter Link zeigt auf einen Quarz. Vielleicht schwingt der auch
ohne Kondensatoren, vielleichter aber auch nicht.
2 x 22...33 pF sind empfehlenswert.

Wenn du sonst nicht viel programmiert hast (Fuses?), sorgt da
der interne RC-Oszillator (ca. 8 MHz) bei CKDIV8 für etwa 1 MHz.

von Marco W. (wima75)


Bewertung
0 lesenswert
nicht lesenswert
habe den falschen Link gepostet, ist nun korrigiert.

von Hellseher (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Marco W. schrieb:
> tönt gut, ich weiss grad noch nicht wo und wie.

So wie du dich gibst hast du auch sicherlich keine
Ablock-Kondensatoren in deiner Schaltung verwendet. Also
ganz schnell mal nachholen, sonst kommen später so
komische Fragen warum was nicht funktioniert.

von Marco W. (wima75)


Bewertung
0 lesenswert
nicht lesenswert
Aktuell noch nicht wirklich. Ich weiss noch nicht genau welche ich 
brauche. Da gibts ja verschiedene Meinungen...

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
Marco W. schrieb:
> Aktuell noch nicht wirklich. Ich weiss noch nicht genau welche ich
> brauche. Da gibts ja verschiedene Meinungen...

Das ist wie bei Fahrradschlössern. Kein Schloss - kein Fahrrad.

von Brain 2.0 (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Marco W. schrieb:
> Aktuell noch nicht wirklich. Ich weiss noch nicht genau welche ich
> brauche. Da gibts ja verschiedene Meinungen...

Einfach mal Datenblatt lesen, da gibt es keine verschiedenen Meinungen.

Und mal lesen was dir geschrieben wurde, dann hast du deinen Fehler.

von Hellseher (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Das ist wie bei Fahrradschlössern. Kein Schloss - kein Fahrrad.

Aaahhh das tut gut, hoffentlich geht das irgendwo rein ins Hirn.

von Jacko (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Na dann wird das wohl nix.
Ikebana, oder Macramé sind aber auch schöne Hobbies!

von Hellseher (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jacko schrieb:
> Ikebana, oder Macramé sind aber auch schöne Hobbies!

Stricken oder Gärtnern wurde in diesem Zusammenhang auch oft
genannt. Aber es besteht ja noch Hoffnung dass es nicht so
weit kommen muss.

von Wolfgang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Marco W. schrieb:
> Was läuft hier falsch?

Im Datenblatt steht: "The device is shipped with internal RC oscillator 
at 8.0MHz and with the fuse CKDIV8 programmed, resulting in 1.0MHz 
system clock."

Deine Frage lässt sich besser beantworten, wenn du verrätst, was du an 
diesen Werkseinstellungen geändert hast?
Falls du gar nichts geändert hast, wird dein µC immer noch mit 1MHz 
laufen und dein 16MHz Resonator ist ihm schnuppe.

von Marco W. (wima75)


Bewertung
0 lesenswert
nicht lesenswert
Wolfgang schrieb:
>
> Im Datenblatt steht: "The device is shipped with internal RC oscillator
> at 8.0MHz and with the fuse CKDIV8 programmed, resulting in 1.0MHz
> system clock."
>
> Deine Frage lässt sich besser beantworten, wenn du verrätst, was du an
> diesen Werkseinstellungen geändert hast?
> Falls du gar nichts geändert hast, wird dein µC immer noch mit 1MHz
> laufen und dein 16MHz Resonator ist ihm schnuppe.

Genau so siehts aus. Geändert habe ich nämlich nichts. Ich muss nun also 
versuchen diese Einstellungen zu ändern.

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
Jedem Arduino User, würde ich in einer solchen Situation raten 
"Bootloader brennen" zu drücken.
Bei dir traue ich mich das nicht.

von Maxim B. (max182)


Bewertung
-1 lesenswert
nicht lesenswert
M. K. schrieb:
> Fuse  CKDIV8 (device clock by 8, wohl gemeint, dass Takt um 8 fach
> langsamer ist.)  ist bei dir wohl gesetzt... einfach rausnehmen, dann
> stimmt es.

In programm am Anfang #include <avr/power.h> schreiben.
Dann irgendwo bei Init noch:
clock_prescale_set(clock_div_1);

So kann man Fuse in Ruhe lassen und trotzdem korrekt F_CPU haben.

: Bearbeitet durch User
von Brain 2.0 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Marco W. schrieb:
> Genau so siehts aus. Geändert habe ich nämlich nichts. Ich muss nun also
> versuchen diese Einstellungen zu ändern.

Genau dass wurde dir schon mehrfach mitgeteilt.
Hier und anderswo!
Glaubst du das nun endlich mal.
Warum machst du das nicht ?

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
Maxim B. schrieb:
> In programm #include <avr/power.h> schreiben.
> Dann irgendwo bei Init noch:
> clock_prescale_set(clock_div_1);
>
> So kann man Fuse in Ruhe lassen und trotzdem korrekt F_CPU haben.
Und die interne 8MHz verdoppeln?

Von daher:
Quarze und Resonatoren werden sowieso überbewertet.

von Maxim B. (max182)


Bewertung
-2 lesenswert
nicht lesenswert
Arduino Fanboy D. schrieb:
> Und die interne 8MHz verdoppeln?

Nein. Aber Fuse für F_CPU / 8 darf bleiben, trotzdem wird auf F_CPU 
gearbeitet. Manchmal ist es von Vorteil, Fuse in Ruhe zu lassen.

Das funktioniert auf C. Vielleicht wird das mit Arduino-IDE aber nicht 
arbeiten, keine Ahnung. Ich schreibe auf C.

: Bearbeitet durch User
von Hellseher (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Brain 2.0 schrieb:
> Genau dass wurde dir schon mehrfach mitgeteilt.
> Hier und anderswo!

Ich zweifle so langsam an meinen eigenen Aussagen.

Hellseher schrieb:
> Aber es besteht ja noch Hoffnung dass es nicht so
> weit kommen muss

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
Maxim B. schrieb:
> Nein. Aber Fuse für F_CPU / 8 darf bleiben, trotzdem wird auf F_CPU
> gearbeitet. Manchmal ist es von Vorteil, Fuse in Ruhe zu lassen.
Und dann macht es doppelt Sinn dort einen Quarz/Resonator zu platzieren.

Maxim B. schrieb:
> Das funktioniert auf C. Vielleicht wird das mit Arduino-IDE aber nicht
> arbeiten, keine Ahnung. Ich schreibe auf C.
Ja, ist klar...

F_CPU wird in der Arduino Welt übrigens in der boards.txt definiert....

von Joachim B. (jar)


Bewertung
-3 lesenswert
nicht lesenswert
Arduino Fanboy D. schrieb:
> F_CPU wird in der Arduino Welt übrigens in der boards.txt definiert....

dann braucht er die ja nur auf 1 MHz umschreiben und dann passt es 
wieder mit intern 8MHz /8

das wäre dann aber 16x langsamer ist ja ungefähr um Faktor 10.

: Bearbeitet durch User
von Wolfgang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Maxim B. schrieb:
> Vielleicht wird das mit Arduino-IDE aber nicht
> arbeiten, keine Ahnung. Ich schreibe auf C.

Was meinst du wohl, was die Arduino IDE für einen Compiler verwendet ;-)
Irgendetwas mit gcc ...

von Manfred (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Arduino Fanboy D. schrieb:
> F_CPU wird in der Arduino Welt übrigens in der boards.txt definiert....

Da bin ich nicht mehr so ganz sicher, wenn ich Pro Mini 5V 16MHz und 
3,3V 8MHz angucke:
1
pro.menu.cpu.16MHzatmega328.bootloader.low_fuses=0xFF
2
pro.menu.cpu.16MHzatmega328.bootloader.high_fuses=0xDA
3
pro.menu.cpu.16MHzatmega328.bootloader.extended_fuses=0x05
4
pro.menu.cpu.16MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
5
pro.menu.cpu.16MHzatmega328.build.mcu=atmega328p
6
pro.menu.cpu.16MHzatmega328.build.f_cpu=16000000L
1
pro.menu.cpu.8MHzatmega328.bootloader.low_fuses=0xFF
2
pro.menu.cpu.8MHzatmega328.bootloader.high_fuses=0xDA
3
pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=0x05
4
pro.menu.cpu.8MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex
5
pro.menu.cpu.8MHzatmega328.build.mcu=atmega328p
6
pro.menu.cpu.8MHzatmega328.build.f_cpu=8000000L

Da stehen die gleichen Fuses drin, aber unterschiedliche Bootloader.

Ich hätte auch gedacht:
Arduino Fanboy D. schrieb:
> Jedem Arduino User, würde ich in einer solchen Situation raten
> "Bootloader brennen" zu drücken.

dann sitzen die Fuses und er kann ja trotzdem per ISP programmieren und 
damit den Bootloader wieder wegschießen. Scheint nicht wirklich so zu 
sein?

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
Manfred schrieb:
> Arduino Fanboy D. schrieb:
>> F_CPU wird in der Arduino Welt übrigens in der boards.txt definiert....
>
> Da bin ich nicht mehr so ganz sicher, wenn ich Pro Mini 5V 16MHz und
> 3,3V 8MHz angucke:
Der Beweis:
pro.menu.cpu.16MHzatmega328.build.f_cpu=16000000L
pro.menu.cpu.8MHzatmega328.build.f_cpu=8000000L

Manfred schrieb:
> Da stehen die gleichen Fuses drin,
Weil sie für 8 und 16MHz identisch sind.
Der Unterschied findet sich im Schliff der Kristalle/Keramiken.

Manfred schrieb:
> aber unterschiedliche Bootloader.
Ja!
Einer für 16Mhz kompiliert und der andere für 8MHz.
Ist nicht logisch, für dich?


Schlussendlich:
Ich sehe da nichts, was einen verwundern müsste.

-------


Manfred schrieb:
> dann sitzen die Fuses und er kann ja trotzdem per ISP programmieren und
> damit den Bootloader wieder wegschießen. Scheint nicht wirklich so zu
> sein?
Das ist suboptimal.
Da man so den hinteren Speicher nicht nutzen kann/darf.

Wenn man ohne Bootloader arbeiten möchte, sollte man die Fuses anpassen, 
bzw einen neuees Board definieren.

: Bearbeitet durch User
von Maxim B. (max182)


Bewertung
0 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Was meinst du wohl, was die Arduino IDE für einen Compiler verwendet

Etwas Verrücktes, was statt while(1) "loop" haben will. :)

Compiler hat selbst mit "clock_prescale_set(clock_div_1);" nichts zu 
tun. Das sollte vorher irgendwo definiert werden.

: Bearbeitet durch User
von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
Maxim B. schrieb:
> Etwas Verrücktes, was statt while(1) "loop" haben will.
Will es doch gar nicht....
Lass setup() und loop() weg, und verwende Stattdessen main(), und du 
bist wie zuhause.

Maxim B. schrieb:
> Compiler hat selbst mit "clock_prescale_set(clock_div_1);" nichts zu
> tun. Das sollte vorher irgendwo definiert werden.
Ist es auch!
Es ist Teil der AVR-Gcc Tool Chain.
Und steht darum, ohne Einschränkungen, dem Arduino Jünger zur Verfügung.
Wahlweise in C oder C++.
Asm auch, sieht dann aber etwas anders aus.

von Maxim B. (max182)


Bewertung
0 lesenswert
nicht lesenswert
Wenn Arduino-IDE auch zusammen mit JTAG-Debugger arbeiten könnte und 
auch Simulator für Debug hätte, dann würde die IDE wirklich brauchbar...

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
Maxim B. schrieb:
> Wenn Arduino-IDE auch zusammen mit JTAG-Debugger arbeiten könnte

Die nächste Generation kann Debuggen.
> Arduino Pro IDE
Dauert noch etwas, ist aber in der Mache.

von Maxim B. (max182)


Bewertung
0 lesenswert
nicht lesenswert
Das freut mich.

Natürlich kann man auch per USART debuggen. Aber mit JTAG ist das Leben 
besser.

von Joachim B. (jar)


Bewertung
-3 lesenswert
nicht lesenswert
Arduino Fanboy D. schrieb:
> F_CPU wird in der Arduino Welt übrigens in der boards.txt definiert....

Manfred schrieb:
> Da bin ich nicht mehr so ganz sicher, wenn ich Pro Mini 5V 16MHz und
> 3,3V 8MHz angucke:
> pro.menu.cpu.16MHzatmega328.bootloader.low_fuses=0xFF
> pro.menu.cpu.16MHzatmega328.bootloader.high_fuses=0xDA
> pro.menu.cpu.16MHzatmega328.bootloader.extended_fuses=0x05
> pro.menu.cpu.16MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega 328.hex
> pro.menu.cpu.16MHzatmega328.build.mcu=atmega328p
> pro.menu.cpu.16MHzatmega328.build.f_cpu=16000000L
> pro.menu.cpu.8MHzatmega328.bootloader.low_fuses=0xFF
> pro.menu.cpu.8MHzatmega328.bootloader.high_fuses=0xDA
> pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=0x05
> pro.menu.cpu.8MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega3 
28_pro_8MHz.hex
> pro.menu.cpu.8MHzatmega328.build.mcu=atmega328p
> pro.menu.cpu.8MHzatmega328.build.f_cpu=8000000L
>
> Da stehen die gleichen Fuses drin, aber unterschiedliche Bootloader.

das macht doch nichts und ist kein Widerspruch was in den Fuses 
steht(das muss ein C&P Fehler sein)

Jedenfalls konnte ich immer miniPRO mit 8MHz oder 16MHz flashen, der 
Bootloader muss natürlich passend auf den miniPRO drauf sein, der wird 
bei upload über Rx & Tx doch nie angefasst! also intersessieren den die 
Angaben in der board.txt doch nicht.

Was anderes wäre es wer mit der Arduino IDE den Bootloader selber 
flashen will, da wirds dann wichtig!

Ich nahm immer AVR Studio 4.18 für den Bootloader flashen und USBISP Mk2

: Bearbeitet durch User
von Arduino Fanboy D. (ufuf)


Bewertung
1 lesenswert
nicht lesenswert
Joachim B. schrieb:
> (das muss ein C&P Fehler sein)
? Wie kommst du darauf ?

Joachim B. schrieb:
> Was anderes wäre es wer mit der Arduino IDE den Bootloader selber
> flashen will, da wirds dann wichtig!
Und das funktioniert.
Denn die Einträge sind völlig angemessen.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Maxim B. schrieb:
> Etwas Verrücktes, was statt while(1) "loop" haben will. :)

Quatsch.
Die while(1)-Schleife gibt es genaue so und darin wird eben loop() 
aufgerufen. Guck einfach mal in die Quelltexte. Und bevor es ab in die 
while(1)-Schleife geht, wird dort zu deiner Beruhigung eine Funktion 
namens Setup() aufgerufen ;-)

von Joachim B. (jar)


Bewertung
-3 lesenswert
nicht lesenswert
Joachim B. schrieb:
> das macht doch nichts und ist kein Widerspruch was in den Fuses
> steht(das muss ein C&P Fehler sein)

Arduino Fanboy D. schrieb:
> ? Wie kommst du darauf ?

ein Irrtum meinerseits
klar WENN der Bootloader "geflasht" ist stehen ja für beide 8MHz & 16MHz 
die Fuses auf externen clock und somit gleich!

Nur der Quarz bestimmt den Takt und da muss der "geflashte" Bootloader 
das auch wissen was F_CPU war sonst kann er die UART nicht richtig beim 
Start initialisieren.

Wenn kein Bootloader auf dem Chip ist nimmt er eh weder was an der UART 
an noch passt der interne Takt zu den Fuses.

Warum läuft der bei ihm 10x langsamer?

Der Chips war auf einen Arduino!
Also F_CPU 16MHz und Bootloader aktiv!
Fuses müssten also passen div8 nicht aktiv, Clk Quarz extern.
Externer Clock ist also aktiv, Quarz hat er angeschlossen sonst würde 
nichts laufen!

: Bearbeitet durch User
von Arduino Fanboy D. (ufuf)


Bewertung
1 lesenswert
nicht lesenswert
Joachim B. schrieb:
> Der Chips war auf einen Arduino!
> Also F_CPU 16MHz und Bootloader aktiv!
Du siehst Geister.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> Der Chips war auf einen Arduino!
> Also F_CPU 16MHz und Bootloader aktiv!

F_CPU ist eine Compilervariable.
Was hat die mit der Historie des Chips zu tun?

von Joachim B. (jar)


Bewertung
-3 lesenswert
nicht lesenswert
Arduino Fanboy D. schrieb:
> Du siehst Geister.

wo bitte?
mir schwant ich habe einen Thread verwechselt wo der TO den Chip von 
einem Uno genommen hatte mit DIL ATmega328p
Kann passieren, wer ist hier fehlerfrei?

aber das gilt trotzdem, nach nochmaligem Lesen des ganzen Threads!

Wolfgang schrieb:
> F_CPU ist eine Compilervariable.
> Was hat die mit der Historie des Chips zu tun?

Ich weiss beide AVR Studio und die Arduino IDE nutzen GCC und somit muss 
F_CPU gesetzt werden, sonst kommt Unsinn raus!

Marco W. schrieb:
> Im Blink-Example habe ich die beiden delays auf delay(50) geändert.
> Programmiert habe ich über ein anderes Arduino.

Und die Arduino IDE holt sich doch F_CPU aus der boards.txt, schon bei 
der Wahl welcher programmiert wird, dort habe ich nie irgendwo F_CPU 
gesetzt nur Board Nano oder miniPRO gewählt mit 8MHz oder 16MHz.
Ergo muss für den gcc F_CPU von der Arduino IDE gesetzt werden!

Nun nochmal die Frage, wieso soll der rund 10x langsamer laufen wenn er 
die Fuses nicht angefasst hat?

Marco W. schrieb:
> Genau so siehts aus. Geändert habe ich nämlich nichts.

Wenn der Auslieferzustand vom ATMEGA328P-AU ist wie immer gilt zuerst
Interner Clock 8 MHz
div8 gesetzt macht 1 MHz

zum externen 16MHz Quarz oder Resonator egal weil ungenutzt
Marco W. schrieb:
> einen 16MHz Resonator

gibt nicht ca. 10x langsamer sondern genau 16x langsamer,
nämlich 16/1 (MHz kürzt sich raus)

OK 16x langsamer kann man mit sehr viel Toleranz als 10x langsamer sehen 
:-)

von Marco W. (wima75)


Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:

> OK 16x langsamer kann man mit sehr viel Toleranz als 10x langsamer sehen
Das mit 10x langsamer war ja nur geschätzt, nicht einmal mit der Stopuhr 
gemessen.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> Wolfgang schrieb:
>> F_CPU ist eine Compilervariable.
>> Was hat die mit der Historie des Chips zu tun?
>
> Ich weiss beide AVR Studio und die Arduino IDE nutzen GCC und somit muss
> F_CPU gesetzt werden, sonst kommt Unsinn raus!

Eben, aber der Controller merkt davon nichts.
Das ist eine reine Information an den Compiler.

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Das ist eine reine Information an den Compiler.

Eigentlich ist es eine Information an ein paar wenige Funktionen in der 
C-Bibliothek. Dem Compiler ist die Taktfrequenz völlig egal.

: Bearbeitet durch User
von Joachim B. (jar)


Bewertung
-3 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Dem Compiler ist die Taktfrequenz völlig egal.

das stimmt und wer was anderes braucht der "defined" mal F_CPU um zum 
Passenden wenns klemmt im Timing.
Dem Compiler juckt es nicht, das Ergebnis in realer Hardware ist dann 
anders, entweder passend oder ganz falsch.

wobei ich auch schon mal Schwierigkeiten hatte mit

#ifdef F_CPU
#undef F_CPU
#define F_CPU nunanders // Zahl nach Wunsch
#endif // #ifdef F_CPU

Ich weiss nicht wie der preprozessor das bedient vor allem in mehreren 
Modulen, denn hinterher gibt es ja wieder als #define F_CPU

(F_CPU * 9/10) klappt aber

: Bearbeitet durch User
Beitrag #6450533 wurde vom Autor gelöscht.
von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> Stefan ⛄ F. schrieb:
>> Dem Compiler ist die Taktfrequenz völlig egal.
>
> das stimmt und wer was anderes braucht der "defined" mal F_CPU um zum
> Passenden wenns klemmt im Timing.
> Dem Compiler juckt es nicht, das Ergebnis in realer Hardware ist dann
> anders, entweder passend oder ganz falsch.
>
> wobei ich auch schon mal Schwierigkeiten hatte mit
>
> #ifdef F_CPU
> #undef F_CPU
> #define F_CPU nunanders // Zahl nach Wunsch
> #endif // #ifdef F_CPU
>
> Ich weiss nicht wie der preprozessor das bedient vor allem in mehreren
> Modulen, denn hinterher gibt es ja wieder als #define F_CPU
>
> (F_CPU * 9/10) klappt aber

Eine ganz doofe Idee!
Ja, ich weiß, du gehst damit dauernd hausieren.
Aber eine doofe Idee, ist eine doofe Idee, und bleibt auch eine.

Die stete Wiederholung machts nicht besser, sondern zeugt eher von 
blockierter Einsichtsfähigkeit.

von Joachim B. (jar)


Bewertung
-2 lesenswert
nicht lesenswert
Arduino Fanboy D. schrieb:
> Ja, ich weiß, du gehst damit dauernd hausieren.
> Aber eine doofe Idee, ist eine doofe Idee, und bleibt auch eine.

als es damals keine bessere Lösung gab funktionierte es halt.
Lieber ein "doofe" Lösung als keine.
Es gibt Menschen die wissen sich nicht zu helfen und es gibt welche die 
beim "Versagen" von sogenannten Fachleuten trotzdem Lösungen finden!

Du pöbelst ja lieber, warst aber nicht hilfreich als das Problem auftrat 
und nun später spielst du den Wissenden!

Ja hinterher ist man immer schlauer, ich, der Erfinder und andere, das 
nutzte aber nichts als das Problem auftrat und niemand, nicht mal der TO 
einer LIB helfen konnte, also half ich mir selbst, egal wie doof du das 
findest!

Hinterher lästern ist leicht!

Arduino Fanboy D. schrieb:
> blockierter Einsichtsfähigkeit.

deine, kann ich dir bestätigen!
Bist du so klein das du andere erniedrigen musst um dich zu erheben?

: Bearbeitet durch User
von Arduino Fanboy D. (ufuf)


Bewertung
-1 lesenswert
nicht lesenswert
Du tust mir leid.

: Bearbeitet durch User

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]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.