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


von Sebastian E. (Gast)


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

von Alex (Gast)


Lesenswert?

-> Tutorial dieser Seite

von romanua (Gast)


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.

von Peter D. (peda)


Angehängte Dateien:

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

von Sebastian E. (Gast)


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

von ERDI - Soft (Gast)


Lesenswert?

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

von Peter D. (peda)


Angehängte Dateien:

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

von Jens-Erwin (Gast)


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

von Sebastian E. (Gast)


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?

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.