hallo,
ich will mit 10 schaltern und wenig steuerleitungen 10 Leds anschalten
.. problem ich stehe am anfang ...
ich dachte an sowas..
1
ldi r16, 0b00000000
2
out DDRB, r16
3
4
main:
5
in r16, PINB
6
sbrs r16, 3
7
rjmp main
8
rjmp daten1
9
10
daten1:
11
sbi PORTC, 0
12
cbi PORTC, 1
13
sbi PORTC, 2
14
cbi PORTC, 3
15
sbi PORTC, 4
16
rjmp main
sind dann 5 leitungen dann einem 2ten µC beibringen.. das er schalten
soll wenn
PORTC, 0
PORTC, 2
PORTC, 4
am eingang high sind
geht sowas ? oder sollte ich das ganze ganz anders angehen ????
Hm, irgendwas will er damit sagen, nur was. Also wenn ich mit 10
Schaltern 10 LEDs ein- und ausschalten will, hm, also mir würde da auch
eine Lösung ohne Mikrocontroller einfalen...
Also wenn ich länger drüber nachdenke: meinst du, dass du 10 Schalter
hast, die an einem µC angeschlossen sind, dieser ist (über eine
vielleicht größere Entfernung) mit einem anderen µC verbunden, und an
diesem anderen µC hängen die 10 LEDs. Und für die Verbindung willst du
möglichst wenige Leitungen, ja? Also wenn das so ist musst du die
Steuerbefehle seriell übermitteln, also nacheinander. Die einfachste
Lösung wäre mit einer Ader möglich. Nimm einen Timer (siehe Datenblatt
des µC) der dir beispielsweise jede Millisekunde ein Interrupt
generiert. Jetzt wartest du, bis ein Schalter geschaltet wurde, und
setzt den Pin, der zum zweiten µC geht auf HIGH und startest den Timer.
Damit weiß der zweite µC, dass es jetzt los geht. Jetzt startet dieser
auch einen Timer, auch wieder mit einer Millisekunde Wartezeit. Und nun
gibst du pro Millisekunde im ersten µC einen Zustand eines Schalters
aus. Angenommen Schalter 1 ist ein, Schalter 2 aus und Schalter 3 wieder
ein. Dann gibst du im ersten Interrupt HIGH, im Zweiten LOW und im
Dritten wieder HIGH aus. Das für alle 10 Schalter, und am Ende die
Leitung wieder auf LOW setzen. Der zweite µC ließt währenddessen nach
jeder Millisekunde den Zustand des Pins ein, und setzt die entsprechende
LED. Im Endeffekt hast du somit 12 Bits übertragen (ein Startbit, 10
Datenbits, ein Stopbit).
Randy N. wrote:
> Also wenn ich länger drüber nachdenke: meinst du, dass du 10 Schalter> hast, die an einem µC angeschlossen sind, dieser ist (über eine> vielleicht größere Entfernung) mit einem anderen µC verbunden, und an> diesem anderen µC hängen die 10 LEDs. Und für die Verbindung willst du> möglichst wenige Leitungen, ja? Also wenn das so ist musst du die> Steuerbefehle seriell übermitteln, also nacheinander. Die einfachste> Lösung wäre mit einer Ader möglich.
Ich würde der Konfusion des Fragestellers auch diesen Inhalt geben,
damits einen Sinn macht.
Wenn dem so ist:
Nimm einfach die UART, also einen Draht.
Bei Tastendruck wird ein Code gesendet, z.B. 1..10, bei Loslassen ein
anderer, z.B. 11..20.
Oder es werden einfach zyklisch alle 10 Codes gesendet.
Der Empfänger setzt oder löscht die Portpins entsprechend, fertig.
Peter
wenn ich das richtig verstanden habe ...
tastet sozusagen der erste µF die zustände an den 10Pins ab
ON OFF OFF ON OFF ON OFF ON ON ON
WIRD zu mehr oder weniger zu Paket "startbit>>X 1001010111 X<<stopbit"
der zweite µC zerhackt es und gibts es an den PINS aus.. immer wenn ein
zustand geändert wird wird ein neues paket geschickt
d.h. ich mus noch viel lernen
TIMER INTERUP Startbit stobbit ..
Machs mit der UART, dann brauchst dir um die Timer/Start/Stoppbits keine
so großen sorgen machen, sondern nur wie man die Baudrate richtig
konfiguriert und ein Zeichen ausgibt.
Um das Protokoll von Peter noch zu verfeinern würd ich anfangs die
Tasten mit Buchstaben "durchnummerieren", also a-j
beim Drücken der Taste wird dann der enstprechende Großbuchstabe
ausgegeben, beim Loslassen der Kleinbuchstabe.
Das hat den Vorteil, dass du die serielle Schnittstelle über nen MAX232
an den PC anschließen kannst und mit Hyperterminal o.ä. belauschen
kannso und so gleich im Klartext siehst, was über den Draht geht.
Ich schätze mal in ASM wird man für das "Sende"-Programm wohl um die 100
Befehle brauchen und in C ca. 20-30 Zeilen
Wenn das dann klappt, kannst dich dann um den Empfangsteil kümmern.
Gruß
Roland
ich dachte es wär was einfaches für den anfang wird ja immer
komplizierter...
ich versuchs mit UART soweit ich komme.. wenn was ist kann ich auf euch
zurück kommen ?
100 befehle ich kann gerade mal 0,1% :-)
danke für den wegweiser...
gruß
Gast
Oder versuchs mit I²C! zwei Drahttechnik für kurze Strecken ganz ok!
Allerdings müsstest Du dich in die Materie erst einlesen aber bei der
UART Geschichte musst das ja auch tun ;-)
Hallo Anfänger,
was solls denn jetzt genau werden?
Es gibt ja schon (fast) fertige IC's für so was:
- Schieberegister, z.B CD4014 + CD4094 oder 74HC164 + 74HC595
Mit ein paar Taktgeber/Zähler kommst sogar ohne Controller aus, oder
eben ein Controller + 74HC595 (->Stichwort AVR-Porterweiterung)
- dann gibts noch fertige IC's z.B. HT12E/D, haben allerdings nur 4
Kanäle
oder evtl tut's auch so was:
http://www.pollin.de/shop/detail.php?pg=NQ==&a=Njc5OTgxOTk=
Gruß
Roland
mit so einem schieberegister scheint das auch ganz gut zu gehen man
brauch dan 4 leitungen ... beim UART sind es dann glaub 3 +-Bus ? hab
noch nix gelesen werd ich heute tun...
ich will schon was mit µC machen will bischen was lernen ... kommt zwar
auch irgend wann in der schule mal dran aber das dauert mir zu lange....
dange
gruß
martin