Hallo, schönen Nachmittag ^^
Nach etlichen Kaffeetassen und Versuchen, hab ich mich durchgerungen,
nach diesem (wahrscheinlich) banalen Fehler zu fragen...
Ich hab folgenden Code mit Mega8 und Mega32 probiert und messe mit Oszi
und LA genau gar nichts! Hab ich etwas übersehen?
Beide µC's auf 8MHz interner Takt gefused.
1
#include<avr/io.h>
2
3
voidSPI_MasterInit(void);
4
voidSPI_MasterTransmit(char);
5
6
7
voidmain(void)
8
{
9
SPI_MasterInit();
10
while(1)
11
{
12
SPI_MasterTransmit(0xEE);
13
14
}
15
}
16
17
18
voidSPI_MasterInit(void)
19
{
20
/* Set MOSI, SCK and /SS output, all others input */
klausy wrote:
> muß gehn...
Dieser Ansicht war ich bis vor kurzem auch ^^
Meine Schaltung ist Minimal: Mega32 am Steckbrett, Pullup am /Reset, GND
und VCC überall hin und Oszi am SCK Pin.
Programmer ist abgehängt...
klausy wrote:
> was is mit den define's der Bits? sonst ist alles korrekt...> Hardware????
Ja, das sollte ja nur ein Testprogramm sein, die Defines dürften an dem
ganzen nichts ändern...
Die Hardware läuft korrekt... Ich hab zum Test mal LED's auf den Pins
getestet...
Ich hab das ganze mal durch den Debugger (nur Simuliert) laufen
lassen...
Dabei ist mir aufgefallen... wenn ich
1
voidSPI_MasterInit(void)
2
{
3
/* Set MOSI, SCK and /SS output, all others input */
4
DDRB=(1<<PB5)|(1<<PB7)|(1<<PB4);
5
/* Enable SPI, Master, set clock rate fck/16 */
6
SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0);
7
}
so mache, setzt mir das schreiben auf SPCR PB5(MOSI) den PIN also wird
zum Eingang...
jetzt hab ich das ganze so:
1
voidSPI_MasterInit(void)
2
{
3
4
/* Enable SPI, Master, set clock rate fck/16 */
5
SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0);
6
7
/* Set MOSI, SCK and /SS output, all others input */
8
DDRB=(1<<PB5)|(1<<PB7)|(1<<PB4);
9
}
lt. Debugger sind jetzt zumindest mal die Datenrichtungen richtig...
EDIT: Ich habe das ganze getestet mit beiden Versionen der
Transmit-Funktion und keines der beiden Programme zeigt Reaktion.
Danke Tom! Ich hab mal deinen Code reingeklopft...
Anscheinend ist es wirklich ein HW Problem...
Allerdings funktioniert die ISP Schnittstelle, drum frag ich mich wieso
nicht die SPI? Am Steckbrett kanns kaum liegen, da ich alle Messungen
direkt an den Pins des µC durchführe...
Ein kleines Danke nochmal zwischendurch ^^
Jetzt wirds schön langsam Zeit zum fluchen!
Dein Programm geht (bei mir) nicht... Das ich kein Quarz benutze dürfte
ja nicht stören...
Im Anhang ist meine Schaltung... Ich werd mich jetzt mal mit dem JTAG
des USBProgv3 spielen... der Simulator hat hier ziemlich wenig Sinn!
Udo wrote:
> mal ne ganz dumme Frage. Mit welchem Programm und Prommer arbeitest du?
Halt ich gar nicht so dumm... AVRStudio4.12 und dem USBProgv3 vom
Benedikt...
Appendix: Lib ist WinAVR-20071221
Wuhuuuuu es funktioniert!
Danke an Jörg Wunsch, der mir hier geholfen hat!
Im Anhang jetzt die funktionierende SPI Schnittstelle! Schuld war die
Optimierung des Compiler (-O2) und jetzt benutze ich (-Os) und jetzt
gehts!
Hallo Jürgen,
eine Frage: welches Programm nutzt du zur Aufzeichnung der Daten. Ich
meine das Bild, was du in denem letzten Beitrag eingefügt hast.
Gruß
Udo