Hallo,
jetzt wird es hier kompliziert....
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:
Danke für die Rosen,
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
Code:
TIFR |= 0b00000100;
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)?
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...
@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:
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);
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 )
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
Lesezeichen