Forum: Mikrocontroller und Digitale Elektronik Poti steuerung


von Steve U. (giftzwerg)


Lesenswert?

Hey ich habe ein Problem und finde dazu keine vernünftige Lösung und 
zwar geht es darum mit dem ADC von einem Podi/Widerstand die 
Spannungswerte auszulesen und zwar dauerhaft und dann eigentlich ohne 
Stufen in eine PWM zu geben da aber das Register des ADC 10 Bit hat und 
die PWM nur 255 Werte komm ich nicht klar wie ich das PWM Register durch 
das ADC Register setzen muss
Wie würdet Ihr das machen kann auch mal mein PWM Programm anhängen wird 
über Taster verstellt und bitte nicht auf das Tutorial verweisen den 
Link kenn ich schon

Danke schon mal

von STK500-Besitzer (Gast)


Lesenswert?

Beim AVR-ADC kann man sich auch nur die oberen 8 Bit ausgeben lassen. 
Dieses Byte kannst du auch einfach ins PWM-Register schreiben.

von Mike (Gast)


Lesenswert?

Steve Uffelmann schrieb:
> da aber das Register des ADC 10 Bit hat und die PWM nur 255 Werte komm
> ich nicht klar wie ich das PWM Register durch das ADC Register setzen muss

Du schmeißt du unteren zwei Bit vom ADC weg. Dann bleiben noch 8 Bit zur 
Steuerung der PWM über.

von Steve U. (giftzwerg)


Lesenswert?

Das müssten dann ja die 255 Werte sein oder und die Interrups dürfte das 
ja auch nicht Stören nur gibts da nen Speziellen Befehl???

von spess53 (Gast)


Lesenswert?

Hi

>Das müssten dann ja die 255 Werte sein oder und die Interrups dürfte das
>ja auch nicht Stören nur gibts da nen Speziellen Befehl???

Dann erzähle erst mal, um welchen Controller es sich handelt.

MfG Spess

von hystel (Gast)


Lesenswert?


von Jörg (Gast)


Lesenswert?

Du mußt den ADC entsprechend konfigurieren. Dann stehen im oberen 
Ergebnisregister (ADCH beim ATmega8) die obersten 8 Bit.

siehe Datenblatt. Stichwort "ADLAR".

Grüße!

von Steve U. (giftzwerg)


Lesenswert?

Controller ist der ATMEGA 16

von spess53 (Gast)


Lesenswert?

Hi

Dann Bei der ADC-Initialisierung das ADLAR-Bit setzen und nur ADCH 
auslesen und an OCR übergeben.

MfG Spess

von Steve U. (giftzwerg)


Lesenswert?

Okay Dank euch
noch eine andere Frage und zwar hab ich bisher mit dem Internen Takt 
gearbeitet würde aber gern nen Oszilator verwende arbeite mit Atmel 
Studio wo kann ich da auf Externen Takt umschalten??

von Jörg (Gast)


Lesenswert?

Das machst Du über die Fueses im Programmer Dialog.

Ein wenig Vorsicht ikst dabei immer geboten, Du kannst mit falschen 
Einstellungen den uC auch unbrauchbar machen. Dann hilft nur HV 
Wiederbelebung.

Grüße!

von Mike (Gast)


Lesenswert?

Steve Uffelmann schrieb:
> noch eine andere Frage und zwar hab ich bisher mit dem Internen Takt
> gearbeitet würde aber gern nen Oszilator verwende arbeite mit Atmel
> Studio wo kann ich da auf Externen Takt umschalten??

Meinst du, der interne Takt wird nicht mit einem Oszillator erzeugt?

Um mit einem externen Oszillator zu arbeiten, mußt du die Fuses im 
Prozessor entsprechend umprogrammieren.

von Steve U. (giftzwerg)


Lesenswert?

okay ja aber wie komm ich in die Fuse Bits und welches genau muss ich 
ändern??

von Mike (Gast)


Lesenswert?

Steve Uffelmann schrieb:
> ... und welches genau muss ich ändern??

Guckst du hier:
http://www.engbedded.com/fusecalc

von Karl H. (kbuchegg)


Lesenswert?

Steve Uffelmann schrieb:
> okay ja aber wie komm ich in die Fuse Bits

In deinem Programm, das du zum Brennen des Programms in den µC benutzt, 
gibt es irgendwo einen Punkt, mit dem man die jetzigen Fuses auslesen 
kann und die veränderte Belegung wieder reinbrennen kann.

Wie das genau geht, hängt daher von deinem Brennprogramm ab.


> und welches genau muss ich
> ändern??

Es ist nicht ein einziges, sondere mehrere.

von Karl H. (kbuchegg)


Lesenswert?

Steve Uffelmann schrieb:

> da aber das Register des ADC 10 Bit hat und
> die PWM nur 255 Werte komm ich nicht klar wie ich das PWM Register durch
> das ADC Register setzen muss

ADLAR ist eine Möglichkeit, die andere ist:
einfach den ADC Wert durch 4 dividieren, denn 4 mal 256 sind 1024. 8 Bit 
sind 256 Zustände, 10 Bit sind 1024 Zustände.

Wegen der DIvision brauchst du dir keine Sorgen machen. Die wird vom 
Compiler sowieso durch eine Shift um 2 Bits ersetzt, geht als rasch. Und 
selbst wenn der Compiler das nicht ersetzen würde und tatsächlich eine 
Division erzeugt, dann geht das immer noch um Grössenordnung schneller, 
als du das Poti je drehen könntest.

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.