loetstelle.net
Lötstelle Userforum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Digitale Lösung für Schaltungen / Problem?
Gehe zu Seite Zurück  1, 2, 3, 4, 5 ... 18, 19, 20  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> Microcontroller und DSP
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
pcprofi



Anmeldungsdatum: 17.02.2008
Beiträge: 1459
Wohnort: Düren

BeitragVerfasst am: Di 18.März 2008 11:30:49    Titel: Bauteile finden Antworten mit Zitat

Und ich lese auch mit - Leider fehlt auch mir momentan noch das Geld, um mir das nötige Material anzuschaffen...

Aber meine Projektidee steht schon...

Ich fände es klasse, wenn du dieses Projekt hier weiter treibst - und als Howto wär natürlich klasse.

Gruß Rainer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
gerold



Anmeldungsdatum: 27.07.2007
Beiträge: 927
Wohnort: Oberhofen im Inntal (Tirol)

BeitragVerfasst am: Di 18.März 2008 12:36:32    Titel: Bauteile finden Antworten mit Zitat

pcprofi hat folgendes geschrieben:
Ich fände es klasse, wenn du dieses Projekt hier weiter treibst - und als Howto wär natürlich klasse.

Hallo Rainer!

Danke für dein Feedback!

mfg
Gerold
Smile

PS: Mit dieser Ausstattung kann man diesem Kurs recht lange folgen:
- ATMEL Evaluations-Board Version 2.0.1 - Bausatz 14,95 EUR
- ATMEGA8-16PU 1,85 EUR
(- Nullmodem-Kabel 1,15 EUR)
- mySmartUSB 28,00 EUR

.

PS: Statt dem Nullmodemkabel braucht man für das Pollin Evaluationsboard ein normales "D-Sub Verbindungskabel". Sorry, mein Fehler.

.

_________________
http://halvar.at | http://sw3.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.


Zuletzt bearbeitet von gerold am Fr 21.März 2008 19:14:23, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
pcprofi



Anmeldungsdatum: 17.02.2008
Beiträge: 1459
Wohnort: Düren

BeitragVerfasst am: Di 18.März 2008 13:47:35    Titel: Bauteile finden Antworten mit Zitat

Danke dir Wink
Ich werde es mir wohl bestellen, sobald ich mit dem Abi durch bin - dauert also leider noch was - um genau zu sein bis zum 15.Mai...

Danach werde ich so richig loslegen...

Übrigens, in Planung ist das Projekt schon - es handelt sich um nen von dem Chip gesteuerten (getakteten) Spannungswandler... Sollte relativ einfach sein und geeignet für den Einstieg - genaueres aber später Smile

Gruß Rainer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pcprofi



Anmeldungsdatum: 17.02.2008
Beiträge: 1459
Wohnort: Düren

BeitragVerfasst am: Mi 19.März 2008 19:21:54    Titel: Bauteile finden Antworten mit Zitat

Bestellung ist gestern abend raus - so günstig wie möglich...

Aber wie lange braucht Pollin zum liefern? Wann könnte es da sein *ungeduldig wartend*

Gruß Rainer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
gerold



Anmeldungsdatum: 27.07.2007
Beiträge: 927
Wohnort: Oberhofen im Inntal (Tirol)

BeitragVerfasst am: Mi 19.März 2008 21:29:52    Titel: UART - RS-232 - vom µC zum Computer Bauteile finden Antworten mit Zitat

Hallo!

Ich habe an diesem Beitrag nicht durchgehend gearbeitet. Deshalb kann es sein, dass er evt. ein wenig auseinandergerissen wirkt. Hoffentlich bringe ich kein zu großes Kuddelmuddel rein. Smile

14.400 * 2 = 28.800
28.800 * 2 = 57.600
57.600 * 2 = 115.200
115.200 * 2 = 230.400
230.400 * 2 = 460.800
460.800 * 2 = 921.600
921.600 * 2 = 1.843.200
1.843.200 * 2 = 3.686.400
3.686.400 * 2 = 7.372.800
7.372.800 * 2 = 14.745.600

Du wirst dir jetzt vielleicht denken, dass der Gerold ausgeflippt ist und nicht mehr weiß wie er diesen Beitrag mit Content füllen soll. Smile Aber vielleicht kommen dir die fett geschriebenen Zahlen an der linken Seite bekannt vor. Es sind mögliche Geschwindigkeiten für COM-Verbindungen (auch RS-232 oder "Serielle Schnittstelle" genannt).



Auf der rechten Seite stehen, fett markiert, die möglichen Quarz-Frequenzen die idealerweise dafür verwendet werden, um genau diese Baudraten zu erreichen. Einzig durch das Teilen der Frequenz kommt man auf eine dieser Baudraten.

