Forum: Mikrocontroller und Digitale Elektronik SPI SCK funtkioniert nicht


von Hansi M. (hansi875)


Lesenswert?

Hallo,

wenn ich mit dem Oszilloskop am SCK gemessen habe kommt kein 
vernünftiges Signal bei raus. ICh arbeite mit dem PIC16F886 und einem 
internen Oszillator.


;Interne Oszillator Einstellung (4MHz)

  BANKSEL      OSCCON
  movlw      B'01100101'
  movwf      OSCCON

;Init

  BANKSEL      TRISA
  movlw      B'00100000'
  movwf      TRISA

  movlw      B'11000000'    ;RB6 und RB7 = 1 zum Programmieren
  movwf      TRISB

  movlw      B'00010000'
  movwf      TRISC

  movlw      B'00000000'
  movwf      TRISE

  BANKSEL      PORTA
  movlw      B'10100111'       ;Wir haben 5 I/O Expander, deren CS auf 
Low gelegt werden muss damit diese Daten vom PIC emfangen werden
  movwf      PORTA



  BANKSEL      SSPSTAT
  movlw      B'01000000'
  movwf      SSPSTAT

  BANKSEL      SSPCON
  movlw      B'00110000'
  movwf      SSPCON

  BANKSEL      OPTION_REG
  movlw      B'11010100'
  movwf      OPTION_REG

  goto      Senden

Senden

  BANKSEL      PORTA
  bcf        PORTA,0

  movlw      B'10000010'
  movwf      SSPBUF
loop
  btfss      SSPBUF,0
  goto      loop

  call      Verzögerung_1ms




  END  ; directive 'end of program'

von Pandur S. (jetztnicht)


Lesenswert?

Naja, ich wuerd die Verzoegerung und senden von zB 0x55 in einen Loop 
rein tun... sodann ein byte auch gesendet werden kann.

von Hansi M. (hansi875)


Lesenswert?

Ändert leider nichts daran das an SCK nichts vernunftiges rauskommt

von Chris B. (dekatz)


Lesenswert?

Bist du dir sicher das diese Bedingung:
....
loop
  btfss      SSPBUF,0
  goto      loop
....
je erfüllt wird??

Normalerweise fragt man das BF in SSPSTAT ab ob Transmitt beendet ist 
(und damit auch Receive).

von Hansi M. (hansi875)


Lesenswert?

Ja das stimmt, habe das schonmal abgeändert.

Aber ich verstehe nicht warum an SCK kein Rechtecksignal rauskommt, habe 
schon mehere Sachen ausprobiert.

Findet zufällig noch jemand einen anderen Fehler?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.