Here I am again
Die 16MHz habe ich eingestellt bekommen, allerdings etwas Kurios...
Hier
Externes Bild anzeigen
Sind 16MHz eingestellt, wobei hier
Externes Bild anzeigen
8MHz eingestellt sind - das Prozessor Fenster sagt 16MHz und es läuft auch doppelt so schnell wie mit 8MHz ...
PORTB<<=1 shiftet (<<) die 1 durch den ganzen Port, aber warum bei jedem Zyklus das nächse? Und was genau macht die IF Anweisung?Code:PORTB <<= 1; if (!PORTB){ PORTB = 1; }
Da steig ich - auch mit dem tutorial - noch nicht ganz durch.
Tut nicht- Erklärung? Vielleicht liegts am Code ... C/C++ hat dann doch ein zwei verschiedenheiten..Code:uint8_t run=PINA&PINA0; if(run==1){ // tu was }
Das tut soweit alles was ich will, auser der Variablen zuweisung.Code:#include <avr/io.h> #include <stdint.h> #include <util/delay.h> int main (void) { DDRB = 0xff; DDRA = 0x00; uint8_t run=PINA&PINA0; char auswahl='n'; while(1) { // MAINSCHLEIFE if((PINA&(1<<PINA0))&&(auswahl=='n')){ auswahl='r';} else if((PINA&(1<<PINA0))&&(auswahl=='r')){ auswahl='n'; } else if((PINA&(1<<PINA0))&&(auswahl=='b')){ auswahl='c'; } else if((PINA&(1<<PINA0))&&(auswahl=='c')){ auswahl='b'; } else if((PINA&(1<<PINA1))&&(auswahl=='r')){ auswahl='b'; } else if((PINA&(1<<PINA1))&&(auswahl=='b')){ auswahl='r'; } switch(auswahl){ case 'r': // VORWÄRTS FWD PORTB <<= 1; if (!PORTB){ PORTB = 1; } break; case 'b' : // RÜCKWÄRTS RWD PORTB >>= 1; if(!PORTB){ PORTB=128; } break; } } // MAINSCHLEIFEN ENDE return 0; }
Was ist daran C Untypisch? Es ist mit der Version vll ungemütlich geschrieben, Funktioniert aber tadellos







Zitieren

Lesezeichen