Die Geschwindigkeit von COM-Verbindungen gibt man in Bit/Sekunde oder Baud an. 14.400 Baud bedeutet, dass 14.400 Bit/Sekunden über die Leitung übertragen werden. Bei den üblichen Standardeinstellungen braucht man zum Übertragen von 8 Bit (1 Byte) genau 10 Bit. Es kommt ein Start-Bit und ein Stop-Bit dazu. Bei einer Geschwindigkeit von 14.400 Baud werden also 1.440 Byte die Sekunde über die Leitung gejagt. Bei einer Baudrate von 115.200 werden 11.520 Byte die Sekunde übermittelt.

So, jetzt habe ich genug wirres Zeug geschrieben. Wink Es geht in diesem Beitrag darum, wie man Daten vom µC zum Computer übertragen kann. Als einfachste Möglichkeit steht auf dem Computer die RS-232-Schnittstelle zur Verfügung. Und viele der AVR-µController haben UART und USART eingebaut. UART steht für "Universal Asynchronous Receiver Transmitter" und USART steht für "Universal Synchronous/Asynchronous Receiver Transmitter". Das ist genau das was wir brauchen um uns über die RS-232-Schnittstelle mit dem Computer zu unterhalten. Siehe Wikipedia: http://de.wikipedia.org/wiki/UART

Ein Datenbyte wird verpackt: Zuerst kommt ein Startbit. Dann die Datenbits und optional ein Bit für die Parität (sehr selten) mit dazu. Zum Abschluss kommt noch ein Stopbit dran. So, oder ein wenig abgeändert, werden die Datenbits über die Leitung verschickt. Am anderen Ende werden die Datenbits wieder ausgepackt. Damit sich beide Gegenstellen verstehen, müssen sie sich an die ausgemachte Geschwindigkeit halten. Es nützt nichts, wenn eine Seite die Daten mit 115.200 Baud über die Leitung schickt wenn die andere Seite die Daten mit der Baudrate 4.800 erwartet. Da der Takt nicht über eine zusätzliche Leitung geschickt wird, bleiben beiden Seiten nur die Quarze um die Geschwindigkeit der Datenübertragung genau einzuhalten.

Der USART ist im ATmega8-Datenblatt das Kapitel "USART" (Seite 130) gewidmet. Dort findet man genaue Angaben zu den möglichen Frame-Formaten (die Verpackung der Daten) und natürlich auch die optimalen Frequenzen für den µC. Die Baudrate sollte sich aus der Quarz-Frequenz durch einfaches Teilen ermitteln lassen und wenn das nicht möglich ist, höchstens 2% von dieser abweichen.

Die idealen Frequenzen stehen im ATmega8-Datenblatt im Kapitel "Examples of Baud Rate Setting" (Seite 156).

Zusammengefasst - die Frequenzen und damit machbaren Baudraten:

1 Mhz:
0,2% Abweichung: 2.400, 4.800, (9.600 Baud macht evt. Probleme)

1,8432 Mhz:
fehlerfrei: 2.400, 4.800, 9.600, 14.400, 19.200, 28.800, 38.400, 57.600, 76.800, 115.200, 230.400 Baud

2 Mhz:
0,2% Abweichung: 2.400, 4.800, 9.600, 19.200 Baud
fehlerfrei: 250.000 Baud

3,6864 Mhz:
fehlerfrei: 2.400, 4.800, 9.600, 14.400, 19.200, 28.800, 38.400, 57.600, 76.800, 115.200, 230.400 Baud

4 Mhz:
0,2% Abweichung: 2.400, 4.800, 9.600, 38.400 Baud
fehlerfrei: 250.000, 500.000 Baud

7,3728 Mhz:
fehlerfrei: 2.400, 4.800, 9.600, 14.400, 19.200, 28.800, 38.400, 57.600, 76.800, 115.200, 230.400 Baud

8 Mhz:
0,2% Abweichung: 2.400, 4.800, 9.600, 19.200, 38.400, 76.800 Baud
fehlerfrei: 250.000, 500.000, 1.000.000 Baud

11,0592 Mhz:
fehlerfrei: 2.400, 4.800, 9.600, 14.400, 19.200, 28.800, 38.400, 57.600, 76.800, 115.200, 230.400 Baud

14,7456 Mhz:
fehlerfrei: 2.400, 4.800, 9.600, 14.400, 19.200, 28.800, 38.400, 57.600, 76.800, 115.200, 230.400 Baud

16 Mhz:
0,1% bis 0,2% Abweichung: 4.800, 9.600, 14.400, 19.200, 38.400, 76.800 Baud
fehlerfrei: 2.400, 250.000, 500.000, 1.000.000 Baud

