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
Beim AVR-ADC kann man sich auch nur die oberen 8 Bit ausgeben lassen. Dieses Byte kannst du auch einfach ins PWM-Register schreiben.
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???
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
Beitrag "der ADC will sich nicht entscheiden!" und im gleichen thread: Beitrag "Re: der ADC will sich nicht entscheiden!"
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!
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??
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!
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.