-
        

Ergebnis 1 bis 10 von 10

Thema: Serielle Daten mit 1200 Baud an Modem weitergeben?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    10.02.2005
    Beiträge
    19

    Serielle Daten mit 1200 Baud an Modem weitergeben?

    Anzeige

    Hallo Zusammen,

    bin noch ziemlich unerfahren im Bereich der Mikrocontroller und hab da
    mal eine allgemeine Frage zu den Ports eines ATmega8 !

    Ist es möglich über einen Pin von beispielsweise PortB serielle Daten mit
    einer Baudrate von 1200Bit/s an ein modem weiterzugeben?

    Gruß!

    Casa74



    Hallo Casa74!
    Ich habe mir erlaubt Deinen Titel etwas zu ändern, um allen Usern eindeutiger zu zeigen, worum es geht!
    Der Titel war schon nicht schlecht, aber es geht ja auch so! ;o)

    Viele Grüße
    Florian (Moderator)

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.08.2004
    Ort
    484..
    Alter
    27
    Beiträge
    339
    Also ich meine das das über einen Port zwar möglich sein wird, jedoch ganz schön aufwendig ist !
    Ein Atmega hat ein UART, den mach recht einfach mit einer kleinen Schaltung verwenden kann. Darüber kann man dann Daten über RS232 senden. Das sollte auch für ein Modem besser sein.
    Informationen darüber gibts z.B.: auf www.mikrocontroller.net
    * human knowledge belongs to the world *

    www.domspage.de - Robotik - TobiSAt8

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Mega8 hat einen Universellen Synchronen/Asynchronen Seriellen Transceiver (USART).

    Du brauchst also nicht selber mit den Pins rumwackeln, das kannst du die Mega8 Hardware machen lassen. Wenn man der UART aktiviert, dann geht das aber nur über die Pins PD0 (RxD) und PD1 (TxD).

    An PortB liegt nur das SPI (Serial Peripheral Interface), über den man ihn via ISP proggen kann. Dieses Interface kann man aber auch benutzen, um seriell Daten zu übertragen (zB MMC-Card).

    Die dritte Hardwareunterstützung für serielle Übertragung ist das TWI aka I2C an PortC.5 (SCL) und PortC.4 (SDA).
    Disclaimer: none. Sue me.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    10.02.2005
    Beiträge
    19
    Vielen Dank erstmal für die ausführlichen Antworten.


    Ich versuche z.B über den Rx-Pin des USART GPS-Daten zu empfangen,
    intern einem Datenrahmen zuzufügen, um sie dann wieder an einem modem auszugeben.
    Bisher war mein Gedanke sie über den Pin eines Ports auszugeben,
    wenn ich euch aber jetzt richtig verstanden habe, kann ich über den USART
    gleichzeitig Daten senden und empfangen.
    Laut AVR-Tutorial vom Mikrocontroller.net , müsste also nur die Einstellung
    der Baudrate und das aktivieren der entsprechenden Register notwendig sein.
    Den Wechsel zwischen senden und empfangen, sowie schreiben/lesen
    des FIFO-Puffers erfolgen also automatisch, richtig ??

    Gruß!

    Casa74

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Eine UART FIFO haben die AVRs nicht, da musst du dich schon selber kümmern. Wenn du den AVR nur als Transceiver nehmen willst, also

    GPS --> [RxD].AVR
    AVR.[TxD] --> Modem

    Kannst da das über die UART machen, falls du schnell genug bist und auf beiden Seiten die gleiche Baudrate einstellst.

    Die UART Hardware ermöglicht dir einen gewissen Grad an Parallelität.
    Nach obigem Schema kannst du allerdings nichts ans GPS senden oder vom Modem empfangen.
    Evtl kann das GPS HW-Flusssteuerung via CTS, RTS. Dann gehen dir auf keinen Fall Daten verloren.
    Disclaimer: none. Sue me.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    31.07.2005
    Beiträge
    54
    hi

    um auf deine ursprüngliche frage zurückzukommen: ja, du kannst eine serielle schnittstelle über beliebige pins emulieren (siehe auch entsprechende application note von atmel: http://www.atmel.com/dyn/resources/p...ts/DOC0952.PDF)

    cu

    chris

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    10.02.2005
    Beiträge
    19
    Alles klar so langsam verstehe ich.


    Der USART des mega8 hat aber doch einen FIFO, oder?!
    So entnehme ich es zumindest dem mega8-Datenblatt und dem Tutorial.
    Oder hab ich da was falsch verstanden?

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Ja, die FIFO ist aber mit 1 Byte schon voll und wird im Receiver zwischengepuffert.
    Eine mehrere Byte größe FIFO wie die in PCs verbreiteten 16550-kompatible UARTs haben AVRs nicht.
    Disclaimer: none. Sue me.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    Hamburg <-> Bremen
    Alter
    37
    Beiträge
    112
    Hallo,
    so weit ich weiss nicht. Er hat nur jeweils ein Shiftregister fuer Rx und Tx (welches Du selber aber nicht direckt ansprechen kannst), welches die Daten serialisier. Des weiteren gibt es noch ein Datenregister fuer Tx und Rx in das Du Deine Daten schreibst bzw liest. Hier gibt es allerdings eine Besonderheit, die Datenregister fuer Tx und Rx sind unter der gleichen Adresse erreichbar und der Controler entscheidet je nach dem ob Du lesend oder schreibend zugreifst auf welchen Wert Du bekommst.
    Kann Dir da nur das Datenblatt zum uC emfpehlen, steht da alles drin, sogar mit Diagramm. Ist aber auf anhieb etwas schwer zu verstehen.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    31.07.2005
    Beiträge
    54
    aus dem datenblatt von atmel:
    (http://www.atmel.com/dyn/resources/p...ts/doc2486.pdf)

    However, the receive buffering has two improvements that will affect the compatibility in
    some special cases:
    • A second Buffer Register has been added. The two Buffer Registers operate as a
    circular FIFO buffer. Therefore the UDR must only be read once for each incoming
    data! More important is the fact that the Error Flags (FE and DOR) and the ninth
    data bit (RXB are buffered with the data in the receive buffer. Therefore the status
    bits must always be read before the UDR Register is read. Otherwise the error
    status will be lost since the buffer state is lost.
    • The Receiver Shift Register can now act as a third buffer level. This is done by
    allowing the received data to remain in the serial Shift Register (see Figure 61) if the
    Buffer Registers are full, until a new start bit is detected. The USART is therefore
    more resistant to Data OverRun (DOR) error conditions.
    => n wirkliches fifo haben sie nicht ...

    cu

    chris

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •