Hallo,
jetzt wird es hier kompliziert....
Danke für die Rosen,Zitat:
Mit Hilfe der tollen Tutorials auf deiner HP habe ich nun endlich auch die Timergeschichte kapiert und damit auch die nächste Hürde genommen:
Wo Du es ansprichst, ich glaube es wird Zeit weiterzuschreiben, habe aber seit dem Umzug noch nichtmals meinen Desktop aufgebaut....
Dein Code sieht schonmal gut aus, mit dem Timerwert würde ich mir keine Gedanken machen, es ist schon OK so, schlimmer wäre, wenn Du in der main Routine eine Zahl > 8 Bit veränderst, die ev. in einem Interrupt gebraucht wird, dann knallt es irgendwann, ist auch klar warum , oder ?
da muß man cli() sei() benutzen...
Aber da Du den Overflowflag pollst...
Achja, apropo Flag, das löschen von TOV1 geht bei Dir mit dieser Zeile
das ist aber schlecht, warum, überleg mal man löscht einen Flag indem man eine eins in TIFR schreibt, das machst Du auch, aber was passiert, wenn sonst ein Flag in TIFR gesetzt ist(Irgendein 2. Timer)?Code:TIFR |= 0b00000100;
Na klingelt es?
Wenn Du es veroderst, schreibst Du eine eins in alle Flags rein, die gesetzt sind...
es sieht etwas komisch aus, aber so ist es richtig:
ist sehr wichtig, bevor Du irgendeinen anderen Timeroverflow verlierst...Code:TIFR = 0b00000100;
@M1.R
Das Problem bei Dir sind mangelnde C Kenntnisse, aber es kommt noch
DDRC ist Data Directory Register für PortC(hat mit der Deutschen demokratischen Republik nichts zu tun *lol*), Wenn hier ein Bit 1 ist, ist der Pin als Ausgang konfiguriert, bei 0 als Eingang.
Am sonsten sieht es schonmal gut aus nur wenn Du einen Bit löschen willst geht das so:
das sind jetzt ziemlich komische Zeichen(C Gegner bezeichnen es als Hyroglyphen) es kommt aber davon, daß C Programmierer faul sind und ungern viel tipen (sei froh, daß es kein Perl ist, da ist es noch schlimmer )Code://linke BackLED aus
PORTC &=~(1<<PC1);
Msleep(3000);
//rechte BackLED an
PORTC=(1<<PC0);
Msleep(3000);
// an dieser Stelle soll die linke BackLED angehen, ohne die rechte zu beeinflussen
// jetzt geht die rechte aber aus
// ???????????????????????
PORTC |= (1<<PC1);
Msleep(3000);
aber PORTC |= (1<<PC1); könnte man auch so schreiben :
PORTC = PORTC | (1<<PC1);
also nimm den alten Zustand von Port C und veroder ihn mit PC1 (00000010)
Gruß Sebastian