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
Hallo joe, möglich ist es auf jeden Fall, z.B. per Software-UART. Gruß Marcus
Hallo, erstmal vielen Dank. Aber wie meinst du das? Software UART? Also selbst ne Schnittstelle schreiben und die Atmelinterne nicht verwenden?
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.
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:)
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
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?
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.
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.
@ 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
Dan ist ein UART sowieo nicht brauchbar, der ist nämlich asychron. Ich benutze den USART im synchron mode.
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.
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?
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?
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.
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.
@ 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
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ß.
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
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.
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.
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.
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.
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.
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.
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....
Wieso??? Das ist ein Digitales Poti, welches ein 16 bit Datenwort haben will.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.