18,432 Mhz:
fehlerfrei: 2.400, 4.800, 9.600, 14.400, 19.200, 28.800, 38.400, 57.600, 76.800, 115.200, 230.400 Baud

20 Mhz:
-0,2% bis 0,2% Abweichung: 9.600, 14.400, 19.200, 28.800, 38.400 Baud
fehlerfrei: 2.400, 4.800, 250.000, 500.000 Baud

Wie man sieht, ist 9.600 Baud überall mit dabei. Deshalb verwende ich für zeitunkritische Datenübertragungen gerne 9.600 Baud. Bei 1 MHz sind 4.800 Baud evt. besser geeignet. Erst wenn ich mehr Geschwindigkeit brauche kümmere ich mich um den richtigen Quarz.

Also, jetzt weißt du schon mal, dass die Geschwindigkeit für die Datenübertragung sehr wichtig ist. Jetzt kommt noch ein Fallstrick mit dazu -- die Spannung. Die UART des ATmega8 arbeitet mit der für diesen µC üblichen Spannung. Das ist im Normalfall 5 Volt. Ein LOW entspricht 0 Volt und ein HIGH entspricht 5 Volt. Natürlich kommt das auch auf die verwendete Versorgungsspannung an, aber ich gehe hier der Einfachheit halber immer von 5 Volt aus.

Die in den Computer eingebaute RS-232-Schnittstelle arbeitet nicht mit 0 und 5 Volt, sondern dort üblicherweise mit -12 bis +12 Volt. Genauer gesagt: −3 bis −25 Volt stellen ein HIGH dar und +3 bis +25 Volt stellen ein LOW dar. Es ist also nicht nur ein Spannungsunterschied, sondern auch noch ein Verdrehen von HIGH und LOW. Man setzt deshalb meist einen Pegelwandler (ein IC) zwischen den Computer und den AVR-µController. Oft wird dafür ein MAX232 http://www.alldatasheet.com/view.jsp?Searchword=MAX232 eingesetzt. Das ist ein IC mit 16 Pins der die Spannungen anpasst und gleichzeitig noch invertiert. Auf den meisten Evaluations-Boards ist genau dafür so ein MAX232 mit drauf. Die billigeren MAX232 arbeiten mit vier Elkos und die etwas teureren MAX232-Exemplare arbeiten mit kleineren 100 nF Kondensatoren.

Einfache Verbindungen in beide Richtungen können schon mit drei Leitungen aufgebaut werden. Braucht man nur Daten in eine Richtung zu schicken, genügen sogar schon zwei Leitungen.

Code:
Computer        µC
===================
TX  --------->  RX
RX  <---------  TX
GND ----------  GND

Interessante Seiten zu diesem Thema:
- http://www.sprut.de/electronic/interfaces/rs232/rs232.htm
- http://avrhelp.mcselec.com/index.html?uart.htm
- http://halvar.at/elektronik/rs232/

Bei vielen Programmiersprachen ist es üblich, mit dem Befehl PRINT etwas in eine Konsole zu schreiben bzw. auf dem Bildschirm anzuzeigen. Bei Bascom ist das anders. Ein PRINT gibt nichts in irgendeiner Konsole aus, sondern schickt die Daten über die UART. Wenn man also einen ATmega8 über einen MAX232 mit dem Computer verbindet und im Programm ``PRINT "Hallo"`` schreibt, dann kann man den Text "Hallo" mit jedem beliebigen Terminalprogramm empfangen und anzeigen lassen. Der ATmega8 schickt die Daten über den TXD-Pin (PD1). Dabei wird standardmäßig ein Startbit, ein Stopbit und kein Paritätsbit verwendet. Und üblicherweise werden 8 Datenbits damit verschickt.

Die Geschwindigkeit der Datenübertragung wird im Programm mit ``$baud`` eingestellt. Dieses einfache Programm schickt den Text "Hallo" über die UART und beendet sich danach.

Code:
$regfile = "M8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40
$baud = 9600


Print "Hallo"


End

Da die mit den Fuse-Bits eingestellte Taktfrequenz des ATmega8 bei mir 8 Mhz ist, wird Bascom mit ``$CRYSTAL = 8000000`` auf diese Frequenz hingewiesen. Falls du eine andere Taktfrequenz eingestellt hast, musst du ``$CRYSTAL`` natürlich anpassen. Bascom kann von sich aus nicht feststellen, wie schnell der µC getaktet ist. Aber um die Übertragungsgeschwindigkeit genau einhalten zu können, muss Bascom darüber bescheid wissen.

