PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe : Atmega8 + PWM + ADC + usw.



hellraider
01.03.2007, 18:11
Hallo,
ich bin gerade dabei, u.g. Programm zum laufen zu bringen,
um meine Hardware zu testen. Jedoch will der PWM einfach nicht laufen.

Kann mir vielleicht jemand helfen, was ich falsch mache ? :-b


'************************************************* ***************************'
'** Tauchlampe - Test 1 **'
'************************************************* ***************************'
'** D2 = Reed 1 Input ( minus ) ** C0 = PWM Ausgang **'
'** D3 = Reed 2 Input ( minus ) ** C1 = LED Lampenkopf **'
'** B1 = LED doppel rot ** C4 = LM35 Input ( ADC4) **'
'** B2 = LED doppel grün ** C5 = Akkuspannung Input ( ADC5) **'
'************************************************* ***************************'
'** Display ** D5 = DL4 ** D6 = DL5 ** D7 = DL6 **'
'** ** B0 = DL7 ** B6 = RS ** B7 = E **'
'************************************************* ***************************'

$regfile = "m8def.dat" ' AVR Atmega 8
$crystal = 1000000 ' Quarzfrequenz int.
$hwstack = 32
$swstack = 10
$framesize = 40

Config Lcd = 16 * 2
Waitms 200
Cls

Config Pinc.0 = Output
Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 1

Waitms 200

Compare1a = 125

Enable Interrupts
Config Adc = Single , Prescaler = Auto 'ADC aktivieren
Start Adc

Dim U As Byte 'Spannung
Dim T As Byte 'Temperatur
Dim P As Byte 'PWM-Signal

Test:
Cls
Upperline
Lcd "Tauchlampe V1.0"
Lowerline
Lcd "Klaus"
Portb.1 = 1
Waitms 200
Portb.1 = 0
Portb.2 = 1
Waitms 200
Portb.2 = 0
Portc.1 = 1
Waitms 200
Portc.1 = 0

Pwm1a = 125

Goto Test


Insbesondere habe ich Probleme mit dem Timer2 der einfach kein PWM-Signal am Ausgang erzeugen will.
Die Hardware funktioniert, denn wenn ich mir ein Signal ext. hole, läuft die Sache.

Danke schon mal im vorraus für euere Hilfe

Gruß hellraider

Michael
01.03.2007, 18:39
Hallo hellraider,

Config Timer2
.
Compare1a = 125
.
Pwm1a = 125

Funktioniert mittlerweile PWM2 mit Bascom?
Das wäre mir neu.

Oben konfigurierst du Timer2 und dann sprichst du Timer1 an.
Das Register für PWM von Timer2 heißt ocr2.

Gruß, Michael

hellraider
01.03.2007, 19:11
Hallo,
also wenn ich das dann richtig verstanden habe, müßte es so lauten :

*************************************
Config Pinc.0 = Output
Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
Enable Timer2

Waitms 200

Ocr2 = 50
*************************************
Aber irgendwie geht das auch nicht

Bitte helft mir, bin am Verzweifeln

Gruß

Michael
01.03.2007, 19:25
Hallo hellraider,

erstmal ist der Ausgang für OCR2 PortB.3 und nicht PortC.0

mit
TCCR2 = &B01110010
und
OCR2 = 50

solltest du Erfolg an PortB.3 haben

Genaueres zum TCCR2 findest du im Datenblatt des Atmega8.

Gruß, Michael