mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik µc soll Daten über RS232 schicken


Autor: Josef K (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo. Ich hoffe den Thread gibts nicht schon irgendwo anders schon. Hab
auf jeden Fall gesucht =)

Also mein Problem sollte nicht zu schwierig sein.
Ich Möchte einen Zahlenwert mittels RS232 von meinem µC (Atmega8535) an
einen empfänger schicken.
Hab mich schon ein bißchen durch das Datasheet durchgehangelt, bin aber
nicht ganz schlüssig. Ich weiß, das ich das irgendwie mit UART machen
muß, aber wie das genau aussehen soll (zB in C) kann ich mir nicht
vorstellen. Speziel die Bautrate macht mir zu schaffen.
Kennt ihr ein paar gute Tutorials dazu?

MfG

Autor: Danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<------ siehe tutorial punkt 10

Autor: Zumlin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wow. Das ist mal ein richtig gutes Tutorial. Ich weiß ich greife mit dem
Thema Schnittstelle in Bezug zu meinem µC Wissen schon weit vor, aber
ich möchte gerne die Realisierbarkeit einer Idee testen.

Unter "Senden einzelner Zeichen" in dem Tutorial hab ich noch ne
Frage.
UDR = 'x';                  /* schreibt das Zeichen x auf die
Schnittstelle */

Dabei kann 'x' nur ein Integer Wert sein, oder?

Vielen Dank schon mal im Vorraus.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab das Tutorial gerade nicht ganz im Kopf (und bin zu faul zum
nachlesen :-)) aber eigentlich müßtest du über die Schnittstelle
nur 8Bit Werte übertragen können. Was du dann danach damit machst bzw.
was du damit codiert hast, bleibt dir überlassen.

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, nur Byte-Werte kannste übertragen,
ist aber kein Problem, zerlegste den Integer Wert
in Bytes, schickste zum Empfänger, der sie wieder zusammensetzt

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier ein program für atmega8515,müsste gehen:
Im Hyper terminal wird  "TEST" angezeigt, für andere sachen zu
übertragen genau so

.include "m8515def.inc"

.def temp = R16
.equ CLOCK = 8000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1
.cseg
.org 0x000
      rjmp main
.org 0x009                             ; Interruptvektor for
UART-Receive
          rjmp int_rxc

main:    ldi r16, LOW(RAMEND)  ;Stack Pointer to top of RAM
      out SPL, r16
      ldi r16, HIGH(RAMEND)
      out SPH, r16

        ; Baudrate setup
           ldi temp, LOW(UBRRVAL)
          out UBRRL, temp
          ldi temp, HIGH(UBRRVAL)
          out UBRRH, temp

        ; Frame-Format: 8 Bit
          ldi temp, (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0)
           out UCSRC, temp

          sbi UCSRB, RXCIE   ; Interrupt by Receive
          sbi UCSRB, RXEN    ; RX (Receive) activate
          sbi UCSRB,TXEN     ; TX (Transmit) activate
          sei                 ; Interrupts global activate
      ldi r20,0x00




program:
      clr r21      ; gleich nachdem Einshalten "ATMEL UHF Demo Rader"
anzeigen
      ldi ZL,LOW(2*lable)
      ldi Zh,HIGH(2*lable)
      ldi r17,0x04
      ldi temp, 10
      rcall serout

ok:      lpm r16,z
      adiw ZL,1
      rcall serout
      dec r17
      cpse r17,r20
      rjmp ok
      ldi temp, 10
          rcall serout
          ldi temp, 13
          rcall serout
serout:      sbis UCSRA,UDRE  ;Warten bis UDR für das nächste Byte
bereit ist
          rjmp serout
          out UDR, temp
          ret
; Interruptroutine: wird ausgeführt sobald ein Byte über das UART
empfangen wurde
int_rxc:
          in r21, UDR

      ;rcall loop

          reti            ;Interrupt beenden
lable:
.db"TEST",0

Autor: Zumlin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiß, schön langsam werd ich frech, aber hast das auch in ner
Hochsprach wie c oder c++? =)
Sry. Kenn mich mit Assembler leider noch nicht so gut aus. In C hab ich
wenigstens schon mal ein paar einfach Programme für meinen µC
geschrieben.

Aber danke für die schnelle Antwort

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.