Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage Assembler Code


von Karl (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich komme hier mit logischen Überlegungen nicht mehr weiter, daher die 
Frage an die Profis.
Ich versuche momentan einen RC Brushlesregler mit einer anderen Firmware 
zu flashen (Atmega8). Eine gute Anlaufstelle für eine alternative 
Firmware ist die Seite von Quax: http://home.versanet.de/~b-konze/
Ich möchte hier die angehängte Firmware für die Hardware meines Reglers 
anpassen(Portzuweisungen) dies kann in der .inc datei vorgenommen 
werden, allerdings habe ich hier ein Verständnisproblem.

Die Zuweisungen in der .inc Datei sehen wie folgt aus:
…..
;*********************
; PORT C definitions *
;*********************
.equ  mux_a    = 5  ; ADC5 phase input
.equ  mux_b    = 4  ; ADC4 phase input
…..

Im Code wird mux_a folgendermaßen  verwendet:
com3com4:  ApFET_off    ; Ap off
    sbrs  flags1, POWER_OFF
    CpFET_on    ; Cp on
    ldi  temp1, mux_a    ; set comparator multiplexer to phase A
    out  ADMUX, temp1
    cbi  ADCSRA, ADEN    ; disable ADC


weder in der .inc noch im code konnte ich die Zuweisung von mux_a auf 
PortC5 finden, eben nur mux_a =5
Woher weiß der Controller jetzt das er auf PortC5 zugreifen soll? Es 
gibt ja auch mux_c der auf PortD liegt..

Grüße
Karl

von Tommi (Gast)


Lesenswert?

Die Befehle sind:

LDI [Register],[Wert]
OUT [IO-Port],[Register]

PortC ist in ADMUX definiert.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Karl schrieb:
> Woher weiß der Controller jetzt das er auf PortC5 zugreifen soll?

mux_a und mux_b sind Werte, die in das Register ADMUX geschrieben
werden.  Im Datenblatt deines Controllers steht, welcher Eingang
bzw. welche Eingangskombination welchem Wert entspricht.

von Oliver (Gast)


Lesenswert?

Karl schrieb:
> Woher weiß der Controller jetzt das er auf PortC5 zugreifen soll?

Ein paar Grundlagen über die Funktionen des Prozessors sind schon 
erforderlich, wenn man sich an solch ein Projekt wagt. Vieleicht schaust 
du mal in das Tutorial, und auch ins Datenblatt.

Die ADC-Eingänge sind fest definiert (siehe Datenblatt), da braucht es 
keine zusätzliche Angabe, an welchem Port die liegen. Die Nummer reicht.

Oliver

von Karl (Gast)


Lesenswert?

ahhhh, jetzt ergibt alles einen Sinn....
Vielen Dank!

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.