mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Attiny2313 und RS232


Autor: Martin Star (crocodile)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

Weiß  jemand wie ich  über rs232 Schnittstelle des Port von Attiny2313 
steuern kann.
Möchte gern an dem Port 6 LED’s über PC ansteuern.

Gruß
Martin

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann mußt Du Dir ein Protokoll ausdenken und 2 Programme schreiben (für 
den PC und den AVR).


Peter

Autor: Martin Star (crocodile)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

Was meinst du mit dem Prorotkoll???
Weiss du ich kann nicht Programmieren, eher habe ich mir gedacht ob 
irgend wo ein fertiges Application für 2313 gibt dass ich so einfach 
übernenhmen kann.

Gruß
Martin

Autor: Sam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst ein Protokoll schreiben, dass sagen kann, dass LED nummer X 
einen bestimmten Zustand haben soll.
Alternativ über usb kenne ich das hier: 
http://www.recursion.jp/avrcdc/cdc-io.html#usage

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mikrocontroller sind ab Werk strohdoof und können garnix. Sie sind 
primär für Leute gedacht, die programmieren können oder lernen wollen.

Es kann sein, daß es für Deine konkrete Anwendung schon was fertiges im 
Web gibt, ich weiß es nicht.
Es wird wohl auch keiner für Dich danach suchen (d.h. mußt Du wohl 
selber).

Du brauchst in jedem Fall aber noch ein Programmiergerät, um das 
Programm in den MC zu flashen.


Peter

Autor: Martin Star (crocodile)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

dieser Code habe ich von AVR turirial Uart kopiert. so weit ich 
verstanden habe die entschprechen fast meine anwendung allerdings dieser 
Code für Atmega 8 geschrieben. Die Frage ist kann ich dieser Code auch 
für AT902313 verwenden oder nicht wenn Ja, was muss ich ändern?

Gruss
Martin


.include "m8def.inc"

.def temp = R16

.equ F_CPU = 4000000                            ; Systemtakt in Hz
.equ BAUD  = 9600                               ; Baudrate

; Berechnungen
.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))     ; Reale Baudrate
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille

.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))       ; max. +/-10 Promille 
Fehler
  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit 
zu hoch!"
.endif

.org 0x00
        rjmp main

.org URXCaddr
        rjmp int_rxc

; Hauptprogramm
main:

    ; Stackpointer initialisieren

    ldi     temp, HIGH(RAMEND)
    out     SPH, temp
    ldi     temp, LOW(RAMEND)
    out     SPL, temp

    ; Port B = Ausgang

    ldi     temp, 0xFF
    out     DDRB, temp

    ; Baudrate einstellen

    ldi     temp, HIGH(UBRR_VAL)
    out     UBRRH, temp
    ldi     temp, LOW(UBRR_VAL)
    out     UBRRL, temp

    ; Frame-Format: 8 Bit

    ldi     temp, (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0)
    out     UCSRC, temp

    sbi     UCSRB, RXCIE                ; Interrupt bei Empfang
    sbi     UCSRB, RXEN                 ; RX (Empfang) aktivieren

    sei                                 ; Interrupts global aktivieren

loop:
    rjmp loop                           ; Endlosschleife

; Interruptroutine: wird ausgeführt sobald ein Byte über das UART 
empfangen wurde

int_rxc:
    push    temp                        ; temp auf dem Stack sichern
    in      temp, sreg                  ; SREG sichern
    push    temp

    in      temp, UDR                   ; UART Daten lesen
    cpi     temp, '1'                   ; empfangenes Byte mit '1' 
vergleichen
    brne    int_rxc_1                   ; wenn nicht gleich, dann zu 
int_rxc_1
    cbi     PORTB, 0                    ; LED einschalten, low aktiv
    rjmp    int_rxc_2                   ; Zu int_rxc_2 springen
int_rxc_1:
    cpi     temp, '0'                   ; empfangenes Byte mit '0' 
vergleichen
    brne    int_rxc_2                   ; wenn nicht gleich, dann zu 
int_rxc_2
    sbi     PORTB, 0                    ; LED ausschalten, low aktiv
int_rxc_2:

    pop     temp
    out     sreg, temp                  ; SREG wiederherstellen
    pop     temp                        ; temp wiederherstellen
    reti

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Die Frage ist kann ich dieser Code auch
>für AT902313 verwenden oder nicht wenn Ja, was muss ich ändern?

Zumindest:  .include "m8def.inc". Ansonsten fällt mir jetzt nichts 
offensichtliches auf.

MfG Spess

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.