Danke, das ist genau das was ich gesucht habe. <<= macht ja nix als PORTB = (1<<PORTB) oder? PortX macht nichts anderes als Pinx - nur auf den ganzen port bezogen oder? Aber eigentlich ist PORTB=1 die Anweisung die Internen PullUps auf 1 zu setzen ^^Code:while (1) { // oder solange Taste gedrückt, oder ähnlichens PORTB <<= 1; if (!PORTB) PORTB = 1; _delay_ms(10); }
Das braucht noch etwas Erklärung, bitte. Funktioniert aber genauso wie ich das wollte![]()
Ich hab auch die hälfte der Einstellungen wieder gefunden.
Projekt Konfiguration steht auf 16000000Hz, die Simulator Konfig hab ich dann auch nach langem suchen gefunden ^^
Danke. Wie immer klasse Forum!
Edit: warnt der compiler vor nicht benutzten Variablen wegen Datenmüll?
edit2:
hab meinen code jetzt soweit modifiziert
Funktioniert soweit Einwandfrei. Er läuft auch ohne delay schön langsam (warum auch immer).Code:#include <avr/io.h> #include <stdint.h> #include <util/delay.h> int main (void) { DDRB = 0xff; DDRA = 0x00; char auswahl='n'; // Zum Nichts tun while(1) { if((PINA & (1<<PINA0))&&!((PINA & (1<<PINA1)))){ auswahl='r'; } if((PINA & (1<<PINA0))&&((PINA & (1<<PINA1)))){ auswahl='b'; } if((!(PINA & (1<<PINA0)))&&((auswahl=='r') || (auswahl=='b'))){ auswahl='n'; // Mache nix } 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=1; } break; } } /* wird nie erreicht */ return 0; }
Zwei Fragen noch: Wie kann ich den wert eines Pins an eine Variable überegeben? mit uint8_t VAR = PINAX oder? Wenn ja tut das nich ...
Und: Warum zur Hölle ist der ATmega 32 mit 16MHz angegeben, läuft in der Simulation aber nur mit 8MHz?
Grüße







Zitieren

Lesezeichen