anderer Takt -> weder Uart noch SPI gehen?

Gast #2839805
Lesenswert?

Hallo zusammen,

ihr wisst ja sicher wie das ist, man bastelt mit den Teilen die man 
gerade so findet was zusammen, alls geht, dann ätzt man sich eine 
Platine, nimmt die Teile die am besten geeignetsten scheinen und wundert 
sich warums jetzt nicht mehr geht - genau das ist mein Problem....

Ich habe mit einem 7.3nochwas MHz Quarzoszillator eine Schaltung in 
meiner Conrad Steckplatine zusammengesteckt, die im wesentlichen SPI 
Signale in den UART übersetzen soll. Für den UART verwende ich einen 
FTDI-Chip, der Controller ist ein atmega8. Meine schicke neue Platine 
hat jetzt einen 16Mhz Keramikschwinger und nichts geht mehr...

Nichts heißt im Detail:

UART über screen geht noch (115200baud)
UART über meine Auslesesoftware mit fcntl und termios geht nicht mehr
SPI ... folgendes Beispiel
1
 char out[8];
2
 SPDR = 0xff;    
3
 while (!(SPSR & (1<<SPIF))){}
4
 sprintf(out,"%d",SPDR); 
5
 uart_puts(out); // den schafft er noch - Wert ist immer 0
6
 SPDR = 0xff;          
7
 while (!(SPSR & (1<<SPIF))){}
8
 sprintf(out,"%d",SPDR); 
9
 uart_puts(out); // den schon nicht mehr, bleibt im while-loop hängen
Ich weiß nicht, ob das UART und das SPI-Problem miteinander verknüpft 
sind oder nicht. Sollte der FTDI die Abweichung von >1% kompensieren 
können?
Acho, hier ist die Init-Routine für SPI:
1
 SPCR = _BV(SPE) | _BV(MSTR)  | _BV(SPR0);
2
 DDRB = _BV(PB2) | _BV(PB3) | _BV(PB5);

Habe mir mit nem Logic Analyser die UART und SPI Lines angesehen. Wenn 
nichts ankommt, wird auch hier nichts angezeigt. D.h. insbesondere die 
SPI-Clock geht nicht raus - wieso geht es einmal und ein anderesmal 
nicht?
Danke vom Voraus

Schorsch
Gast #2845042
Lesenswert?

Hallo,
vielen Dank erstmal für die vielen Hinweise

ich versuche gerade eine andere Herangehensweise:

der FTDI schafft angeblich 3MBaud !!!

mit meinem alten Aufbau schaffe ich tatsächlich 230400baud. Da dachte 
ich mir, jetzt packste mal nen graden Takt rein (8MHz) und versuche 
250000Baud oder 500000Baud.

scheint auch alles so rauszukommen wie es soll (mit logikanalysator 
überprüft), nur kommt mein so heiß geliebtes screen terminal programm 
nicht mit diesen baudraten klar, sobald ich eine untypische baudrate 
eingebe setzt er alles auf 9600baud zurück ... uagh

Kann ich das screen irgendwie beibringen? Wie macht ihr das?
mit termios klappts bis jetzt auch noch nicht...gibts da auch nen tipp?

Aso, ich benutzt Mac Os X.6.8

Danke Schorsch

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren