mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SCK-Pin des ATMega16 bleibt stumm


Autor: Maxim S. (maxim) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Nach dem Reset geht MOSI auf high und SCK rührt sich nicht, bleibt also 
auf low. Auch im Debugger in AVR Studio blinkt nur PINB7, nicht aber 
PORTB7. Das DDR ist aber richtig gesetzt (denke ich zumindest). Im 
Datenblatt habe ich auch nichts gefunden, was mir helfen könnte.

Vielleicht etwas mit den Fuse-Bits?

Autor: Maxim S. (maxim) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Im Anhang die Fuse-Bits.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist der SS Pin auf Ausgang gestellt?

Autor: Maxim S. (maxim) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon K. wrote:
> Ist der SS Pin auf Ausgang gestellt?

Denke schon:
LDI  TEMP, 
(1<<DDB5)|(1<<DDB7)|(1<<DDB4)|(1<<SLAVE_1)|(1<<SLAVE_2)|(1<<SLAVE_3)
OUT  DDRB, TEMP

DDB4 ist der SS-Pin.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

//Konfiguriere SPI
LDI  TEMP, (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1)
OUT  SPCR, TEMP
SBI  SPSR, SPIF

SPIF ist ein ReadOnly-Bit.
Gelöscht wird es beim ersten Lesezugriff mit gesetzem SPIF (Mega16 
Datenblatt Seite 140).

Ändere das mal in
IN     TEMP,SPSR

sonst fällt mir erstmal nichts auf.

Gruß aus Berlin
Michael

Autor: Maxim S. (maxim) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muss SPIF zu Beginn des Programms setzen, da im späteren Verlauf das 
Senden erst möglich ist, wenn SPIF gesetzt und somit die vorhergehende 
Übertragung komplett ist.

Aber ich werde schauen, ob 's daran liegt, danke schonmal.

ps: Kann es sein, dass der Debugger das SPIF-Bit setzt, obwohl es read 
only ist? Missachtet er solche Details? Das würde das Problem nämlich 
erklären.

Autor: Maxim S. (maxim) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tatsächlich, das SPIF-Bit wurde durch

SBI SPSR, SPIF

nur im Debugger gesetzt, nicht aber im uC. Ich habe die Zeile durch

OUT SPDR, DATA_TO_SEND

ersetzt. Das setzt den SPIF-Flag indirekt, indem ein "sinnloses" Byte 
ohne Empfänger in die Welt verschickt wird. Das Programm läuft jetzt 
auch auf der Hardware.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hatte ich eben schreiben wollen, dann Dein Posting gesehen und meins 
wieder gelöscht... :-)

Gruß aus Berlin

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.