Forum: Mikrocontroller und Digitale Elektronik SPI Mega8 funktioniert nur sporadisch?


von dani (Gast)


Lesenswert?

Hallo,

ich hoffe es kann mir jemand weiterhelfen.
Ich möchte per HW-ISP Daten an einen anderen µC senden.
Der folgende Quellcode funktioniert nur spontan, d.h. nicht jedes Mal
wenn ich den Taster betätige werden die Daten gesandt sondern nur ab und 
zu. Woran kann das liegen?

Schonmal vielen Dank im Voraus, dani


$regfile = "m8def.dat"
$crystal = 4915000

$hwstack = 40
$swstack = 32
$framesize = 400

Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , 
Polarity = Low , Phase = 0 , Noss = 1 , Clockrate = 128

Spiinit

Config Portb.0 = Input : Taster Alias Pinb.0                'Taster

'*********************************************************************** 
*
Do
   If Taster = 0 Then
       Spdr = &H5F
       waitms 100
       Do : Loop Until Taster = 1
   End If

Loop
'*********************************************************************** 
**
End

von hp-freund (Gast)


Lesenswert?


von dani (Gast)


Lesenswert?

Ich denke nicht das es am Taster liegt, ich habe diesen mit 100nF 
entprellt und lt. Oszi gibt es nur einen sauberen Schaltimpuls.
Aber um diesen Fehler ganz auszuschließem habe ich den Taster jetzt 
weggelassen und sende die Daten in einer Schleife alle 1s.
Aber auch hier funktioniert es nur sporadisch. Was auffällt, beim 
anlegen der Versorgungsspannung funktioniert es reproduzierbar immer 1x.
Ich denke ich muss irgend ein Register wieder zurücksetzen, habe aber 
außer "spif" noch nichts gefunden was noch damit zu tun haben könnte.



'Ausgänge
Config Portc.5 = Output : Led Alias Portc.5                 'LED

'********************************************************************
Do

   Led = 1
   Spdr = &H5F
   Wait 1
   Led = 0
   Wait 1

Loop
'*******************************************************************
End

von dani (Gast)


Lesenswert?

Danke für die Mithilfe, es funktioniert ...

von Paul Baumann (Gast)


Lesenswert?

@Dani
Schreibe doch bitte, woran es gelegen hat. Der Nächste mit dem gleichen
Problem wird es Dir danken.

MfG Paul

von dani (Gast)


Lesenswert?

Der SS Eingang muss mit einem PullUp Wiederstand nach VCC gezogen werden 
um einen definierten Highpegel zu gewährleisten. Liegt an SS Low an, 
schaltet ISP in den Slavemode zurück.

von Spess53 (Gast)


Lesenswert?

Hi

>Der SS Eingang muss mit einem PullUp Wiederstand nach VCC gezogen werden
>um einen definierten Highpegel zu gewährleisten. Liegt an SS Low an,
>schaltet ISP in den Slavemode zurück.

Ausgang hätte auch gereicht.

MfG Spess

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.