Mit ``$BAUD = 9600`` gibt man die Übertragungsgeschwindigkeit an. Und das war es auch schon. Mehr ist nicht einzustellen. Ab jetzt wird jeder PRINT-Befehl die Daten über die UART raus schicken. Wenn du bei deinen Tests nur Datenmüll empfängst, dann liegt das zu 99% an einer falschen Einstellung bei $CRYSTAL oder $BAUD.

Als Gegenstelle kann man z.B. das mit Windows mitgelieferte Hyperterminal verwenden. Die Einstellungen, um die Daten vom ATmega8 empfangen zu können, sehen so aus:

- COM1 bis COM4 (je nach verwendeter COM-Schnittstelle)
- Bits pro Sekunde: 9600
- Datenbits: 8
- Parität: Keine
- Stoppbits: 1
- Flusssteuerung: kein



Natürlich kannst du jedes beliebige Terminalprogramm dafür verwenden. Auch das mit Bascom mitgelieferte Terminalprogramm. Dieses lässt sich in Bascom über das Menü "Werkzeuge/Terminal Emulator" aufrufen. Im Terminal-Fenster kommt man über das Menü "Terminal/Settings" zu den Einstellungen. Allerdings ist es nicht sehr zuverlässig. Es ist bei mir schon oft vorgekommen, dass es Daten nicht angezeigt hat, nur weil man vorher den Inhalt des Terminalfensters gelöscht hat. Also wenn du Daten erwartest, diese aber nicht angezeigt kriegst, dann könnte das am in Bascom eingebauten Terminalprogramm liegen. Verwende in diesem Fall ein anderes Terminalprogramm für den Empfang der Daten.

Das war jetzt mal die eine Richtung, vom µC zum Computer. Über die andere Richtung schreibe ich beim nächsten mal. Smile

Diesmal war es sicher ein wenig verwirrend. Gibt es Fragen?

mfg
Gerold
Smile

_________________
http://halvar.at | http://sw3.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.


Zuletzt bearbeitet von gerold am Mi 09.Apr 2008 14:05:40, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
gerold



Anmeldungsdatum: 27.07.2007
Beiträge: 927
Wohnort: Oberhofen im Inntal (Tirol)

BeitragVerfasst am: Do 20.März 2008 08:08:29    Titel: Bauteile finden Antworten mit Zitat

pcprofi hat folgendes geschrieben:
Wann könnte es da sein *ungeduldig wartend*

Cool Very Happy

_________________
http://halvar.at | http://sw3.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
pcprofi



Anmeldungsdatum: 17.02.2008
Beiträge: 1459
Wohnort: Düren

BeitragVerfasst am: Do 20.März 2008 11:45:39    Titel: Bauteile finden Antworten mit Zitat

Soo, der Postbote hatte es heute immernoch nicht dabei Sad

Aaaber: Da wir ja es hier (wie von Gerold schon mal erwähnt) mit Hex und Bin-Formen zu tun haben, viele die aber nicht umrechnen können, habe ich hier mal ein Tool reingestellt das vom Dezimalsystem in Hex und Bin umwandelt... An den anderen Richtungen arbeite ich noch - wird also irgendwann ein Update geben...

Möglich sind die Zahlen -32768 bis 32767 (16Bit-Int) - wobei Binär die Ausgabe im Zweierkomplement (bei negativen Zahlen) erfolgt. Die Hex-Ausgabe im negativen ist die positive Zahl mit einem Minuszeichen davor, da ich im Web nix brauchbares finden konnte wie negative Hex dargestellt werden....

Wenn einer was über die Darstellung weiß --> Delphi geschrieben, kann ich einbauen.

Gruß Rainer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BellaD



Anmeldungsdatum: 03.12.2006
Beiträge: 1708
Wohnort: Klinik der misshandelten Kuscheltiere

BeitragVerfasst am: Do 20.März 2008 17:16:25    Titel: Bauteile finden Antworten mit Zitat

'Wer es nachrechnen möchte, bitte alles rechtsbündig untereinander schreiben ' Wink

Bei 8Bit Zweierkomplement ist das oberste bit das Vorzeichen ,somit sind nur
Zahlenwerte von +127 bis - 128 möglich.
Was ist ein Komplement ?
Darunter versteht man die Ergänzung zur größten gleichstelligen Zahl.
Komplement der Dezimal Zahl 1984 =
A = 1984 (10)
_
A = 9999-1984=8015
mit Binärzahlen
B = 01110101
_
B = 11111111
- 01110101
_
B = 10001010

