China AVR - SPI defekt?

OP #4608310
Lesenswert?
• ▲
▼
Hallo!

Ich hab hier einen Atmega328p vom Chinesen (auf einem "Nano" Board, aber 
ohne Arduino). Eigentlich will ich einen kleinen CAN Bus aufbauen, 
scheitere aber gerade an der simpelsten SPI Kommunikation. Also erstmal 
ein Minimalbeispiel zu SPI programmiert.
1
//Init
2
  DDRB |= (1<<PB3)|(1<<PB5);  //MOSI, SCK als Ausgang
3
  PORTD |= (1<<PD5);          //CS aus
4
  DDRD |= (1<<PD5);           //CS als Ausgang
5

6
    SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);    //SPI init: enable, master, f0/16
7
//Erstes Zeichen
8
    PORTD &= ~(1<<PD5);         //CS
9
    SPDR = 0x01;                //Senderegister
10
    while(!(SPSR & (1<<SPIF))); //Warten auf Senden
11
    _delay_ms(1);
12
    PORTD |= (1<<PD5);          //~CS
13
    _delay_ms(1);
14
//Zweites Zeichen
15
    PORTD &= ~(1<<PD5);
16
    SPDR = 0x01;
17
    while(!(SPSR & (1<<SPIF)));
18
    _delay_ms(1);
19
    PORTD |= (1<<PD5);
20
    _delay_ms(1);

Nun passiert auf dem Bus laut Logikanalysator fast nichts. Auf den 
Bildern im Anhang kann man sich gut an der Chip Select Linie 
orientieren. Achtung, die Labels stehen tiefer als man denkt, Linien 
zählen!
Außerdem bleibt das Programm beim zweiten gesendeten Zeichen in der 
Warteschleife hängen, sieht man auch am Bild.

SPI langsamer zu stellen hab ich probiert, ändert nichts. uC läuft mit 
16 MHz, ob der CAN Controller (MCP2515) dran hängt oder nicht macht auch 
keinen Unterschied.

Langsam fällt mir blos noch ein Hardwaredefekt ein, allerdings ist es 
bei zwei gleichen Boards genauso....
Oder ich mache einen einfachen Fehler und seh ihn einfach nicht...

Achja: Programmieren lässt er sich über ISP problemlos.

Danke für Denkanstöße,
Luggi
Angehängte Dateien:
(Firma: Vescomp) #4608324
Lesenswert?
• ▲
▼
Luggi F. schrieb:
> Oder ich mache einen einfachen Fehler und seh ihn einfach nicht...

     SPDR = 0x01;                //Senderegister
 Um zu sehen, ob es überhaupt funktioniert, sendet man normalerweise
 0x55 oder 0xAA.

 Mit deinen ms kann keiner etwas anfangen. Sollten us sein.

 MOSI bleibt die ganze Zeit auf HIGH.

 SCK bleibt die ganze Zeit auf HIGH.

 EDIT:

 Mensch, setze doch die Labels und Signale richtig zueinander.
OP #4608395
Lesenswert?
• ▲
▼
Forist schrieb:
> Nun reicht es aber mit Schmierpapier.
Tut mir Leid, auf dem betreffenden PC gibts nur Win XP/Paint.

Marc V. schrieb:
> a) Dein Arduino ist kaputt.
Naja, 3 Stück, frisch aus der Tüte? Nicht unmöglich, aber 
unwahrscheinlich.

>  b) Du hast Arduino und MCP falsch verbunden.
Steckt momentan eh nicht dran. Mit MCP ändert sich aber auch nichts. 
Einer von den AVRs hat den MCP noch nie gesehen, von da kommt also auch 
kein Defekt.
Gast #4608453
Lesenswert?
• ▲
▼
Ich sehe im Programm nichts zu PB2 = /SS, nach einem Reset steht der auf 
Eingang!
Datenblatt 19.3.2 Master Mode:
"If /SS is configured as an input, it must be held high to ensure Master 
SPI operation..."
Gast #4608497
Lesenswert?
• ▲
▼
Luggi F. schrieb:
> Forist schrieb:
>> Nun reicht es aber mit Schmierpapier.
> Tut mir Leid, auf dem betreffenden PC gibts nur Win XP/Paint.

Genau damit (mit MSPaint) habe ich die Zeichnung mit 3 Klicks zurecht 
gestutzt (Auswahl, Rechteckige Auswahl, Bereich markieren, Copy, Größe 
ändern auf z.B. 1%, Einfügen, Speichern).

Antwort schreiben

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.

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.