www.mikrocontroller.net

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


Autor: jab (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
ldi r17, 0x10
ausgeführt wird?
Anderes Beispiel:
An Port C liegt 0x01 an. Es wird der Befehl:
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?

Autor: Andreas K. (derandi)
Datum:

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

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: jab (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
    in r16,PINC
vergleich:
    cpi r16,1          ;wenn die Eingangspins von
    brne zweig_0       ;PINC auf 0b00000001 stehen
    nop                ;führe "nop" aus
                       ;falls nicht, springe zu zweig_0 und
                       ;prüfe auf eine andere bekannte Kombination
zweig_0:
    ...
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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

Ja. icall/ijmp.

MfG Spess

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: jab (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: komische idee (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das dumme ist das der µC sowieso in einer
while(1)
{
}

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 ?

Autor: jab (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der µC soll von einer CF-Karte, bzw. CF Leser gesteuert werden.

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: jab (Gast)
Datum:

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

MfG

Autor: holger (Gast)
Datum:

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

PC ;)

Autor: jab (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich dachte da eher an etwas ... kleineres... ^^

Autor: klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achja, das geht ja auch ;-)

Autor: Ich (Gast)
Datum:

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

Autor: komische idee (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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,...).

Autor: klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wenns nen programm ist

Geh mal Deutschkurs...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.