mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 16 Bit über USART schieben


Autor: joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marcus W. (blizzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo joe,

möglich ist es auf jeden Fall, z.B. per Software-UART.

Gruß Marcus

Autor: joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

erstmal vielen Dank.

Aber wie meinst du das? Software UART? Also selbst ne Schnittstelle 
schreiben und die Atmelinterne nicht verwenden?

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:)

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ralph wrote:
> 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.
Nö. Für UART gibts keine Norm, die irgendeine Datenbreite vorschreibt.

Autor: Marcus W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bezüglich des Software-UART hast du mich richtig verstanden.
Ist nur bissl kritisches Timing, da gibts hier im Forum aber schon 
Ansätze dafür und Beispielcode.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ joe (Gast)

>Einfachen seriellen Schnittstelle. Die erwartet taktsynchron 16 Bit ohne
>Stoppbit usw.

Dan ist ein UART sowieo nicht brauchbar, der ist nämlich asychron. Siehe 
Seriell

>Mit dem SPI müsste das gehen meinst du?

Ja.

AVR-Tutorial: Schieberegister

MfG
Falk

Autor: joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dan ist ein UART sowieo nicht brauchbar, der ist nämlich asychron.

Ich benutze den USART im synchron mode.

Autor: joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und ich möchte 16 Bit taktsynchron loswerden.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

moment der Takt wird permanent rausgegeben oder etwa nicht?
Und welche Bits in welchem Register muss ich setzten, dass die USART
Schnittstelle nicht ein Stopbit mitsendet?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die USART macht immer mindestens 1 Stoppbit.

Autor: joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Frank B_. (frank_b) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Notfalls schreib Dir selbst eine Routine die das in Software macht und 
die Pins toggelt, wenn Dir das Hardware-TWI zu kompliziert ist.


1. Datenleitung auf HI oer LO, je nach BIT
2. Taktleitung  HI
3. Taktleitung LO
4. gehe zu 1.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank Egal wrote:
> Notfalls schreib Dir selbst eine Routine die das in Software und die
> Pins toggelt,

Meine Rede.
Der 7-Zeiler wäre schon längst fertig.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß.

Autor: joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deswegen frag ich ja.

Gut ich beschäftige mich erstmal weiter mit dem Datenblatt. Ich glaube 
der Teil USART in SPI mode is ganz interessant für mich.

Danke nochmals

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay ich vermute auch mal, dass ich dann auf das SPI ausweichen muss.
Dementsprechend muss ich auch das Layout ändern, weil ich die Hardware 
Pins vom USART nicht nehmen kann.

Autor: joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann. Ist ja auch die Standard-Variante. Synchron mit Stoppbit usw 
ist ja ein ziemlicher Sonderfall....weiß selber nicht mal, wo man das 
nimmt....

Autor: joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso???

Das ist ein Digitales Poti, welches ein 16 bit Datenwort haben will.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.