www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik rs232 / microcontroler


Autor: meTTy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi leute,

wurde von einem anderen board weitergeletet und hoffe ihr könnt mir
bitte helfen:


ich möchte über den seriellen port einen microcontroler (tiny26)
ansprechen, nun bräuchte ich, eine art quelltext für einen rs232
converter auf dem tiny26.

(das programm läuft auf dem microcontroler)

bitte um hilfe,

liebe grüße,

_meTTy

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In welcher Sprache möchtest du denn programmieren?

Für C steht dazu was im AVR-GCC-Tutorial unter dem Abschnitt UART
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Ausserdem brauchst du noch einen weiteres Bauteil, der dir die
Umwandlung von RS232 Pegel (PC) auf TTL Pegel (ATTiny26) macht.
Üblicherweise wird dafür ein IC MAX232 verwendet.

Wie dieses IC angeschlossen wird und per Assembler angesteuert wird,
steht im UART Teil vom AVR (Assembler) Tutorial
http://www.mikrocontroller.net/tutorial/uart

Du musst allerdings die beiden Beispiele (C, Assembler) vom ATMega8 und
anderen AVRs auf den ATTiny26 umschreiben. Dabei helfen die Datenblätter
des Prozessors
http://www.atmel.com/dyn/resources/prod_documents/...

Speziell im Bereich Takt, Baudratenauswahl und Registernamen besser
alles doppelt und dreifach kontrollieren ;-)

Autor: meTTy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie der tiny26 programmiert wird, steht laut angaben eines kollegen
schon fest,

das problem ist nun, einen "Umwandler" zu finden der wie gesagt von
rs232 auf tiny26 umwandelt, dies ist ja bei größeren mc bereits
enthalten, nur möchte ich dies gerne software basieren lösen und ohne
ein weiteres bauteil.

liebe grüße und danke für die antwort.

meTTy

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das lohnt bei einem tiny26 nicht. Der Flash Speicher ist zu klein für
solche Späe (Also Software-UART).

Wenns dich dennoch interessiert: Bei atmel.com gibts ne spitzen Appnote
über Soft-Uart.

Autor: meTTy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
könntest du mich bitte kurz über den begriff Software UART aufklären?

liebe grüße

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klick auf das Wörtchen UART und eine Erklärung erscheint.

Diese UART kann in der AVR Hardware stecken (tut sie beim ATTiny26)
oder mit beliebigen I/O-Pins vom µC und entsprechender Software
emuliert werden.

Du hast nachwievor die Aufgabe die 12/-12V Pegel der RS232 auf die 0/5V
Pegel der UART (bzw. beliebiger I/O-Pins) des ATTiny26 umzusetzen und
umgekehrt, d.h. negieren und anheben.

Das Negieren kann eine Software-UART machen und manche
RS232-Schnittstellen verstehen solche Signale ohne Pegelanhebung. Aber
nicht alle.

Die sicherste Lösung ist ein dafür geeigneter IC wie der erwähnte
MAX232 mit ein paar Kondensatoren für dessen Ladungspumpe einzusetzen,
um normgerechte Signale zu erzeugen.

Es gibt andere Bastellösungen mit zwei Transistoren und vier
Widerständen zum Anheben und zum Negieren der Signalpegel. Eine ist im
Wiki-Artikel zum Pegelwandler aufgezeigt. Auch unter den Hardware-Links
zum R8C ist eine solche Minimallösung aufgezeigt.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Korrektur:

Die beiden Transistorlösungen arbeiten auch mit 5V Pegeln. Die Signale
werden nur logisch negiert und so passend für die Hardware-UART
gemacht.

Autor: meTTy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi!

vielen dank für die informativen antworten!

wir haben uns nun jedoch überlegt, vielleicht auf SPI umzusteigen (dies
wurde uns geraten)  haben aber bis auf die informationen von
mirkocontroller.net und einigen internet seiten nicht wirklich eine
ahnung wie das genau funktioniert.

es wäre sehr hilfreich wenn jemand weiterhelfen könnte, gibt es
vielleicht programmierbeispiele oder ähnliches?

liebe grüße,
meTTy

Autor: Santa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Diese UART kann in der AVR Hardware stecken (tut sie beim ATTiny26)
>>oder mit beliebigen I/O-Pins vom µC und entsprechender Software
>>emuliert werden.

