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
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.
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
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
Na ja, Assembler-Code für den AVR wirst du auch nicht auf nem 8051 zum laufen bekommen, ohne den Codeschnipsel komplett umzuschreiben.
"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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.