Hey profis,
habe gerade mein praktikum angefange und habe schon folgendes problem :(
Ich soll hier ein mikrocontroller programmieren , der von einem
AD-Wandler die daten bekommt und diese zu einem bluetooth modul schickt.
Das problem:
Ich muss einen MSP430 F 2274 benutzen. Der mikrocontroller hat leider
SPI und UART auf den gleichen pins. SPI brauche ich um mit dem
AD-wandler zu kommunizieren und UART um mit dem bluetooth-modul.
Ich habe mir überlegt SPI manuell in C zu programmieren, also die
leitung auf irrgendein pin legen und diesen zu richtigen zeit abzuhören.
Der AD-Wandler arbeitet mit 0,8 MHz und der MSP430*** ist 16MHz schnell.
Hat jemand schon erfahrungen damit? das problem kommt doch bestimmt
öffters vor.
PS: leider habe ich noch gar nichts zu ausprobieren hier ausser MSP430F
2274 EVO-board, das alleirdings auch noch nicht läuft
MFG max
danke für die idee.
das geht bestimmt auch mit internen schieberegistern von MSP430 F 2274.
werde mich nochmal melden, wenn was beim ausprobieren schief geht ;)
Peter Diener wrote:
> Das in> Software wird eine reine Datenschlacht.
Was ist denn an den paar Bytes Code ne Datenschlacht?
SPI ist sehr einfach in Software zu machen und kaum größer als der Code
für HW-SPI.
Daher findet man auch nen Haufen Beispiele im Netz dafür.
Peter
@peter diener: danke für die antwort, leider ist ein µ-controller dieser
art doppelt so teuer wie F 2274.
@danneger : werde versuchen beispiel code zu finden. habe versucht bist
jetzt "SPI simulieren" einzugeben, da kamm nichts gescheites raus.
aber "SPI software" ist bestimmt besser, als suchwort ;)
danke
>Ich muss einen MSP430 F 2274 benutzen. Der mikrocontroller hat leider>SPI und UART auf den gleichen pins.
Der MSP430F2274 hat 2 USCI Channels (A0, B0) die (natürlich) auf
verschiedene Pins gehen. Somit kannst du SPI und UART gleichzeitig
nutzen.
Maria wrote:
> Die Hilfsfunktion PSet() setzt ein Port Pin high/low.> PGet() fragt ein Port Pin ab.
Beim AVR-GCC geht das einfacher, da kann man direkt auf die IO-Pins per
Bitvariablen zugreifen:
@jörg s.:
hier ein auszug aus data-sheet.
Pin 3.1-->USCI_B0 slave in/master out in SPI mode, SDA I2C data in I2C
mode
Pin 3.2-->USCI_B0 slave out/master in in SPI mode, SCL I2C clock in I2C
mode
Pin 3.3-->USCI_B0 clock input/output / USCI_A0 slave transmit enable
Pin 3.4-->USCI_A0 transmit data output inUARTmode, slave in/master out
in SPImode
Pins 3.5-->USCI_A0 receive data input in UART mode, slave out/master in
in SPI mode
verstehe ich da was falsch? USCI_B0 und USCI_A0 überschneiden sich soch
am Pin 3.3, allerdings würde ja sonst usci_a0 und usci_b0 keinen sinn
machen, hm...habe jetzt im user guide auch die bestätigung gefunden,
dass es gehen müsste. danke
danke nochmal an alle, habe leider noch keine erfahrung mit
mikrocontroller, deswegen übersehe ich wohl auch gerne sachen im
datenblatt. werde mich bestimmt wieder melden, wenn es ans basteln geht
:)
>deswegen übersehe ich wohl auch gerne sachen im datenblatt.
Kann passieren. Das mit der Überschneindung auf P3.3 hatte ich auch
nicht gesehen :) Aber bei UART + SPI sollte es gehen.