Hallo,
ich habe hier ein Entwicklerboard mit einem Atmega644 und 20 MHz, verbunden mit 2x L293D mit denen ich 4x kleine DC Motoren ansteuern möchte.
Ich habe leider das Problem, dass ich mit der PWM nicht weiter komme. Ich füge hier den Code an, vielleicht kann mir jmd. helfen:
Code:Hallo, leider startet mein Atmega644 nach dem Print "Ctrl v.0.1" immer wieder neu... Ich möchte 4 DC Motoren in der Richtung und über 4x PWM in der Geschwindigkeit regeln - aber da stimmt was nicht! '################################################################ ' ' Control v. 0.1 ' ------------------------------------- ' ' Stand: 21.02.2013, ATmega644 ' ' '################################################################ '-------------------------------------------------------------------------- ' Compilerinstruktionen und Compilerdirektiven '-------------------------------------------------------------------------- $regfile = "m644def.dat" $crystal = 20000000 $hwstack = 64 $swstack = 64 $framesize = 64 $baud = 9600 '-------------------------------------------------------------------------- ' Definition von Ressourcen '-------------------------------------------------------------------------- Led Alias Portd.2 ' rote LED 'Treiber L293 oben (1) / Timer2 1_pwm1_z Alias Portd.7 1_m1a_z Alias Portc.3 1_m1b_z Alias Portc.4 1_pwm2_f Alias Portd.6 1_m2a_f Alias Portc.7 1_m2b_f Alias Portc.6 'Treiber L293 unten (2) / Timer0 2_pwm1_p Alias Portb.3 2_m1a_p Alias Portb.1 2_m1b_p Alias Portb.2 2_pwm2_t Alias Portb.4 2_m2a_t Alias Portb.0 2_m2b_t Alias Portc.5 '-------------------------------------------------------------------------- ' Definition von Konstanten '-------------------------------------------------------------------------- '-------------------------------------------------------------------------- ' Definition von Variablen und Datentypen '-------------------------------------------------------------------------- '---- PWM für A293D ---- Dim 1z As Integer Dim 1f As Integer Dim 2p As Integer Dim 2t As Integer '-------------------------------------------------------------------------- ' Konfiguration und Basiseinstellungen '-------------------------------------------------------------------------- ' Timer2 für PWM 8Bit L293D (1) "oben" Config Timer2 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8 ' Timer0 für PWM 8Bit L293D (2) "unten" Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8 '---- Timer ---- '---- Outputs ---- Config Led = Output 'Treiber L293 oben (1) / Timer2 Config 1_pwm1_z = Output 'OC2A Config 1_m1a_z = Output Config 1_m1b_z = Output Config 1_pwm2_f = Output 'OC2B Config 1_m2a_f = Output Config 1_m2b_f = Output 'Treiber L293 unten (2) / Timer0 Config 2_pwm1_p = Output 'OC0A Config 2_m1a_p = Output Config 2_m1b_p = Output Config 2_pwm2_t = Output 'OC0B Config 2_m2a_t = Output Config 2_m2b_t = Output '---- Interrupts ---- Enable Interrupts Enable Timer0 Enable Timer2 '-------------------------------------------------------------------------- ' Init '-------------------------------------------------------------------------- 1_m1a_z = 0 ' L293D Zoom OFF 1_m1b_z = 0 '1z = 150 ' Anfangsgeschwindigkeit für PWM L293D 'Ocr2a = 1z 1_m2a_f = 0 ' L293D Focus OFF 1_m2b_f = 0 '1f = 150 ' Anfangsgeschwindigkeit für PWM L293D 'Ocr2b = 1f 2_m1a_p = 0 ' L293D PAN OFF 2_m1b_p = 0 '2p = 150 ' Anfangsgeschwindigkeit für PWM L293D 'Ocr0a = 2p 2_m2a_t = 0 ' L293D TILT OFF 2_m2b_t = 0 '2t = 150 ' Anfangsgeschwindigkeit für PWM L293D 'Ocr0b = 2t Led = 1 Print "Ctrl v.0.1" '-------------------------------------------------------------------------- ' Hauptprogramm '-------------------------------------------------------------------------- Do 2_m2a_t = 1 2_m2b_t = 0 Ocr0b = 150 Loop End







Zitieren

Lesezeichen