Forum: Mikrocontroller und Digitale Elektronik Bascom u. SPI und Soft-SPI


von Mikro A. (mikroavr)


Lesenswert?

Ich möchte gern den Hard SPI (Ansteuerung LCD Nokia 3310) in ein Soft
spi umwandlen, damit ich den Port B frei habe für eine MMC Karte.

So jetzt habe ich folgendes gemacht:

$regfile = "m16def.dat"
$crystal = 8000000

Config Portb = Output                'Nokia 3310

Config Porta = Output
'communication port to LCD
Config Spi = Soft , Din = Pinb.6 , Dout = Portb.5 , Ss = None , Clock =
Portb.7
'Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low
, Phase = 0 , Clockrate = 4

' Config Spi = Soft , Din = Pina.6 , Dout = Porta.5 , Ss = None ,
Clock = Porta.7

'************************** Global vars declarations
****************************
Dim Txloc As Byte , Tyloc As Byte , Yy As Byte , Xx As Byte , Tout As
Byte
Dim Ee_data As Byte , Menu_ptr As Byte , Scr_string As String * 14 , X
As Byte
'*********************************** Aliases
************************************
Lcd_cmd Alias Porta.0                                'Low for cmd
mode
Lcd_cs Alias Porta.2
Lcd_res Alias Porta.1                                  'Low for reset


<Schnipp Ende>

Wenn ich SPI -> Hard Einstelle, arbeitet das Nokia 3310
Wenn ich SPI Soft auf Port B lege ( Hardwaremässig gleiche PINS am µC
), arbeitet das Nokia 3310
Wenn ich SPI Soft auf Port A lege -> geht nichts!

LCD_cmd,LCd_cs und LCD_res ist entweder Port A oder Port B welches ich
das Display anschliesse, werden enstsprechend angepasst.

Wieso kann geht kein Soft SPI, die PINS kann man doch frei wählen?
Kann mir einer was dazu sagen ?

Thx

von Christian F. (fasti)


Lesenswert?

Hi!

Also ich kenn mich in Bascom net aus aber kann man da wirklich einfach
durch angeben des Typs, sprich Hard oder Soft auswählen und Bascom
implementiert das gesammte SPI selbst?
Und wieso schliesst du nicht MMC und LCD an das Hardware-SPI an? Dann
brauchst nur noch einen zusätzlichen Pin, der als Chipselect dient und
den gerade benötigten Slave auswählt.

mfg

Fasti

von Mikro A. (mikroavr)


Lesenswert?

Das kommt später , ich fange erst an in SPI einzuarbeiten, deswegen
etwas umständlich, aber ich bin am lernen.

Die HARD SPI ist ja am PORT B ( ATMEGA 16L ) MOSI,SCK,MISO,/SS
SOFT SPI ist frei wählbar wollte von B nach A wechseln.

SOFT SPI auf PORT B geht ja

Warum klappt SOFt SPI dann nicht an Port A?

von Mikro A. (mikroavr)


Lesenswert?

Hat keiner ne Idee woran das liegen könnte?

von Togger (Gast)


Lesenswert?

Hi Mikro,
bei mir ist es genau andersrum: "Soft" klappt, "Hard" nicht.

Soft Spi habe ich auf Port b und c erfolgreich getestet (MMC Karte).

Hier der Programmauszug:

Config Spi = Soft , Din = Pinc.3 , Dout = Portc.4 , Ss = Portc.5 ,
Clock = Portc.2       ' AT8
Ddrc = &B11110111
Cs Alias Portc.5
Clk Alias Portc.2
Miso Alias Pinc.3                                         'inp
Mosi Alias Portc.4                                        'out

Das klappt leider nicht:
Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = High ,
Phase = 1 , Clockrate = 4 , Noss = 1

Port A gibt es nicht auf allen AVRs. Hast du das überprüft?
Und beim 16er liegen auf PortA die Analogeingänge.
Kann sein, dass es da Konflikte gibt.
Probier doch mal zuätzlich für jeden Pin Input oder Output zu
definieren.
Benutzt du nämlich irgendwo im Programm den AD Wandler, dann kann das
nicht gehen.

lg Ralf

von Mikro A. (mikroavr)


Angehängte Dateien:

Lesenswert?

Also wenn ich PortC oder PortD mit Softspi nehme gehts auch nicht.

Könntest du mir die MMC Programm geben, dann hätte ich den direkten
vergleich und weniger Fehlerquellen.

Verstehen kann ich das nicht ich arbeite mit Version 1.11.74

Anbei das Programm welches für Nokia 3310 über Hard SPI geht,
vielleicht kannst du für deine MMC karte was dazu finden.

mfg
Dirk

von Togger (Gast)


Lesenswert?

Hi Dirk,
ja kann ich machen, hinterlasse mir doch bitte deine EMailAddr oder
schreib mich über EMail an.

lg Ralf

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.