Sollte der Timer1 nicht auch mit 8-Bit laufen?
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , ...
Hallo zusammen. Wie der Titel schon sagt habe ich Probleme mit Bascom und Fading von drei PWM Kanälen.
Aufbau:
Ich habe an ADC Kanal 0/1/2 je ein Potti 10k.
Diese faden die PWM Kanäle des Timers0 / Timers1 eines Atmega 16.
Das Konkrete Problem ist das ich immer nur zwei faden kann, sobald ich den dritten fade,
Springen alle drei ADC Kanäle auf 0.
Unabhängig welche ich regele, also beide Timer1 oder je einen von Timer1 und Timer0, kommt der Dritte hinzu springt alles auf 0.
Ich höffe Ihr könnt mir weiter Helfen
Anbei das Bascom Programm.
Schaltplan
Code:$regfile = "m16def.dat" $crystal = 16000000 $hwstack = 40 $swstack = 16 $framesize = 32 Ddrb = &HFF Ddrd = &HFF Ddrc = &HFF Ddra = &H00 Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.0 , Rs = Portc.1 Config Lcd = 20 * 4 Enable Interrupts Dim Adc_rot As Word Dim Adc_grün As Word Dim Adc_blau As Word Dim Pwm_rot As Word Dim Pwm_grün As Word Dim Pwm_blau As Word Config Timer0 = Pwm , Compare Pwm = Clear Down , Prescale = 256 Config Timer1 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256 Config Adc = Single , Prescaler = Auto , Reference = Avcc Do Waitms 250 Cls Locate 1 , 1 Lcd "Motion Control @ RAU" Locate 2 , 1 Lcd "ROT " Gosub Rot_messen Pwm_rot = Adc_rot / 4 Lcd Pwm_rot Locate 3 , 1 Lcd "GRUEN " Gosub Grün_messen Pwm_grün = Adc_grün / 4 Lcd Pwm_grün Locate 4 , 1 Lcd "BLAU " Gosub Blau_messen Pwm_blau = Adc_blau / 4 Lcd Pwm_blau Ocr0 = Adc_rot Ocr1a = Adc_grün Ocr1b = Adc_blau Loop End Rot_messen: Start Adc Adc_rot = Getadc(2) Stop Adc Return Grün_messen: Start Adc Adc_grün = Getadc(1) Stop Adc Return Blau_messen: Start Adc Adc_blau = Getadc(0) Stop Adc Return
Grüße Flo
Sollte der Timer1 nicht auch mit 8-Bit laufen?
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , ...
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hallo und Danke
Absolut richtig hatte ich wohl übersehen.
Leider war das aber nicht der gesuchte Fehler.
Das Programm geht immer noch nicht
Grüße Flo
War ja eigentlich zu erwarten. Funktioniert das?
Ach, Blödsinn, der ADC funzt ja nimmer. Vielleicht solltest du die häufigen Starts/Stops weglassen und den ADC nur einmal nach dem Config starten.Code:' Config Adc = Single , Prescaler = Auto , Reference = Avcc Ocr0 = 127 Ocr1a = 127 Ocr1b = 127 Do Loop End
Geändert von radbruch (19.09.2011 um 12:13 Uhr) Grund: ADC-Ergänzung angehängt
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ja. Habe mal alles abgeworfen was nicht zu der ADC erfassung und Ausgabe gehört.
Sieht so aus
Nachmessen mit dem Multimeter an ADC0/1/2 ergibt keine Auffälligkeit. Spannung fällt wie gewohnt von 4,8 auf 0 Volt.Code:$regfile = "m16def.dat" $crystal = 16000000 $hwstack = 40 $swstack = 16 $framesize = 32 Ddrb = &HFF Ddrd = &HFF Ddrc = &HFF Ddra = &H00 Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.0 , Rs = Portc.1 Config Lcd = 20 * 4 Dim Adc_rot As Word Dim Adc_grün As Word Dim Adc_blau As Word Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Do Cls Locate 1 , 1 Lcd "Motion Control @ RAU" Locate 2 , 1 Lcd "ROT " Lcd Adc_rot Locate 3 , 1 Lcd "GRUEN " Lcd Adc_grün Locate 4 , 1 Lcd "BLAU " Lcd Adc_blau Adc_rot = Getadc(2) Adc_grün = Getadc(1) Adc_blau = Getadc(0) Waitms 100 Loop End
Dachte erst die Schaltung würde mir die Probleme Machen.
Grüße Flo
ähm die qualität des schaltplan ist leider miserabel, aber kann es sein, dass dein AVCC garnicht angeschlossen ist ?
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Sorry wegen dem Schaltplan ist nicht so gelungen
Aber:
Atmega 16 def.
Das war der Fehler...
Den Kolegen getauscht nun gehts
Grüße
öhm, ich meinte eigentlich die bildqualität, zu niedrige auflösung sry wollte niemand angreifen
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Krass. Aber immerhin funktioniert mein Testaufbau:Atmega 16 def.
GrußCode:$regfile = "m16def.dat" $crystal = 16000000 $hwstack = 40 $swstack = 16 $framesize = 32 $baud = 38400 Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Do Print Getadc(2) ; " " ; Getadc(7) ; " " ; Getadc(6) Waitms 500 Loop End
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Lesezeichen