ATMega von "außen" steuern

Gast #1597241
Lesenswert?

Hallo,

Gibt es eine Möglichkeit, dass ein ATMega durch die Pins gesteuert wird, 
also bspw. dass beim Anliegen von 0x00 an Port C "ldi" gespeichert, dann 
Port C auf einen anderen Wert gesetzt wird, z.B. 0x01, und 
schlussendlich wieder geändert wird, z.B. auf 0x10, sodass der Befehl
1
ldi r17, 0x10
ausgeführt wird?
Anderes Beispiel:
An Port C liegt 0x01 an. Es wird der Befehl:
1
NOP
Natürlich könnte man das mit Mehrfachverzweigung, wie im Tutorial 
beschrieben machen, aber bei über 100 Befehlen kann ich mir nicht 
wirklich vorstellen, dass das schnell ist...
Hat jemand eine Idee?
Gast #1597268
Lesenswert?

Mit µCs habe ich noch nicht so viel gemacht. 3-4 kleine "Projekte" 
(Lauflicht, eine Art Eieruhr mit 7 Segmentanzeigen, ...)

@Hc Zimmerer:
Kann man es nicht bspw. so machen:
1
    in r16,PINC
2
vergleich:
3
    cpi r16,1          ;wenn die Eingangspins von
4
    brne zweig_0       ;PINC auf 0b00000001 stehen
5
    nop                ;führe "nop" aus
6
                       ;falls nicht, springe zu zweig_0 und
7
                       ;prüfe auf eine andere bekannte Kombination
8
zweig_0:
9
    ...
Das ist natürlich bei mehr als 100 möglichen Befehlen nicht wirlich 
schnell, daher wollte ich wissen, ob es dafür eine andere Möglichkeit 
gibt.
#1597300
Lesenswert?

Es wird immer noch nicht deutlich, was Du erreichen möchtest.  Was ist 
damit gewonnen, wenn Du einen NOP ausführen lässt?  Dass der geht und 
was der macht, ist bekannt.

Wenn Du einen Befehlsinterpreter aufbauen willst, gibt es bestimmt 
einfachere Befehlssätze als den des AVR.  Es ist auch nicht so, dass Du 
ein Byte anschauen kannst, damit den Befehl hast, und das nächste das 
Argument ist.  Die Bits sind - sowohl die Varianten des Befehls als auch 
die Argumentbits - ineinander verschachtelt.

Und - egal, was für einen Befehlssatz Du Dir sonst ausdenkst - Du wirst 
noch einen Handshake machen müssen.  Einfach mal 8 Bit Daten anlegen und 
danach andere ist ohne einen solchen nicht möglich.  Du musst schon 
sagen, wann die Daten gültig sind und erfahren, wann verarbeitet.  Das 
nur für den (sehr theoretischen) Fall, dass das Ganze wirklich sinnvoll 
ist.
Gast #1597315
Lesenswert?

@Thomas B.:
Ich habe die Antwort von Hc Zimmerer, insbesondere diesen Teil
> anstelle eine Lösung anzufragen, die nicht geht
so aufgefasst, dass er damit sagen will, dass es nicht möglich ist 
soetwas zu machen, deshalb nochmals die Erklärung bzw. den Code.

@Hc Zimmerer:
Das mit dem NOP war nur ein Beispiel, und dass das ohne Handshake nicht 
gehtm, war mir schon von anfang an klar.
Gast #1597320
Lesenswert?

das dumme ist das der µC sowieso in einer
1
while(1)
2
{
3
}

läuft

selbst wenn du nichts machst ...macht er was

und an einem eingang 8bit einlesen .. und an einem anderen was ausgeben 
..
das macht der im schlaf


frage ist ... was soll der µC dann tun ?

eingang == 0x10
speichere 0x10 im register ( variable = sowieso ...

und dann ???
irgendwas soll der ja schon machen .. oder nicht ?

was istalso die aufgabe des µC ?
Gast #1597379
Lesenswert?

> Der µC soll von einer CF-Karte, bzw. CF Leser gesteuert werden.

Kein Problem: Schreib oder hol dir ein Programm für den AVR, das von CF 
lesen kann. Der liest das gewünschte Programm in der CF, speichert es in 
das Flash des AVRs und führt es aus.
Gast #1597410
Lesenswert?

was ist für dich von CF gesteuert werden ?

ein auf der CF karte befindliches programm oder sind dort nur in einer 
text oder binärdatei  irgendwelche befehle ?


wenns nen programm ist : bootloader schreiben und fertig

wenns nen befehlslisting ist ...
auslesen und ausführen

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