Forum: Mikrocontroller und Digitale Elektronik ATMega von "außen" steuern


von jab (Gast)


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?

von Andreas K. (derandi)


Lesenswert?

Mal ne Frage zum warmwerden, was hast du denn bisher mit µC schon alles 
gemacht?

von Hc Z. (mizch)


Lesenswert?

Die AVRs können Befehle ausschließlich aus dem Flash ausführen.  Für 
Befehlswörter gibt es keinen anderen Datenpfad, das sieht die 
Architektur nicht vor.

Vielleicht schilderst Du, was Du erreichen willst (anstelle eine Lösung 
anzufragen, die nicht geht).

von jab (Gast)


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.

von spess53 (Gast)


Lesenswert?

Hi

>daher wollte ich wissen, ob es dafür eine andere Möglichkeit
>gibt.

Ja. icall/ijmp.

MfG Spess

von Thomas B. (yahp) Benutzerseite


Lesenswert?

Du hast jetzt zweimal geschrieben was du machen willst, aber es ist 
immer noch nicht klar. Wenn du anhand des Pinstatus hundertfach 
verzweigen willst, dann musst du das tun. Ein Array von Funktionszeigern 
wäre evtl. noch was. Oder halt gleich eine Hochsprache mit halbwegs 
übersichtlichem Switch/Case-Gerödel.

von Hc Z. (mizch)


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.

von jab (Gast)


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.

von komische idee (Gast)


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 ?

von jab (Gast)


Lesenswert?

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

von Thomas B. (yahp) Benutzerseite


Lesenswert?

Nimm keinen AVR, sondern ein Ding, was Code ausm RAM ausführen kann. 
Dann brauchst du nur eine Art Bootloader, ziehst dir deine Anweisungen 
von der CF in den RAM rüber und führst sie dort aus.

von jab (Gast)


Lesenswert?

Kennst du zufällig so ein Ding, was Code ausm RAM ausführen kann?

MfG

von holger (Gast)


Lesenswert?

>Kennst du zufällig so ein Ding, was Code ausm RAM ausführen kann?

PC ;)

von jab (Gast)


Lesenswert?

Ich dachte da eher an etwas ... kleineres... ^^

von klaus (Gast)


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.

von Thomas B. (yahp) Benutzerseite


Lesenswert?

Achja, das geht ja auch ;-)

von Ich (Gast)


Lesenswert?

Es gibt es nicht eine kleine Script sprache für AVR's?
Ich bin der Meinung hier mal was gesehen zu haben.

von komische idee (Gast)


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

von Stefan B. (stefan) Benutzerseite


Lesenswert?

jab schrieb:

> Hat jemand eine Idee?

Manche Arduino-Leute machen eine "Steuerung von außen" über eine 
serielle Verbindung und eine Shell, die auf dem Arduino läuft.

arsh
http://biot.com/arsh/

bitlash
http://bitlash.net/wiki/start

breakfast
(offline)

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

jab schrieb:
> Ich dachte da eher an etwas ... kleineres... ^^

Bifferboard (läuft unter Linux, ist Skriptfähig, kann von USB-Stick 
booten, ..., ist schneller als ein AVR,...).

von klaus (Gast)


Lesenswert?

> wenns nen programm ist

Geh mal Deutschkurs...

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
Noch kein Account? Hier anmelden.