Sieht man sich das ergebnis der subtraktion an so bemerkt man das das Komplement eine bitweise invertierung der Binärzahl ist.Bei der subtraktion
der Binärzahl zur größten gleichstelligen Zahl erfolgte immer eine Ergänzung zu 1. Deshalb wird B(strich) auch als Einerkomplement der Binärzahl 'B' bezeichnet.Addiert man eine Binärzahl zu ihrem Einerkomplement ,so hat das Ergerbnis immer die Form 11...11.
01110101
+10001010
-------------------
11111111
+ 1
-------------------
100000000 " B+B' +1"
Abgesehen vom Übertrag in die 9te stelle ist das Ergebnis Null.

Somit ist B' +1 eine Darstellungsweise für die negative Binärzahl -B,oder anders : addiert man zu einer beliebigen Binärzahl B ihr Zweierkomplement B'+1, so ist das ergebnis immer null.

Bsp.
2 Binärzahlen unterschiedlicher länge sollen voneinander abgezogen werden: 01110111 - 0111 = ?
Erstmal beide Zahlen auf gleiche länge bringen indem die höherwertigen stellen mit nullen ergänzt werden.
Dann wird das zweierkomplement der mit dem minuszeichen versehenen Binärzahl gebildet.
00000111 (Binärzahl)
11111000 (Einerkomplement)
+ 1
-----------------------------------
11111001 (Zweierkomplement)
====================
Jetzt addieren wir das Zweierkomplement der mit dem minuszeichen versehenen Binärzahl zur ersten positiven Binärzahl:
01110111
+11111001
-----------------
101110000

Der übertrag in die 9te stelle bleibt unberücksichtigt - das ergebnis lautet
01110000
==========


Embarassed ich glaub ich höre jetzt erstmal auf ' verwirrt lachend '

_________________
Eine Weiterverbreitung ohne ausdrückliche Genehmigung ist untersagt. Für Schäden, lehnen wir jegliche Haftung ab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BellaD



Anmeldungsdatum: 03.12.2006
Beiträge: 1708
Wohnort: Klinik der misshandelten Kuscheltiere

BeitragVerfasst am: Fr 21.März 2008 11:59:07    Titel: Bauteile finden Antworten mit Zitat

Moin

hab auch noch was gefunden , Hex-Dez-Bin Rechner , ist in VB6 geschrieben,
ich stell mal nur die .exe hier rein, sollte eigentlich bei den meisten gehen da keine besonderen sachen wie ocx und anderes benutzt wurden- wenn nicht dann muss ich mal das ganze incl. setup hochladen . Also Feedback ist erwünscht !




Rolling Eyes kann aber auch keine negativen hexzahlen Rolling Eyes

Die Grundlagen gibts als Standard Basic auf http://www.bellibot.com/seite5.php - ganz am ende der Seite Wink

_________________
Eine Weiterverbreitung ohne ausdrückliche Genehmigung ist untersagt. Für Schäden, lehnen wir jegliche Haftung ab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
gerold



Anmeldungsdatum: 27.07.2007
Beiträge: 927
Wohnort: Oberhofen im Inntal (Tirol)

BeitragVerfasst am: Fr 21.März 2008 12:25:49    Titel: Bauteile finden Antworten mit Zitat

Hallo!

Das wirft irgendwie ein falsches Bild auf diese kleine Einführung. Wir werden nicht mit Binär oder Hex rechnen. Die Binärdarstellung ist einfach nur intuitiver als die Hexdarstellung um auf die I/O-Pins der µC zuzugreifen.

Alle drei Befehle bewirken das Gleiche.
Code:
DDRD = &B00010110
DDRD = &H16
DDRD = 22


Bei der Binärdarstellung weiß ich sofort, dass die Pins PD1, PD2 und PD4 als Ausgänge konfiguriert wurden. Man zählt von rechts nach links, beginnend mit 0. Das erste Bit stellt PD0 dar. Das zweite Bit stellt PD1 dar...
Aus den Hex- und Dezimalzahlen geht das nicht sofort hervor.

Ich werde später mal darauf eingehen, wie man eines der acht Bits auf 1 oder 0 ändern kann, ohne alle anderen Bits zu kennen. Aber das war es schon. Mehr werden wir selten brauchen.

Dieser Kurs soll ja weiterhin so einfach wie möglich und nur so detailliert wie notwendig bleiben. Man kann öfter mal etwas durch komplizierteres Programmieren optimieren. Aber falls ich entscheiden muss zwischen kompliziertem Code oder einem etwas besseren µC, dann werde ich meist den besseren µC wählen. Damit hat man Reserven für spätere Weiterentwicklungen und sauberen Code der sich weiterentwickeln lässt.

mfg
Gerold
Smile

_________________
http://halvar.at | http://sw3.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
gerold



