Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM -> DAC HILFE!!!
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
Werd mal präziser: Welcher Controller/Chip, welche Sprache.
Sorry aber was ist DAC? DA-Wandler?
Hi,
Bascom-AVR mit dem ATMEGA8 oder ATMEGA128.
DAC=Digital-Analog-Converter
Martin
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
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
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.
Nein, tatsächlich nicht :-b
ICh schick dir das dann mal vorbei.
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
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.