Hallo! Atmega 8, interner Oszi 8Mhz.Atmel Studio 7. Zu Testzwecken folgendes geschrieben: int main(void) { DDRB=(1<<SS)|(1<<SCK)|(1<<MOSI); PORTB &=~(1<<SS); SPCR=(1<<SPE)|(1<<MSTR); SPSR=(1<<SPI2X); while (1) { PORTB=0xFF; _delay_ms(100); PORTB=0x00; _delay_ms(100); } } Die Schleife wird nur ausgeführt wenn ich "SPCR=(1<<SPE)|(1<<MSTR);" auskommentiere. Kann das an Studio 7 liegen? Ich habe so wie geschrieben schon zig mal SPI konfiguriert. Danke!
Mechaniker an Brücke: SPI wurde ermahnt sich konfigurieren zu lassen!
Warum willst du den ganzen PortB toggeln wenn du SPI aktiviert hast ? Geht das überhaupt wenn die Hardware die Kontrolle über SCK und MOSI hat ? Gruß JackFrost
Warum: Weil, wenn nichts mehr geht, muss man das berühmte Lämpchen blinken lassen. ;-) Habe das grade mal ausprobiert. Du hast recht: Die Pins die nicht vom SPI "verwaltet" werden lassen sich toggeln. Weiter geht es mit der Fehlersuche! Danke Bastian!
Ich hab deinen Code Ausschnitt mal im Simulator laufen lassen. Da läuft die Schleife ohne Probleme. Was läuft denn bei dir nicht ? Gruß JackFrost
Wow! Danke Bastian! Ich hatte natürlich vor dem Port togglen erst mal versucht ein Byte zu senden. (So wie ich es schon zig mal mit meinem kopierten Code gemacht hatte.) Da sich da aber komischerweise nix auf dem Oszi bewegt hat , habe ich das Port togglen reingeschrieben. Und dann Zeile für Zeile auskommentiert. Wenn ich "SPCR=(1<<SPE)|(1<<MSTR);" auskommentiere, also das SPI quasi deaktiviere wird die Schleife erreicht. Sonst zeigt das Oszi 2 grade Linien. :-(
Ohne mir den Code usw angeguckt zu haben: Das oder etwas sehr ähnliches hatte ich vor ca. 5 Jahren mal mit einem Atmega644 von Pollin und damals auch hier im Forum gepostet. Als ich das Enable SPI Transmit Bit gesetzt hatte ist der Controller einach hängen geblieben. Das SPI Senden musste ich dann per Software lösen. Das SPI Empfangen hat glücklicherweise funktioniert.
Attila C. schrieb: > Wenn ich "SPCR=(1<<SPE)|(1<<MSTR);" > auskommentiere, also das SPI quasi deaktiviere wird die Schleife > erreicht. Die Schleife wird natürlich immer ausgeführt, aber wenn du auf dem Rest von PORTB auch was sehen willst beim toggeln, musst du auch alle Pins auf Ausgang setzen. Sobald das SPI die Kontrolle über die Pins hat, kannst du da manuell nicht mehr dran wackeln.
Hi, ich mal mit einem Atmega32 ( ich hab leider keinen Atmega8 da) das mehr oder weniger getestet. Ich musste nur die SPI Frequenz runternehmen und auch den SPI Mode für mein EEPROM anpassen. Also mit dem Atmel Studio 7 und nem Atmega32 geht das ohne Probleme. Ich hab erst die Zahlen 0 - 255 in die ersten 256 Bytes geschrieben und dann wieder ausgelesen. Gruß JackFrost
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.