Anmeldungsdatum: 27.07.2007
Beiträge: 927
Wohnort: Oberhofen im Inntal (Tirol)

BeitragVerfasst am: Fr 21.März 2008 16:08:36    Titel: RS232 - MAX232 - ATmega8 (über Nullmodemkabel) Bauteile finden Antworten mit Zitat

Hallo!

Passend zum Beitrag über die Datenübertragung per UART, habe ich mich wieder mal am Schaltplanzeichnen versucht.

Dieser Schaltplan zeigt, wie man den MAX232 an den ATmega8 über ein Nullmodemkabel anschließen kann.


http://halvar.at/elektronik/avr/rs232_max232_atmega8_nullmodem_v04.zip

mfg
Gerold
Smile

Stichworte: RS-232, Nullmodem Nullmodemkabel, gekreuztes Kabel

_________________
http://halvar.at | http://sw3.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.


Zuletzt bearbeitet von gerold am Fr 21.März 2008 19:33:46, insgesamt 3-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
BellaD



Anmeldungsdatum: 03.12.2006
Beiträge: 1708
Wohnort: Klinik der misshandelten Kuscheltiere

BeitragVerfasst am: Fr 21.März 2008 18:15:16    Titel: Bauteile finden Antworten mit Zitat

Exclamation Hinweis Exclamation

Bei STK 500 ,Arduino , STK200 usw. normalerweise kein Nullmodemkabel erforderlich .
Die richtige Beschaltung rxd/txd erfolgt in der Zielapplikation.

_________________
Eine Weiterverbreitung ohne ausdrückliche Genehmigung ist untersagt. Für Schäden, lehnen wir jegliche Haftung ab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
gerold



Anmeldungsdatum: 27.07.2007
Beiträge: 927
Wohnort: Oberhofen im Inntal (Tirol)

BeitragVerfasst am: Fr 21.März 2008 20:01:23    Titel: Bauteile finden Antworten mit Zitat

BellaD hat folgendes geschrieben:
Bei STK 500 ,Arduino , STK200 usw.

Hallo BellaD!

Vielen Dank! Wie ich jetzt feststellen konnte, ist auch beim "Pollin Evaluationsboard" eine D-Sub Buchse (weiblich) drauf und für den Anschluss über ein normales 1 zu 1 Kabel gedacht. Man braucht für den Anschluss des Pollin Evaluationsboard also kein Nullmodemkabel, wie irrtümlich von mir angenommen, sondern ein normales 1 zu 1 D-Sub 9 Kabel mit einer Buchse (weiblich) und einem Stecker (männlich).

Und hier ein möglicher Anschlussplan für "ohne Nullmodemkabel". Smile



mfg
Gerold
Smile

_________________
http://halvar.at | http://sw3.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
gerold



Anmeldungsdatum: 27.07.2007
Beiträge: 927
Wohnort: Oberhofen im Inntal (Tirol)

BeitragVerfasst am: Sa 22.März 2008 15:18:57    Titel: UART - RS-232 - vom Computer zum µC Bauteile finden Antworten mit Zitat

Hallo!

Die Kommunikation über die UART ist ziemlich nützlich und vielseitig. Damit kann der µC Daten zum Computer oder an andere µC schicken und empfangen. Bascom stellt dafür mehrere Befehle bereit auf die ich in diesem Beitrag näher eingehen möchte. Der ATmega8 besitzt eine eingebaute Hardware-UART-Schnittstelle. Man kann UART aber auch per Software nachbilden. Das ist zwar nicht mehr so schnell wie die Hardware-UART, aber immerhin kann man damit gleichzeitig Verbindung zu mehreren Gegenstellen aufnehmen. Wenn man nichts besonderes einstellt, dann verwendet Bascom die Hardware-UART.

$baud:
Damit stellt man die gewünschte Übertragungsgeschwindigkeit ein. Diese ist von der Frequenz abhängig, mit der der µC getaktet wird. Diese muss Bascom mit ``$crystal`` bekannt gegeben werden. Beispiel:
Code:
$baud = 9600

Bascom Hilfe zu diesem Befehl: http://avrhelp.mcselec.com/index.html?baud_1.htm

PRINT:
Dieser Befehl sendet eine Zeichenfolge (einen Text) über die UART. Mehrere Zeichenfolgen können mit einem Strichpunkt (;) getrennt werden. An diese Zeichenfolge werden autmatisch die unsichtbaren Zeichen CARRIAGE RETURN (CR) und LINEFEED (LF) angehängt. Diese unsichtbaren Zeichen kennzeichnen einen Zeilenumbruch. Möchte man nicht, dass diese unsichtbaren Zeichen angehängt werden, dann muss der PRINT-Befehl mit einem Strichpunkt (;) abgeschlossen werden. Wird an PRINT eine Zahl übergeben, dann wird diese in einen Text umgewandelt. Es wird also nicht die Zahl übermittelt, sondern der ASCII-Code dafür. Die Zahl 123 besteht aus den drei Zeichen "1", "2" und "3". Es werden die drei ASCII-Codes für die Zeichen "1", "2" und "3" und die ASCII-Codes der beiden unsichtbaren Zeichen CR und LF übertragen.

Dieser Code
Code:
PRINT "Hallo Welt!"

übermittelt die Zeichenfolge "Hallo Welt!" und fügt die unsichtbaren Zeichen CR und LF an. Das sieht in einem normalen Terminalprogramm so aus:
Code:
Hallo Welt!

Analysiert man aber die übermittelten Daten, dann sieht man, dass für jedes Zeichen der ASCII-Code übermittelt wurde. Hier der Dezimal- und Hex-Code der übermittelten Zeichen:
Code:
Dezimal: 72  97 108 108 111  32  87 101 108 116  33  13  10
Hex:     48  61  6C  6C  6F  20  57  65  6C  74  21  0D  0A
Text:    H   a   l   l   o       W   e   l   t   !   CR  LF

Wenn man diese Codes mit einer ASCII-Tabelle vergleicht, dann erkennt man die Zusammenhänge.

Dieser Code
Code:
PRINT 1

übermittelt das Zeichen "1" und nicht die Zahl 1. In einem normalen Terminalprogramm wird also das Zeichen "1" angezeigt. Analysiert man was wirklich übermittelt wird, dann sieht das so aus:
Code:
Dezimal: 49 13 10
Hex:     31 0D 0A
Text:    1  CR LF

Will man die Zahl 1 ohne Umwandlung in ein Zeichen übermitteln, dann nimmt man dafür den Befehl PRINTBIN.

Bascom Hilfe zu diesem Befehl: http://avrhelp.mcselec.com/index.html?print.htm

PRINTBIN:
Mit PRINTBIN werden die Daten, ohne Umwandlung in einen Text, übermittelt. Folgender Befehl übermittelt wirklich die Zahl 1:
Code:
PRINTBIN 1

Analysiert man das was an den Computer gesendet wurde, dann sieht das so aus:
Code:
Dezimal: 1
Hex:     01
Text:    <unsichtbar>

So können reine Daten, ohne umwandeln, übermittelt werden. Diese lassen sich aber dafür nicht mehr in einem normalen Terminalprogramm anzeigen. Dafür bräuchte man einen Anzeigemodus der die empfangenen Daten in Hex oder Dezimal anzeigt.

Bascom Hilfe zu diesem Befehl: http://avrhelp.mcselec.com/index.html?printbin.htm

INPUT:
Der Befehl INPUT erwartet eine Zeichenfolge von der UART und schreibt diese in eine Variable. INPUT wartet so lange auf die Zeichenfolge bis CARRIAGE RETURN (CR) übermittelt wurde. Das Programm bleibt also stehen, bis CR über die UART rein kommt. Das ist ideal, wenn das Programm in der MainLoop nur kommuniziert. Es ist nicht ideal, wenn in der MainLoop auch noch andere Dinge erledigt werden sollten. Dafür gibt es andere Befehle wie INKEY oder ISCHARWAITING. Außerdem gibt es sogar die Möglichkeit, einen Interrupt auslösen zu lassen, wenn eine Zeichenfolge angekommen ist.

Dieses Beispiel wartet bis eine mit CR abgeschlossene Zeichenfolge übermittelt wurde und schickt diese über die UART zurück.
Code:
Dim Empfangen As String * 20

Do
   Input Empfangen
   Print "Empfangen: " ; Empfangen
Loop

End

Mit CONFIG INPUT kann man einstellen, welches unsichtbare Zeichen oder welche unsichtbare Zeichenfolge einen Empfang abschließt. Und mit ECHO OFF kann man einstellen, dass in ein Terminal eingegebene Zeichen nicht sofort wieder zurück geschickt werden.

Bascom Hilfe zu diesem Befehl: http://avrhelp.mcselec.com/index.html?input.htm

INPUTBIN:
Bei diesem Befehl wartet Bascom auf Binärdaten. Es wartet also nicht auf Text, wie es INPUT macht, sondern auf reine Daten. An diesen Befehl wird als Argument eine Variable übergeben. INPUTBIN stoppt das Programm so lange, bis diese Variable befüllt wurde. Wird also eine BYTE-Variable übergeben, dann genügt ein Byte und das Programm läuft weiter. Wird eine WORD-Variable übergeben, dann wartet INPUTBIN bis zwei Byte (=WORD) übergeben wurden. Beispiel:
Code:
Dim My_word_var As Word

