Hallo, ich experemntiere ein wenig mit der SPI eines mega88 herum. Nun habe ich ein einfaches Testprogramm geschrieben, dass einfach 1010... ausgeben soll, siehe Projekt im Anhang. Es passiert aber an dem SCK-Pin nichts. Wenn ich es richtig verstehe, so müsste da aber ein Clock anliegen, das Oszi zeigt aber nichts an (beim Programmieren des mega88 per ISP, sieht man den Clock, nur um Fragen, ob richtig gemessen, zuvorzukommen). Meiner Meinung nach habe ich alles gemacht, was im Codebeispiel des Datenblattes stand, wie man liest ohne Erfolg. Was habe ich übersehen oder falsch gemacht? Gruß, "der Langsame" P.S. ich verwende (WinAVR) mit avr-libc 1.2.5 und avr-gcc 3.4.4 und avr-Studio 4.12 build 460
Nachtrag: Im Simulator wird eigenartigerweise das SPIF zu keiner Zeit gesetzt, d.h. er verbleibt für immer in der while-Schleife. Warum??? Langsam gehen mir die Ideen aus.
Hmm...
jetzt hab ich mal einen Mega16 mit dem gleichen Programm (nur MISO und
SCK angepasst) programmiert und da läuft die SPI. Sehr eigenartig.
>Muss man bei SPI nicht erst noch einen Takt programmieren?
Mann kann einen Teiler beschreiben (Flags im SPCR und SPSR Register),
ich denke das muss nicht notwendigerweise sein (wenn default 0
eingesetzt wird hab ich fosc/4). Ich möchte doch nur (erstmal), dass
der Takt funktioniert.
Noch eigenartiger: wenn ich das auf einem ATmega128 laufen lasse (DDRx-Pins passend geändert), dann läuft es nach einem power-on reset erstmal eine Weile, bis dann offenbar SPIF nicht mehr gesetzt wird. Nach einem externen oder JTAG Reset läuft es nicht los. %^) Andererseits habe ich ähnlichen Code (nur natürlich ohne Endlosschleife :) im Produktiveinsatz, ohne Probleme.
Ich habe jetzt mal den Pin toggeln lassen.
1 | for(;;) |
2 | {
|
3 | PORTB |= (1<<PB5); |
4 | PORTB &= ~(1<<PB5); |
5 | }
|
und das geht auch nicht. Wahrscheinlich hat sich der Ausgang verabschiedet. Werd es mal mit einem anderen versuchen. Für heute ist erstmal Schluss. Vielen Dank und Gruß, Slowflyer
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.