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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.