Tut sie eben nicht. Der Tiny26 hat kein internes Hrdware-USART. Deshalb
fragte der Autor sicherlich nach einer Softwarelösung. Ich würde an
dieser Stelle vielleicht umdenken und einen ATMEGA8 oder einen seiner
Nachfolger einsetzen, der sowohl USART als auch A/D-Converter bietet.
Ein USART im kleinen Tiny26 per Software nachzubilden, ist schon etwas
sehr Ressourcen-killend.

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVR307: Half Duplex UART Using the USI Module:
http://www.atmel.com/dyn/resources/prod_documents/...

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@inoffizieller WM-Rahul: Selbst das ist noch eine Software UART.. Wenn
du darauf hinaus willst.

PS: Das ist die AppNote die ich meinte übrigens.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@TravelRec.,

"Ein USART im kleinen Tiny26 per Software nachzubilden, ist schon
etwas
sehr Ressourcen-killend."


So schlimm ist das garnicht (siehe Codesammlung).
O.k., der Tiny26 hat keinen capture, da nimmt man eben nen externen
Interrupt und gut is.



@meTTy

"von rs232 auf tiny26 umwandelt, dies ist ja bei größeren mc bereits
enthalten"

Wäre mir total neu !
Einen MC mit integrierten RS-232 Pegelwandler habe ich noch nirgends
gesehen.
Der MAX202 wird da gerne genommen oder irgendne diskrete
Sparschaltung.

SPI geht nur bei MC-MC Verbindung, ein PC hat keine SPI.
Und über USB gehts nur RS-232.


Peter

Autor: Thilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Code-Sparsamste Lösung ist immer noch wie oben schon gesagt die USI.
Nebenbei: Der Tiny26 wurde für Sensor-Anschaltung konzipiert
('dezentrale Peripherie'), daher die umfangreiche
AD-Wandlerausstattung. Für komplexe Programme ist er nicht gedacht. Die
USI ist nix weiter als ein programmierbares Schieberegister.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin gerade dabei die oben erwähnte AppNote von Atmel in mein Projekt 
einzubinden.
Ich verwende ebenfalls einen Tiny26, AVR Studio und den gcc Compiler.
Leider wurde der Code der AppNote mit dem Compiler "IAR EWAVR 2.28A" 
getestet.
Hier der Link zu dem AppNote Quellcode:
http://www.atmel.com/dyn/resources/prod_documents/AVR307.zip

Mein Problem ist nun, dass der gcc die includes nicht finden kann.
(#include <iotiny26.h> und #include <inavr.h>)

Daraufhin habe ich sie durch #include <avr/io.h> ersetzt, allerdings 
bekomme ich dann folgende Fehlermeldungen:


../USI_UART.c:67: error: expected '=', ',', ';', 'asm' or 
'__attribute__' before '__regvar'
../USI_UART.c:67: error: stray '@' in program
../USI_UART.c: In function 'USI_UART_Initialise_Transmitter':
../USI_UART.c:117: warning: implicit declaration of function 
'__disable_interrupt'
../USI_UART.c:118: error: 'TCNT0' undeclared (first use in this 
function)
../USI_UART.c:118: error: (Each undeclared identifier is reported only 
once
../USI_UART.c:118: error: for each function it appears in.)
../USI_UART.c:119: error: 'TCCR0' undeclared (first use in this 
function)
../USI_UART.c:135: warning: implicit declaration of function 
'__enable_interrupt'
../USI_UART.c: At top level:
../USI_UART.c:190: warning: ignoring #pragma vector
../USI_UART.c:191: error: expected '=', ',', ';', 'asm' or 
'__attribute__' before 'void'
../USI_UART.c:216: warning: ignoring #pragma vector
../USI_UART.c:217: error: expected '=', ',', ';', 'asm' or 
'__attribute__' before 'void'
../USI_UART.c:291: warning: ignoring #pragma vector
../USI_UART.c:292: error: expected '=', ',', ';', 'asm' or 
'__attribute__' before 'void'
make: *** [USI_UART.o] Error 1
Build failed with 9 errors and 5 warnings...


Hat jemand die original verwendeten Headers, oder kann mir helfen die 
Fehler loszuwerden?

Vielen Dank schonmal,
Alex

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok.. hab weiter gelesen..
ich muss den code wohl auf gcc portieren :(

naja.. hilft ja nix

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.