16 Bit über USART schieben

Gast #723477
Lesenswert?

Hallo,

ich hab das folgende Problem. Ich habe einen Baustein, welcher ein 16 
Bit Datenwort empfangen soll. Zur verfügung habe ich die USART 
Schnittstelle eines ATMEGA 48 Controllers.

Diese kann laut datenblatt aber nur 8 Bit laden und diese dann 
rausschieben.
Und mit jeder neuen Sequenz wird lt Datenblatt ein Stopbit mit gesendet.

Ist das was ich vorhab dann mit diesem Controller überhaupt möglich?

Vielen Dank
Gast #723552
Lesenswert?

1. Wie wird das Datenwort gesendet? d.h. welche Schnittstelle verwedet 
der Sender?
2. Uart ist immer 8 Bit ==> 16 but werden dan  aks 2 * 8 Bit gesendet 
und du bekomst aus dem Rx Register das Byte OHNE die Stopbits.
Gast #723617
Lesenswert?

Hallo,

also ich schiebe die Daten synchron mit dem Takt durch die USART 
Schnittstelle.

2*8 Bits senden.... Bist du sicher, dass kein Stopbit mit gesendet wird? 
Ich habs ausprobiert und mir aufm scope angeguckt.
Ich bin noch etwas neu mit den atmels... daher bitte ich um 
Verständnis:)
Gast #723621
Lesenswert?

Was er meint ist, dass das Stopbit zwargesendet wird, aber von der 
empfangenden UART wieder "ausgefiltert" wird.

Falls der Empfänger kein UART sein sollte, kannst Du ja das SPI 
verwenden, da geht das auch ohne Stopbit.

Frank
Gast #723666
Lesenswert?

Achso,

nein auf der Empfängerseite befindet sich ein Baustein mit einer 
Einfachen seriellen Schnittstelle. Die erwartet taktsynchron 16 Bit ohne 
Stoppbit usw.

Mit dem SPI müsste das gehen meinst du?
#723848
Lesenswert?

Na einfach 2 mal 8 Bit losschicken, und das Chip-Select-Signal 
zwischendurch nicht wegnehmen. Die USART-State-Machine erzeugt doch nur 
bei Datenbits den Takt, zwischendurch ist doch kein Takt, also keine 
Datenübernahme. Und StoppBit gibts bei SPI nicht.

Also am MSP430 klappt das bestens, man muss nur richtig abfragen, ob das 
1. Byte raus ist, weil der Prozessor ja viel schneller als die SPI sein 
kann.
Gast #723883
Lesenswert?

Mein reden so steht es auch im Datenblatt.

Daher will ich eigentlich nur ein paar kleine Fragen beantwortet haben:

1. USART macht immer 1 Stopbit -> 16 bit mit USART senden kann ich dann 
ja wohl vergessen ohne Stopbit mittendrin. Oder gibt es einen trick?

2. Was währe nun einfacher Software USART selber basteln oder SPI?

3. Wie läuft das bei der SPI ist da die Wortbreite die man senden will 
beliebig?
#723887
Lesenswert?

@ joe (Gast)

>moment der Takt wird permanent rausgegeben oder etwa nicht?

Nein, wozu auch? Im synchronen Betrieb für jedes Bit einen Takt. Ohne 
zusätzlich Start- oder Stopits. Siehe [SPI]].

Im asynchronen Betrieb wir keine Takt ausgegeben, dafür abe Start- und 
Stopbit automatisch angefügt UART.

>Und welche Bits in welchem Register muss ich setzten, dass die USART
>Schnittstelle nicht ein Stopbit mitsendet?

Macht sie im synchronen Betrieb nicht.

MFG
Falk
#723967
Lesenswert?

Christian R. wrote:
> Karl heinz Buchegger wrote:
>> Die USART macht immer mindestens 1 Stoppbit.
>
> Nur, wenn man sie im UART-Betrieb benutzt. Aber er will ja eine
> SPI-Schnittstelle, auch wenn er das vielleicht selbst gar nicht so recht
> weiß.

Bringt mich jetzt nicht durcheinander. :-)

Es gibt doch folgende Möglichkeiten

* USART - asynchron
* USART - synchron
* SPI


USART - synchron ist aber nicht dasselbe wie SPI.
Oder doch?

Ich kann aus der Doku 'USART - Frame Formats' nichts erkennen,
wonach Start und Stopbits im synchronen Betrieb nicht gesendet
werden würden.
#724052
Lesenswert?

Also ich kenn´s vom ATMega nich so wirklich genau, aber dürfte ja 
ähnlich sein wie am MSP430, da gibts bei der USART folgende 
Möglichkeiten:

- UART -> asynchron (UART, also RS232 usw.)
- USART -> synchron I2C
- USART -> Synchron SPI

Und SPI kann der ATMega garantiert auch. USART bedeutet ja, dass er 
synchron und asynchron kann.
#724066
Lesenswert?

Christian R. wrote:
> Also ich kenn´s vom ATMega nich so wirklich genau, aber dürfte ja
> ähnlich sein wie am MSP430, da gibts bei der USART folgende
> Möglichkeiten:
>
> - UART -> asynchron (UART, also RS232 usw.)
> - USART -> synchron I2C
> - USART -> Synchron SPI
>
> Und SPI kann der ATMega garantiert auch. USART bedeutet ja, dass er
> synchron und asynchron kann.

Eben. Aber der Mega (zb Mega8) hat unterschiedlche Pins für
USART, SPI und TWI

USART:  RxD, TxD, XCK
SPI:    MISO, MOSI, SCK, SS
TWI:    SCL, SDA

Daraus schliesse ich, dass das unterschiedliche Hardwareeinheiten
sind.
Benutzt mal also dezidiert die USART, dann kommt man um Start-
Stopbit nicht herum. Zumindest ist das meine Lesensart der Doku.
Was natürlich nicht heisst, dass man mittels SPI oder TWI nicht
ohne Start-/Stop arbeiten kann. Aber dann ist man nicht mehr an
der USART sondern bei SPI oder TWI. Aber das wurde ja schon weiter
oben angeregt.
#724153
Lesenswert?

Jup, so ist es am MSP430 auch, nur dass es nur ein Hardware-Modul gibt. 
Aber eben mit getrennten Anschlüssen. Man kann aber nur eins von den 
dreien gleichzeitig benutzen.

Wie dem auch sei, ich vermute ganz stark, er will einen ADC oder DAC 
oder sowas ansprechen und das läuft ja im Normalfall per SPI, da sind 16 
Bit kein Thema.
Gast #724304
Lesenswert?

So die Lösung des Problem ist USART in SPI Mode. So kann man die Pins 
der Usart Schnittstelle als SPI Pins benutzen.

Ich bedanke mich nochmal bei allen die mir geholfen haben.

Des Weiteren USART synchron sendet immer ein Stopbit ....so will es das 
Datenblatt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren