PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM -> DAC HILFE!!!



x-ryder
30.09.2004, 09:24
N' Tach!

Ist hier jemand, der sich gut mit PWM auskennt?

Ich finde kein passendes Tutorial und ich möchte den PWM benutzen als eine Art DAC. (das geht doch oder?)

Martin

RCO
30.09.2004, 09:49
Werd mal präziser: Welcher Controller/Chip, welche Sprache.
Sorry aber was ist DAC? DA-Wandler?

x-ryder
30.09.2004, 10:22
Hi,

Bascom-AVR mit dem ATMEGA8 oder ATMEGA128.

DAC=Digital-Analog-Converter

Martin

RCO
30.09.2004, 10:28
Gut! Da kann ich dir helfen.
Also der DAC läuft als PWM.
DU benötigst einen Timer. Leider bin ich grad nicht zu Hause, sonst könnte ich dir BeispielCode schicken. Aber vielleicht hast du ja BAscom AVR von Kühnel glaub ich, da steht das drin. Ansonsten musst du mal die Samples durchsuchen, die bei BAscom dabei sind. Leider gibts ja verschiedene Versionen von BAsom mit verschiedenen Samples, in der älteren Version ist auf jeden Fall ein Beipiel dabei, in der neuren bestimmt auch. Schau mal durch, wirt ja PWM heißen oder so. Ansonsten schick ich dir den Code. ICh kann allerdings nciht versprechen, dass das heute noch klappt.

MFG Moritz

x-ryder
30.09.2004, 12:47
Bei den Application Notes iss ja kein Codebeispiel dabei und das inner BASCOM Hilfe kapier ich nicht.

Vielleicht kannste mir dein Prog doch nochmal schicken muss aber nicht heute sein bloß keine eile :cheesy:

Martin

RCO
30.09.2004, 13:57
Ich meinte nicht die Bascom Hilfe, sondern, dass bei Bascom ein Ordner Samples dabei ist, der heißt auf jeden Falls genau so, und da könnte was drin sein. ICh weiß nciht genau, was du mit Application Notes meinst.

RCO
30.09.2004, 13:59
Nein, tatsächlich nicht :-b
ICh schick dir das dann mal vorbei.

RCO
30.09.2004, 16:44
Hier das Prog, ich bin allerdings sicher, dass das einfacher geht.


Const True = 1
Const False = 0

Dim Hi As Byte
Dim Lo As Byte
Dim A As Byte
Dim Phase As Bit
Dim Pattern As Byte ' Bit pattern for display

Pwm Alias Portb.0 ' Modulated Pin

Config Timer0 = Timer , Prescale = 64 ' Rate 244 Hz at 4 MHz Clock

On Timer0 Timer0_isr ' Jump to Timer1 ISR

Config Portb = Output

Enable Timer0 ' Enable the timer interrupt
Enable Interrupts ' Enable Global Interrupt

Lo = 128 ' Initial value for PWM
Phase = True

Do
A = Pind ' Ask for Key
Select Case A
Case &B11111110 : Lo = 0 ' Lo Time short, Hi Time long
Case &B11111101 : Lo = 32
Case &B11111011 : Lo = 64
Case &B11110111 : Lo = 96
Case &B11101111 : Lo = 128
Case &B11011111 : Lo = 160
Case &B10111111 : Lo = 192
Case &B01111111 : Lo = 255 ' Lo Time long. Hi Time short
End Select
Hi = 255 - Lo
Incr Pattern ' Change Bit Pattern
Waitms 100 ' Wait 100 ms
Loop

End

Timer0_isr:
If Phase = True Then
Portb = &HFF ' LED off
Timer0 = Lo ' Reload Timer0
Phase = False
Else

Portb = Not Pattern ' LED on
Timer0 = Hi ' Reload Timer0
Phase = True
End If
Return

RCO
01.10.2004, 12:06
Ich verweise jetzt einfach mal auf:
https://www.roboternetz.de/phpBB2/viewtopic.php?p=33277#33277
denn da versuche ich grad das Problem zu lösen.