Forum: Mikrocontroller und Digitale Elektronik Anfänger fragen zu Tiny 15 und Assembler


von Steffen (Gast)


Angehängte Dateien:

Lesenswert?

Guten abend,

ich bin gerade dabei einen Tiny15 zu programmieren. Leider habe ich
nicht all zu viele Erfahrungen mit Assembler.
Ich möchte vom AD Kanal 3 eine Spannung messen und diese als Frequenz
am Ausgang PB1 ausgeben. Dabei soll zuerst der Ausgang PB1 für 500ms
eingeschaltet werden und dann wieder aus. Wenn der aus ist dann soll
der AD Wert als Frequenz ausgegeben werden. Wenn das fertig ist, dann
geht das wieder von vorn los.

Nun habe ich ein paar Fragen:
Habe ich den AD Kanal richtig gewählt? (0x03)
Wie bekomme ich eine Pause hin?
Wie kann ich den AD Wert ausgeben?
Kann man das als PWM machen?

Danke und Gruß Steffen

von Hannes L. (hannes)


Lesenswert?

So wird das eher nix...
Das hier http://www.hanneslux.de/avr/divers/index.html wird deine
Aufgabe zwar auch nicht erfüllen, aber es wird dir sicher Hinweise
geben können, wie du es besser machen kannst. Denn da werden Frequenzen
erzeugt, Pausen eingehalten und in einer Version auch ADC eingelesen. Du
wirst allerdings etwas Geduld benötigen.

...

von Steffen (Gast)


Lesenswert?

naja aber irgendwo muß ich ja anfangen :-)

Ich werd das mal morgen testen und dann mal sehn wie ich das mache.
Besten dank erstmal.

Gruß Steffen

von Steffen (Gast)


Lesenswert?

Hallo,

ich kappier das nicht. Kann mir jemand mal sagen wie ich zu erst einmal
eine Ausgang ein und nach gewisser Zeit wieder aus bekomme?
Wie ein Blinken halt? Ich komm mit den ganzen Abkürzungen und Befehlen
nicht klar. Noch dazu ist mein Englisch nicht so gut das ich das
Datenblatt verstehe. Und dann wäre ich sehr dankbar, wenn mir mal
jemand mal verständlich und vielleicht mit einem Schnipdel Code das
lesen von einem AD Wert erklärt und wie ich den in eine Variable
bekomme. Ich mach hier schon seit Tagen rum aber irgednwie kappier ich
das nicht. Das was ich da als Code gefunden habe, damit kann ich
irgendwie nichts anfangen da es Seiteweise irgedwelche Befehle sind.
Ich den das das ganz einfach ist, wenn man mal ein bissel Code hat der
funktioniert.

Danke und Gruß Steffen

von Hannes L. (hannes)


Angehängte Dateien:

Lesenswert?

> Und dann wäre ich sehr dankbar, wenn mir mal
> jemand mal verständlich und vielleicht mit einem Schnipdel Code das
> lesen von einem AD Wert erklärt und wie ich den in eine Variable
> bekomme.

Nehmen wir an, die Variable wäre das Register r16 und hieße 'temp'.

Dann liest du mit
1
in temp,adch
den momentanen Wert des ADC in die Variable temp ein. Das Dumme ist
nur, dass du dem ADC vorher sagen musst, welches Signal er wandeln soll
und was er als Referenz nehmen soll. Also schau dir das Register
'admux' im I/O-Bereich an, da gibt es Bits für die Referenzquelle,
die Messquelle und einen Schalter (adlar) mit dem du festlegen kannst,
ob das 10-Bit-Ergebnis im 16-Bit-Registerpaar 'adch:adcl'
rechtsbündig oder linksbündig justiert werden soll. Benötigt man nur 8
Bit Auflösung, dann justiert man links (adlar gesetzt) und liest nur
adch aus.

Dann muss der ADC auch noch eingeschaltet werden. Dazu gibt es das
Register 'adcr'. In der ersten 'Verständnis-Stufe' schaltet man den
ADC erstmal auf Dauerbetrieb. Dazu setzt man die Bits
- aden (Einschalten)
- adsc (Starten)
- adfr (Free Run, Dauerlauf)
und die Bits für einen geeigneten Vorteiler. Dabei soll der ADC einen
Takt von etwa 50kHz..200kHz bekommen. Der Tiny15 läuft (wenn er
kalibriert wurde) mit 1,6MHz. Um auf 100kHz ADC-Takt zu kommen braucht
man Vorteiler 1:16.
Aber was schreibe ich das hier eigentlich alles nochmal? Analysiere
doch einfach mal das Programm im Anhang, da sind etliche Dinge erklärt,
auch wie man sich diverse erforderliche Daten aus dem Datenblatt holt.
Zu jedem ASM-Befehl gibt es einen Kommentar, teils mit Verweis auf
betreffende Stellen im Datenblatt. Das Programm liest 2 Potis per ADC
ein, liest einen Taster ein und steuert 2 LEDs, die nach einer
bestimmten (einstellbaren) Zeit wieder ausgehen.

Um die einzelnen Bits zu verstehen, ist nur minimales Englisch
erforderlich. Ich kann auch kein Englisch und kämpfe mich mit einem
Wörterbuch durch die Datenblätter, was ich inzwischen immer seltener
brauche. Das Datenblatt ist ein absolutes Muss, ohne diese
Informationen wirst du in keiner Programmiersprache zu einem
befriedigenden Ergebnis kommen.

Also viel Spaß...

...

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.