rs232 mega8

Gast #456528
Lesenswert?

hallo jungs!

bitte euch mal ganz dringend um hilfe..

ich arbeite das avr tutorial durch und benötige (leider sehr dringend) 
ein funktionierendes "terminal programm" (source) dazu, welches in C 
geschrieben ist..

sprich einfach ein standard gerüst (progg.c) welches ich evtl editieren 
kann..


ich möchte per rs232 schnittstelle den uC beliebige werte schicken 
welche er dann dementsprechen interpretiert. (ist die überhaupüt mögl 
oder kann ich nur 0 bzw 1 im byte senden?)


ganz liebe grüße,

benji
Gast #456530
Lesenswert?

>kann ich nur 0 bzw 1 im byte

Muaaa!
Versuch' doch mal eine 2 oder 3 in ein Bit zu schreiben!

Wenn man die serielle Schnittstelle mit den Parametern 8N1 betreibt, 
werden 1 Byte, 1 Stoppbit und keine Parität übertragen.
Mehr als acht Bit überträgt diese serielle nicht.

>ich arbeite das avr tutorial durch und benötige (leider sehr dringend)
>ein funktionierendes "terminal programm" (source) dazu, welches in C
>geschrieben ist..

Mit oder ohne Interrupt-Steuerung?
Gast #456534
Lesenswert?

> "terminal programm"

Für welche Seite? Controller oder PC?

Fürn PC gibt es HTerm (Codesammlung oder PC-Forum).
Fürn µC gibt es im Datenblatt kurze Beispiele, die man nach belieben 
modifizieren kann (i.d.R. funktionieren die auch).
Gast #456542
Lesenswert?

achja was vielleicht noch dazu sollte:

ich arbeite unter linux und will diesen c source in einen programmierten 
webserver einbaun, daher bringt mit ein programm wie HTerm leider nichts 
:(

am liebsten wär mir ein 20 zeiliger c source der das macht was ich will 
xD xD wo kann man sowas bestelln :P
Gast #456544
Lesenswert?

HTerm, Hyperterm, unter Linux wird es auch sowas geben.

>welches 1 oder 0 an uC

Meinst du "1" und "0" oder 1 und 0?

Die ersten beiden sind ASCII-Zeichen, die anderen beiden Zahlen.

> also kann ich in zukunft immer nur 8 bit versenden

Nein, du kannst natürlich mehr als nur 8 Bit versenden.
Allerdings nicht in einem Datenrahmen, sondern immer nur nacheinander, 
also 8 Bit, 16 Bit, 24 Bit ... ganze Bytes maximal.
Gast #456553
Lesenswert?

kurzer ausschnitt aus dem programm:


.
.
.
        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, UDR
        cpi temp, '1'                     ; empfangenes Byte mit '1' 
vergleichen
        brne int_rxc_1                    ; wenn nicht gleich, dann zu 
int_rcx_1
        cbi PORTB, 0                      ; LED einschalten
int_rxc_1:
        cpi temp, '0'                     ; empfangenes Byte mit '0' 
vergleichen
        brne int_rxc_2                    ; wenn nicht gleich, dann zu 
int_rcx_2
        sbi PORTB, 0                      ; LED ausschalten

.
.
.


ich möchte dieses programm zum laufen bringen.. ich brauche keine 
oberfläche sondern nur eine konsolenanwendung in c++ welche mir über 
rs232 vom pc  werte verschickt sodass der uC sie auswerten kann
Gast #456558
Lesenswert?

Da brauchst du kein c++. Mit setserial die passenden 
Kommunikationsparameter (Baudrate, Parity, ...) einstellen und dann:
echo 1 > /dev/tty0
oder
echo 0 > /dev/tty0

Such mal nach dem "serial howto".
#456559
Lesenswert?

Mein Unix ist schon lange her.
Am einfachsten wird wohl sein, du schreibst das
was du dem µC mitteilen möchtest in ein file.

cat file > tty1

schickt das dann zur Seriellen.
Die tty1 vorher natürlich richtig konfigurieren (baudrate, etc)

Ansonsten: Das kann doch nicht so schwer sein
ein Terminalpgm für Linux aufzutreiben.

http://www.google.com
Suchbegriff: "linux terminal download"

Selbisges gilt für die Programmierung der Seriellen
Schnittstelle unter Linux. Google ist dein Freund!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren