will 2 at89s52 per uart in Master Slave betreiben finde nur keine genauen Aufzeichnungen. Wie das genau funktioniert wie sieht die Initialisierung der seriellen Schnittstelle aus, welch bits muss ich zum Senden und empfangen setzen und wie gebe ich einen Controller eine Adresse, wenn einer ein Beispiel Programm in Assembler hätte würde mir das weiter helfen .Wie verbinde ich die Controller einfach txd und rxd direkt miteinander verbinden oder brauche ich dazu 2 max 232e.
Hi Dennis, der MS-Betrieb über UART ist doch im Datenblatt bzw. Referenzhandbuch eines jeden 8052 beschrieben, weil es eine Betriebsart des UARTs ist - schau mal in diese Unterlagen rein. Und nein, du brauchst keinen MAX232 o.ä. wenn a) beide Controller die gleichen Spannungspegel an den IOs haben (also 3.3V oder 5V) und wenn b) beide Controller relativ nah beieinander sind (100m mit den o.g. Pegeln wird nicht gehen). Ralf
Tja zum glück war ich noch nie in einer Vorlesung da würde ich wahrscheinlich auch einschlafen. Danke Ralf für die Info da steht auch einiges bis ich das jedoch verstanden habe das kann dauern um einen Controller eine Adresse zu geben braucht man das SADEN und einem SADDER Register wo sind die. Im SFR Register kann ich sie nicht finden die speicherplatzadresse ist offen. Dann brauche ich noch das SCON Register und das SBUF Register fragt sich nur wie man das jetzt genau macht. hat vielleicht jemand sowas schon mal gemacht ein anhand eines Beispiel Programms würde ich es am ehesten verstehen.
Dennis Röckemann (cabal8051) schrieb: > Tja zum glück war ich noch nie in einer Vorlesung da würde ich > wahrscheinlich auch einschlafen. Danke Ralf für die Info da steht auch > einiges bis ich das jedoch verstanden habe das kann dauern um einen > Controller eine Adresse zu geben braucht man das SADEN und einem SADDER > Register wo sind die. Im SFR Register kann ich sie nicht finden die > speicherplatzadresse ist offen. Dann brauche ich noch das SCON Register > und das SBUF Register fragt sich nur wie man das jetzt genau macht. hat > vielleicht jemand sowas schon mal gemacht ein anhand eines Beispiel > Programms würde ich es am ehesten verstehen. achso is das keine ahnung haben aber überheblich sein ... schau zu wie du dein zeug gebacken kriegst .. aber erwarte dir keine Hilfe von studierten Leuten die Ahnung haben... stirb dumm!
Dennis Röckemann (cabal8051) schrieb: > hat > vielleicht jemand sowas schon mal gemacht ein anhand eines Beispiel > Programms würde ich es am ehesten verstehen. oder kopieren. ;-) War vielleicht noch in den 90er Raketentechnologie. Die magischen Worte sind "8051 multiprocessor communication" für die Suchmaschine, die nicht genannt werden soll.
Für 2 Teilnehmer brauchst Du kein Master/Slave. Der eine empfängt, was der andere sendet. Kann auch gleichzeitig erfolgen, sind ja 2 getrennte Leitungen. Einfach RXD/TXD über Kreuz verbinden.
Dennis Röckemann (cabal8051) schrieb: > SADEN und einem SADDER Register wo sind die Beim AT89S52 wirst Du die vermutlich nicht finden, aber bei einem Silabs C8051F120 gibt es sowas in der Richtung.
Düsentrieb schrieb: > Dennis Röckemann (cabal8051) schrieb: >> Tja zum glück war ich noch nie in einer Vorlesung da würde ich >> wahrscheinlich auch einschlafen. Danke Ralf für die Info da steht auch >> einiges bis ich das jedoch verstanden habe das kann dauern um einen >> Controller eine Adresse zu geben braucht man das SADEN und einem SADDER >> Register wo sind die. Im SFR Register kann ich sie nicht finden die >> speicherplatzadresse ist offen. Dann brauche ich noch das SCON Register >> und das SBUF Register fragt sich nur wie man das jetzt genau macht. hat >> vielleicht jemand sowas schon mal gemacht ein anhand eines Beispiel >> Programms würde ich es am ehesten verstehen. > > achso is das keine ahnung haben aber überheblich sein ... > schau zu wie du dein zeug gebacken kriegst .. aber erwarte dir keine > Hilfe von studierten Leuten die Ahnung haben... stirb dumm! Herr Düsentrieb das hat nichts mit überheblich zu tun. Ich habe meinen Techniker neben der Arbeit gemacht dual da gab es keine Vorlesungen. aber wenn der Lehrer längere Vorträge gehalten hat ohne das man selbst irgendwas machen kann hatte ich immer Probleme nicht einzuschlafen.
noreply schrieb: > Dennis Röckemann (cabal8051) schrieb: >> hat >> vielleicht jemand sowas schon mal gemacht ein anhand eines Beispiel >> Programms würde ich es am ehesten verstehen. > > oder kopieren. ;-) War vielleicht noch in den 90er Raketentechnologie. > Die magischen Worte sind "8051 multiprocessor communication" für die > Suchmaschine, die nicht genannt werden soll. oh man was soll das alles wir sind in der Techniker Schule halt nur bis zu den Timmer gekommen. Ich habe noch nie mit einer Seriellen Schnittstelle gearbeitet manche Sachen muss man halt lernen und mit einen Beispielprogramm geht das am besten. Sowas nennt man auch Lernprozess hat euer Lehrer nie irgendwas vorgerechnet oder dir mit einen Beispiel geholfen damit du es verstehst ???
Peter Dannegger und Jim Meba danke für eure Hilfe wenn ich das SADEN und das SADDER register nicht habe. Dan versteh ich nicht warum ich das in den Atmel 8051 Microcontrollers Hardware Manual finde das heißt die brauch ich nicht ?
Es gibt von Atmel verschiedene 8051-Derivate. Soweit ich es überblicke haben die "single cycle cores" (bei denen ein Takt einem Maschinenzyklus entspricht) die Register für die automatische Adresserkennung implementiert. Die Standard 8051er von Atmel (bei denen ein Maschinenzyklus 12 Takten entspricht), zu denen dein 89S52 gehört, haben sie nicht. Wenn diese Register vorhanden sind, dann kann die Hardware für dich überprüfen, ob eine empfangene Adresse der eigenen Adresse entspricht. Wenn die Register nicht vorhanden sind, dann musst du in der UART Interupt-Routine selbst die Adresse (per Software) vergleichen und entscheiden, ob sich der Prozessor angesprochen fühlt oder nicht. Wie Peter schon gesagt hat: diese Möglichkeiten der Multiprozessorkommunikation ("Master Slave") lohnen sich eigentlich erst, wenn mehrere Controller als "Slave" von einem "Master" angesteuert und unterschieden werden sollen. Für zwei Controller, die direkt miteinander verbunden sind, bringt dieser Adressierungsmechanismus keinen Nutzen.
Hallo Dennis, diese uralten 8051 Controller werden eigentlich nur noch von irgendwelchen Lehren benutzt die ihre Vorlesungen nicht mehr aus etwas Neues umstellen wollen. Daher liegt bei so einem Controller immer die Vermutung nahe, dass es sich um Hausaufgaben handelt. Schreib doch mal warum es der 8051 sein muss, obwohl es den Mega88 viele günstiger und mit wesentlich besserer Unterstützung anhand von Beispielprogrammen gibt. Axel
der at89s52 kostet 1 Euro er ist neuer als der at89c51 und der braucht drei Maschinen Zyklen deshalb denke ich eigentlich das er keine 12 braucht weiß es aber nicht. Ich mach auch keine Hausaufgaben ich bin mit meinen Techniker fertig will was bauen und da reicht einer nicht da brauche ich 2 oder später auch mal 3. Ich verwende diesen controller weil ich mit dem atmega Assembler nicht zurechtkomme. Wie verbindet man da Bits miteinander oder geht das nicht Beispiel Programm Taster:
1 | port1 equ 20h |
2 | |
3 | sein equ port1.0 |
4 | saus equ port1.1 |
5 | stest equ port1.2 |
6 | |
7 | port2 equ 21h |
8 | an equ port2.0 |
9 | san equ port2.1 |
10 | sau equ port2.2 |
11 | see equ port2.3 |
12 | |
13 | merker equ 22h |
14 | |
15 | Initalisierung: |
16 | |
17 | mov p2,#0000000b |
18 | |
19 | Hauptprogramm: |
20 | |
21 | mov port1,p1 |
22 | |
23 | mov c,sein |
24 | anl c,/an |
25 | anl c,/merker.5 |
26 | mov san,c |
27 | |
28 | mov c,sein |
29 | anl c,an |
30 | anl c,/merker.5 |
31 | mov sau,c |
32 | |
33 | mov c,san |
34 | orl c,an |
35 | mov see,c |
36 | |
37 | mov c,see |
38 | anl c,/sau |
39 | anl c,saus |
40 | mov an,c |
41 | |
42 | mov c,sein |
43 | anl c,saus |
44 | mov merker.5,c |
45 | |
46 | mov p2,port2 |
47 | jmp Hauptprogramm |
48 | end |
Mit dem atmega habe ich das auch schon geschrieben das ist um einiges länger und komplizierter außerdem gibt es neu 8051 controller die 100 mips und mehr schaffen mit neuen Funktionen usw.
:
Bearbeitet durch User
Hi Dennis, auch wenn du das folgende nicht hören möchtest und es Dir bei Deinem Problem auch nicht hilft: Schau dir mal C Programmierung an. Das braucht auch nur eine Woche Einarbeitungszeit. Mit ein paar Beispielen vielleicht noch weniger. Dann bist Du den Controller-Typ so halbwegs los. Das Programm was Du da gepostet hast kannst du aus C compiliert etliche male in einem Mega88 unterbringen und merkst noch immer nichts von der Abarbeitungszeit des Programms. Bei fast allen Hobby-Programmen kommt es nicht auf die Millisekunde an Wenn Du mal zu wenig IO Pins hast, nimmt man dann hat einen mit mehr Pins und fertig.
Hier http://nptel.ac.in/courses/Webcourse-contents/IIT-KANPUR/microcontrollers/micro/ui/Course_home2_12.htm findest du eine kurze Beschreibung, wie man Master Slave Betrieb mit den "normalen" MCS51 machen kann.
erst mal danke für die Tipps und den link naja c hab ich mir schon mal ein bisschen angekuckt. Aber ich denke für Steuerung aufgaben ist Assembler besser geeignet obwohl ich das natürlich schlecht beurteilen kann wenn ich die Sprache nicht richtig kenne. Wenn ich ein multiprocessor System aufbaue können die arbeiten und die ressourcen aufgeteilt werden und ich habe mehr IO deshalb das angestrebte multiprocessor System. Die IO kann ich auch zusätzlich durch multiplexen und schieberegistern erhöhen was ich zum teil auch vorhabe. Habe jetzt selbst mal versucht ein Programm für einen Master zu schreiben weiß nicht ob man das so machen kann es werden ja 11 bits übertragen aber ins SBUF passen nur 8 oder ? Kann mir jemand sagen ob man das so machen kann oder was daran falsch ist. Weiß auch nicht wie ich dem Slave eine Adresse geben soll oder vergleich ich nur das addresbyte nur mit einer zahl? hier das Programm sein equ port1.0 org 0000h ;Programmstart des Assemblers org 0023h ;;;;empfangen mov R1,SBUF clr,RI setb SMOD2 reti Initalisierung: clr RI clr TI mov PCON,#10000000b mov SCON,#10110000b setb BD setb EAL setb ES mov p2,#0000000b Hauptprogramm: mov port0,p0 ;;;;;;;;;senden sett: jnb sein,nichts mov SBUF,#10101111b :sende adressbyte setb TB8 jnb TI,sett clr TI clr TB8 sett2 mov SBUF,#11111111b :sende datenbyte jnb TB8,sett2 clr TI sett3 mov SBUF,#11111111b :sende datenbyte jnb TB8,sett3 nichts: mov A,R1 mov p2,A jmp Hauptprogramm end
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.