rs232 / microcontroler

Gast #397996
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
Gast #397997
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-Tutorial#Der_UART

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/doc1477.pdf

Speziell im Bereich Takt, Baudratenauswahl und Registernamen besser
alles doppelt und dreifach kontrollieren ;-)
Gast #397998
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
Gast #398001
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.
Gast #398003
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
Gast #398005
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.
#398008
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
Gast #398009
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.
Gast #1265311
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

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