Hallo zusammen,
ich versuche mit einem ATMEGA2561 http://www.atmel.com/Images/doc2549.pdf in Bascom ein PWM-Signal zu erzeugen. An dem ATMEGA habe ich die Pololu Motorsteuerung http://www.pololu.com/catalog/product/755 angeschlossen, klappt leider nicht.
Zuerst habe ich versucht die Frequenz zu berechnen: (Frequenz des Quartz 16000000/Prescaler 1024)/(2^16Bit*2) = 119 Hz
Dann habe ich in Bascom die Register des ATMEGA2561 eingestellt auf Fast PWM, Prescaler, usw.
Tccr1a = &B11000011
Tccr1b = &B00011101
Hat jemand vielleicht einen Tipp? Mich interessiert als erstes:
Habe ich die Frequenz richtig berechnet?
Habe ich die Register richtig belegt?
Vielen Dank für die Hilfe im Voraus.
Grüße
datatom
Das Bascom-Programm sieht so aus:
Code:' $regfile = "m2561def.dat" $hwstack = 82 '80 $framesize = 68 ' 64 $swstack = 68 '44 $crystal = 16000000 'Quarzfrequenz $baud = 19200 ' Portbelegung Seite 3 in der ATMEL-DOKU - Pinbelegung siehe Alvidi Doku Config Pinb.5 = Output ' Pin 22; PB5 für Timer1/ OC1A im FAST PWM-Modus Config Pinf.0 = Output Led0 Alias Portf.0 Config Pinf.1 = Output Led1 Alias Portf.1 Config Pinf.2 = Output Led2 Alias Portf.2 Config Pinf.3 = Output Led3 Alias Portf.3 Config Pinc.0 = Output ' Pin 45; PC0 Motor1_reset Alias Portc.0 Config Pinc.1 = Output ' Pin 46; PC1 Motor1_direction Alias Portc.1 Dim I1 As Integer Dim I2 As Integer Dim Takt_hz As Long Echo Off Led0 = 1 ' LEDs einschalten Led1 = 1 Led2 = 1 Led3 = 1 ' reset Motortreiber Motor1_reset = 1 Waitms 500 Motor1_reset = 0 Waitms 500 Motor1_reset = 1 Motor1_direction = 1 I1 = 1 I2 = 50 On Compare1a Timer1_isr Tccr1a = &B11000011 Tccr1b = &B00011101 ' Enable Compare1a Enable Interrupts Compare1a = 30 ' Frequenz Hz für die Drehgeschwindigkeit Loop End Timer1_isr: I1 = I1 + 1 If I1 = 1025 Then 'Tccr1b = &B00001000 ' Timer/ Counter stopped, no clock source End If Return







Zitieren
Lesezeichen