Forum: Mikrocontroller und Digitale Elektronik ADSC im ADCSR setzen


von Alisa 1387 (Gast)


Lesenswert?

Hallo,

habe bereits Themen im hiesigen Forum durchsucht und gegoogelt. Habe
einen atmega16 included und möchte ne Single A/D Conversation starten.

Dazu möchte ich das ADSC-Bit im ADCSR (ADC Status Register) setzen.
Laut Beispielen / anderen Threads wird das ADCSR wie ein I/O Port
behandelt. Doch die Port-Befehle funktionieren nicht. Beispiel:

SBR temp,ADSC
OUT ADCSR,temp

wird nach dem builden mit "ADCSR undefined symbol" oder so ähnlich
beantwortet. Das ADCSR lässt sich also offenbar unter dieser
Bezeichnung nicht finden (dabei heißt das Register im Simulator ja
genau so). Was läuft hier falsch?

Danke für die Mühe

Basti

von Alisa 1387 (Gast)


Lesenswert?

Also hab mir das include-file angesehen und festgestellt, dass ADCSR als
$06 definiert ist.

SBI $06,6 ;funktioniert!!

Neulich wollte ich meinen Code auf mehrere Files verteilen und der
gleiche Code ging nicht mehr (ein Makro-Name war angeblich unzulässig,
der vorher einwandfrei lief. Immer wenn ich das Makro umbenannt habe
wollte der Name beim Makro-Aufruf natürlich auch entsprechend geändert
werden. Und wenn ich den Namen auch geändert habe kam wieder die
"unzulässige Syntax"-Fehlermeldung, egal bei welchem Namen)

irgendwie hab ich´s wohl mit den include-files... Kann mir jemand nen
Tipp geben?

von Alisa 1387 (Gast)


Lesenswert?

Ach muß ich für das ADCSR Register ne Port Direction einstellen?

von Alisa 1387 (Gast)


Lesenswert?

Nee dann würd ja die direkte Andressierung auch nicht gehen. Per .EQU
können doch einem Wert auch mehrere Namen zugewiesen werden, oder?

von Alisa 1387 (Gast)


Lesenswert?

Hey Jungs, dat kann doch echt nicht sein. Ich werde doch wohl kaum der
erste sein mit so ner Sache.

von Daniel (Gast)


Lesenswert?

Hallo,

also Recherche im Datenblatt (heute morgen auf www.atmel.com) ergab
folgendes :
 - Bei der Beschreibung des AD-Wandlers (bzw. seiner Register) steht
das  ADControl und Status Register als ADCSRA. Das hieße, oso müsste es
auch im Programmcode heißen (siehe Seite 217 im Datasheet Complete)
 - Im  Register Summary (Seite 313) steht es ebenfalls unter diesem
Namen, das spricht auf dafür, dass es so heißt.

Zu der Frage nach der Direction - nein, dies sind alles Register und
keine Ports. Alle Ports sind durch Register ansprechbar, nicht anders
herum. Damit etwas auf einem Port herauskommt, muss man zum einen Daten
in das Ausgangsregister schreiben (z.B. PORTB) und außerdem noch die
Funktion des Ports im Datenrichtungsregister (DDRB in diesem Fall) als
Ausgang konfigurieren. Dies funktioniert natürlich pinweise.

MfG, Daniel

von Alisa 1387 (Gast)


Lesenswert?

Danke,
doch jetzt läuft´s bereits... Ne Untersuchung des Dateblatts ergab,
dass in der anderen Doku das "A" fehlte. Ich Blindfisch hab´s beim
Einsehen des Include-Files übersehen ;)

THX

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.