Do
   Inputbin My_word_var
   Printbin My_word_var
Loop

End

Bascom Hilfe zu diesem Befehl: http://avrhelp.mcselec.com/index.html?inputbin.htm

WAITKEY:
Dieser Befehl wartet bis ein Zeichen über die UART zum µC übertragen wurde und gibt dieses zurück. WAITKEY blockiert so lange bis ein Zeichen übermittelt wurde. Wird eine BYTE-Variable damit befüllt, dann steht in der BYTE-Variable der ASCII-Code des übermittelten Zeichens. Wird eine STRING-Variable befüllt, dann weiß Bascom, dass der übermittelte ASCII-CODE ein Textzeichen ist und gibt dieses bei PRINT als solches zurück. Beispiel:
Code:
Dim My_byte As Byte
Dim My_string As String * 1

Do
   My_byte = Waitkey()
   Print "Empfangen: " ; My_byte       'Gibt den ASCII-Code des Zeichens zurück

   My_string = Waitkey()
   Print "Empfangen: " ; My_string       'Gibt den Text zurück
Loop

End

Bascom Hilfe zu diesem Befehl: http://avrhelp.mcselec.com/index.html?waitkey.htm

INKEY:
Wenn ein Zeichen im zwei Byte großen UART-Buffer steht, dann gibt INKEY ein Zeichen zurück. Steht nichts mehr im UART-Buffer, dann gibt INKEY die Zahl 0 zurück. INKEY bleibt also nicht stehen wie es bei WAITKEY der Fall ist. Das ist oft eine feine Sache, aber nicht ideal wenn in den zu übermittelnden Daten auch mal ein Nullbyte vorkommen kann. In so einem Fall sollte man vorher mit ISCHARWAITING prüfen ob etwas im UART-Buffer steht. Beispiel:
Code:
Dim My_string As String * 1

Do
   My_string = Inkey()
   If My_string <> Chr(0) Then
      Print "Empfangen: " ; My_string
   End If
Loop

oder so:
Code:
Dim My_string As String * 1

Do
   If Ischarwaiting() = 1 Then
      My_string = Inkey()
      Print "Empfangen: " ; My_string
   End If
Loop

Bascom Hilfe zu diesem Befehl: http://avrhelp.mcselec.com/index.html?inkey.htm

ISCHARWAITING:
ISCHARWAITING gibt 1 zurück, wenn im UART-Buffer ein Zeichen wartet. ISCHARWAITING gibt 0 zurück, wenn kein Zeichen im UART-Buffer wartet. Beispiel: siehe INKEY

Bascom Hilfe zu diesem Befehl: http://avrhelp.mcselec.com/index.html?ischarwaiting.htm

ECHO:
Die Einstellung ECHO ON gibt an, dass vom Befehl INPUT sofort nach dem Empfang eines Zeichens, dieses Zeichen zurück geschickt werden soll. Das ist die Standardeinstellung!
Die Einstellung ECHO OFF gibt an, dass nichts zurück geschickt werden soll.

Bascom Hilfe zu diesem Befehl: http://avrhelp.mcselec.com/index.html?echo.htm


Es gibt noch weitere Befehle zum Arbeiten mit der UART. Die Befehle CONFIG SERIALIN und CONFIG SERIALOUT werde ich im nächsten Beitrag vorstellen.

mfg
Gerold
:-)

_________________
http://halvar.at | http://sw3.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.


Zuletzt bearbeitet von gerold am Mi 26.März 2008 18:06:56, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Christopher



Anmeldungsdatum: 11.10.2006
Beiträge: 98

BeitragVerfasst am: Mo 24.März 2008 14:10:51    Titel: Bauteile finden Antworten mit Zitat

Hi,
schöne Sache mit dem Einsteiger Tutorial Very Happy
Eine kleine Anmerkung zum Anschlussplan:
Aref braucht man auch bei vielen Sachen, man sollte zwischen AREF und GND einen 100nF Kerko machen, viele legen AREF direkt an Vcc aber das ist denk ich, so weit ich das Datenblatt verstanden habe, falsch.
Wie machst du das?
Mach weiter so Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Anzeige






Verfasst am: Heute 21:36:14    Titel: Bauteile finden

Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> Microcontroller und DSP Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3, 4, 5 ... 18, 19, 20  Weiter
Seite 4 von 20

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen


Powered by phpBB 2.x © 2001, 2002 phpBB Group

Sie sind Besucher Nr. 1200979
©opyright by Markus Vohburger 2005 All Rights reserved