Hallo Leute,
hier ist mein kleines Projekt, pandora ist eine Platine die in eins von den 1-Euro Gehäusen rein passt. Auf der selbst geätzten Platine sitzt ein ATmega48, 10 MHz Quarz, 6 MOSFETs, ein myUSBtoUART und Kleinfutter.
Noch kurz die wichtigen Daten:
Eingangsspannung: 7-28 V
Ausgangsspannung: 7-28 V
Schaltstrom: 2,5 A
Platinen Layout als PDF
myPandora Layout.pdf
Als Firmware läuft folgender code:
Code
'########################
'# PANDORA #
'# #
'# 2011 by paralux #
'# #
'########################
$regfile = "m48def.dat"
$crystal = 10000000
'$regfile = "m16def.dat"
'$crystal = 16000000
$baud = 57600
Dim M1 As Byte
Dim M2 As Eram Byte
M1 = M2
If M1 = "0" Then
Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Elseif M1 = "1" Then
Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Elseif M1 = "2" Then
Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer2 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Elseif M1 = "3" Then
'more Timer
Else
End If
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Serialout = Buffered , Size = 64
Config Serialin = Buffered , Size = 64 , Bytematch = 13
Enable Timer0
Enable Timer1
Enable Timer2
Enable Interrupts
Declare Sub Serial0charmatch()
Dim Buffer As String * 64
Dim R1 As Byte
Dim G1 As Byte
Dim B1 As Byte
Dim R2 As Byte
Dim G2 As Byte
Dim B2 As Byte
Dim R1s As Eram Byte
Dim G1s As Eram Byte
Dim B1s As Eram Byte
Dim R2s As Eram Byte
Dim G2s As Eram Byte
Dim B2s As Eram Byte
Dim Ar(4) As String * 50
Dim Bcount As Byte
Dim Pass As String * 32
Dim Password As Eram String * 32 ' Password?
Dim Sys1 As Eram String * 32 ' Reserved
Dim Sys2 As Eram String * 32 ' Reserved
Dim Sys3 As Eram String * 32 ' Reserved
Print "myPandora läuft"
Waitms 1
Cls
R1 = R1s
G1 = G1s
B1 = B1s
R2 = R2s
G2 = G2s
B2 = B2s
Pass = Password
If Pass = "" Then Pass = "password"
Do
If M1 = "0" Then
Pwm1a = R1
Pwm1b = G1
Elseif M1 = "1" Then
Pwm1a = R1
Pwm1b = G1
Pwm0a = R2
Pwm0b = G2
Elseif M1 = "2" Then
Pwm1a = R1
Pwm1b = G1
Pwm0a = R2
Pwm0b = G2
Pwm2a = B1
Pwm2b = B2
Elseif M1 = "3" Then
' nothing
Else
End If
Input Buffer Noecho ' UART Input
Bcount = Split(buffer , Ar(1) , ".") ' Split String
If Ar(1) = "B" Then
If Ar(2) = "info" Then
Print "Firmware Version: 1.10"
Print "Hardware Version: 1.00"
If M1 = "0" Then
Print "Timer: 0 ON Prescale = 1"
Elseif M1 = "1" Then
Print "Timer: 0,1 ON Prescale = 1"
Elseif M1 = "2" Then
Print "Timer: 0,1,2 ON Prescale = 1"
Elseif M1 = "3" Then
Print "nothing"
Else
End If
Elseif Ar(2) = "conn" Then
Print "mit myPandora verbunden."
Elseif Ar(2) = "core" Then
Print "ATmega48 @ 10 MHz"
Else
End If
Elseif Ar(1) = "C" Then ' Set Color 1
R1 = Val(ar(2))
G1 = Val(ar(3))
B1 = Val(ar(4))
Elseif Ar(1) = "D" Then ' Set Color 2
R2 = Val(ar(2))
G2 = Val(ar(3))
B2 = Val(ar(4))
Elseif Ar(1) = "E" Then ' Change Password
If Pass = Ar(2) Then
Password = Ar(3)
End If
Elseif Ar(1) = "S" Then ' Save Color 1
R1s = Ar(2)
G1s = Ar(3)
B1s = Ar(4)
Print "Farbe 1 gespeichert."
Elseif Ar(1) = "T" Then ' Save Color 2
R2s = Ar(2)
G2s = Ar(3)
B2s = Ar(4)
Print "Farbe 2 gespeichert."
Elseif Ar(1) = "M" Then ' Change Timer Mode
M2 = Ar(2)
Print "Mode: " ; Ar(2)
Else
' Do nothing
End If
Loop
Sub Serial0charmatch()
End Sub
End
Alles anzeigen
Die Firmware wird von mir noch weiter entwickelt, derzeit belegt diese 63% des ATmega48.
MfG
paralux