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
Gast
#3639535
Beim AVR-ADC kann man sich auch nur die oberen 8 Bit ausgeben lassen. Dieses Byte kannst du auch einfach ins PWM-Register schreiben.
Gast
#3639539
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.
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???
Gast
#3639543
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
Gast
#3639545
Beitrag "der ADC will sich nicht entscheiden!" und im gleichen thread: Beitrag "Re: der ADC will sich nicht entscheiden!"
Gast
#3639552
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!
Controller ist der ATMEGA 16
Gast
#3639560
Hi Dann Bei der ADC-Initialisierung das ADLAR-Bit setzen und nur ADCH auslesen und an OCR übergeben. MfG Spess
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??
Gast
#3639575
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!
Gast
#3639577
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.
okay ja aber wie komm ich in die Fuse Bits und welches genau muss ich ändern??
Gast
#3639603
Steve Uffelmann schrieb: > ... und welches genau muss ich ändern?? Guckst du hier: http://www.engbedded.com/fusecalc
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.
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.