Hi,
ich hab zwei Programme, jedoch ist mir nicht klar warum das eine Funktioniert und das andere nicht.
[...]
!! Der Unterschied besteht nur im setup{},loo{} bzw main{} !!
[...]
Vielleicht hat ja von euch einer ne idee...
Ich hätte mal 'ne Idee:
Im ersten Programm kümmerst du dich ja anscheinend um alles selbst: eigenes main(), nicht das von der Arduino-IDE bereitgestellte main() verwendet und kein Aufruf von setup() oder loop(). Ist nicht schlimm, wenn man weiß, was man macht.
Im zweiten Fall scheinst du aber das main() der Arduino-IDE aufzurufen (Datei main.cpp - reinschauen schadet nicht

). Da wird (für dich verborgen) eine Funktion init() aufgerufen (zu finden in der Datei "wiring.c" - reinschauen macht klug). Und in dieser Funktion werden schon vorab einige Bits in den Registern des Timers 1 (TCCR1A, TCCR1B) gesetzt. Und du 'ODER'st jetzt im 2. Programm deine eigenen Bits noch zusätzlich rein. Die bisherigen bleiben aber gesetzt. In deinem ersten Programm sind die Register ja alle noch 'jungfräulich' auf 0 gesetzt, im 2. Beispiel aber nicht mehr. Setze doch mal versuchsweise im 2. Programm am Anfang von setup() die beiden Register TCCR1A, TCCR1B auf 0. setup() wird ja nach init() aufgerufen und beschreibt die Register neu. Vielleicht funktioniert dann auch das 2. Programm?
Als Konsequenz kann es dann natürlich sein, dass bestimmte Funktionen aus der Arduino-Core-Library nicht mehr funktionieren.
Viel Erfolg beim Test und teile mal mit, ob es daran gelegen hat.
Gruß
Wolfgang