www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Anfängerfragen zu asembler und AVR


Autor: Sebastian E. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich stehe vor einem Problem, welches in diesem Forum schon häufiger
angesprochen wurde.
Und zwar: Einen Drehimpulsgeber decodieren.
Aber alle Lösungen kann ich nicht benutzen (glaub ich)
Ich wollte zum decodieren einen 8pin Controller von ATMEL nehmen. Der
soll nur aus dem Grey-Code impulse für rechts und linksdrehung machen.
Das ganze wollte ich dann als eine Art "black-Box" sehen. Ohne
weitere beschaltung.

Das Programm, welches ich schreiben wollte liegt im Datenblatt des
Impulsgbers als Flussdiagramm bei.

Ich hab mich da letztens dran gesetzt, hab aber auf ganzer linie
versagt. Folgende Fragen sind jetzt offen:
1. Wie kann ich einen einzelnen Pin abfragen?
2. Wie benutz ich einen Port für ein und ausgabe? (der kleine atmel hat
5 IO Pins, zwei brauch ich als eingabe und zwei zur ausgabe)

ich hoffe ihr könnt mir da weiterhelfen.

Mfg
 Sebastian

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-> Tutorial dieser Seite

Autor: romanua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
avr oder was anderes?
bei avr:

1. sbic, sbis
2. ldi r16,0b11110000
   out DDRx, r16
die letzen 4 pins von port "x" sind dann outputs und die ersten
inputs.

siehe auch http://www.mikrocontroller.net/tutorial/io-basics

Bei was anderem kenne ich mich leider nicht aus.

Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Klar kannst Du die benutzen, z.B. in der Codesammlung (Drehgeber
auslesen).
Einfach statt ne Variable zu zählen, Pulse ausgeben.

Anbei das Ganze auch in Assembler, paßt dann sogar in einen alten
ATTiny12 oder AT90S1200.


Du darfst aber nicht schneller als mit 500kHz drehen :-)


Peter

Autor: Sebastian E. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnellen antworten.

Jetzt bin ich waranders am verzweifeln.

Ich hab die "ENCODE.ASM" mal runtergeladen, mit dem Programm
"Batronix Prog Studio" geöffnet, und hab den Debugger angemacht.
Jetzt bekomme ich bei JEDER zeile die meldung "Befehl nicht erkannt"
:(

Nutz das Programm etwa einen modifizierten assembler mit komplet
anderen befehlen?

ich hab natürlich die passende controller-datei oben includet und die
ports angepasst.

Bin total am verzweifeln.

Zum Programmieren benutz ich den Flash-BrennerI von Batronix.com für
den AT89C2051

Woran kann das wohl liegen, das da nichts klappt?

Mfg
Sebastian

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ja, Assembler-Code für den AVR wirst du auch nicht auf nem 8051 zum
laufen bekommen, ohne den Codeschnipsel komplett umzuschreiben.

Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
"Nutz das Programm etwa einen modifizierten assembler mit komplet
anderen befehlen?"


Du sprachst doch von 5 IO-Pins und die hat Atmel zur Zeit erst als
AVRs.

Der 2051 hat 15 IOs, ist aber auch kein Problem, siehe Anhang.


Peter

Autor: Jens-Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was nimmst Du für Drehimpulsgeber? Welche Preise haben die?

Habe viele mit solchen Sachen gemacht.

1. Einlesen der 2 Pins und zwar als Byte: z.B. wenn Pin 2 und 3, dann
0b00001100 0b00000100 0b00001000 oder 0 (entsprechend maskieren)
2. Vergleichen mit alten Wert (vorher im SRAM speichern oder ein
Register)
3. Wenn Veränderung, dann Ausgangsimpuls und dann schauen was vorher
war
4. 4 x 4 Wege abschreiten: z.B.  wenn jetzt 1, war dann vorher 2 oder 4
usw.
je nach dem ein Links oder Recht setzen (Flag oder Port usw.)
5. neuen Wert abspeichern als jetzigen alten und zurück zum Anfang

Autor: Sebastian E. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bins wieder :)

Hab jetzt den Brenner rausgewühlt, das programm angepasst und in den IC
geschrieben. Jetzt bekomm ich als erstes die Meldung: "die Demo erlaubt
nur 256 Byte" und dann ne Meldung: "Die daten des IC stimmen nicht mit
den Daten im Editor überein".

kennt wer das Progstudio von Batronix?
Das Programm ist doch kleiner als 256Byte, oder?
Ist der Brenner von Batronix.com auch mit anderer Software nutzbar?

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.