Hallo,
ich möchte einen ATmega 328p für eine Batterieanwendung einsetzen,
wo es wirklich auf jedes mA ankommt. Die Stromaufnahme sinkt ja
stark bei kleinere Taktfrequenzen.
Das Programm liest pausenlos ca. 250 Messwerte pro Sekunde und schickt sie
über ein Bluetoothmodul an einen Rechner. Außerdem wartet es auf Befehle
vom Rechner, um hin und wieder einen Pin zu schalten.
Bloß mal so grob als Schätzung, wieviel MHz sollten es bei diesem Programm sein?
Es läuft zZ. mit einem fertigen Modul mit 8MHz sehr stabil, allerdings bewirken
die 8MHz ja eigentlich einen großen Baudratenfehler.
Die Sache würde ich viel kleiner aufbauen und einen entsprechenden Baudratenquarz nehmen.
Was würdet ihr sagen
Gruß Ralf
Display All
ich möchte einen ATmega 328p für eine Batterieanwendung einsetzen,
wo es wirklich auf jedes mA ankommt. Die Stromaufnahme sinkt ja
stark bei kleinere Taktfrequenzen.
Das Programm liest pausenlos ca. 250 Messwerte pro Sekunde und schickt sie
über ein Bluetoothmodul an einen Rechner. Außerdem wartet es auf Befehle
vom Rechner, um hin und wieder einen Pin zu schalten.
Bloß mal so grob als Schätzung, wieviel MHz sollten es bei diesem Programm sein?
Es läuft zZ. mit einem fertigen Modul mit 8MHz sehr stabil, allerdings bewirken
die 8MHz ja eigentlich einen großen Baudratenfehler.
Die Sache würde ich viel kleiner aufbauen und einen entsprechenden Baudratenquarz nehmen.
Was würdet ihr sagen
Gruß Ralf
Source Code
- $regfile = "m328pdef.dat"
- $framesize = 32
- $swstack = 32
- $hwstack = 64
- $crystal = 8000000
- Baud = 57600
- Declare Sub Blinksequenz
- Config Adc = Single , Prescaler = Auto , Reference = Avcc 'AD Wandler initialisieren
- Start Adc
- Config Portd.7 = Output 'der Vibrationsmotor
- Reset Portd.7 'ausschalten
- On Urxc Onrxd
- Enable Urxc
- Enable Interrupts
- Dim Spannung As Word
- Dim Empfangen As String * 10
- Dim Vibr_flag As Boolean , Zaehler_vibr As Word
- Vibr_flag = 0
- Zaehler_vibr = 0
- Do
- Spannung = Getadc(0) 'Spannung messen
- Print "#5F" ; Spannung ; ";" 'Wert senden
- Waitms 4 'kurz warten
- If Vibr_flag = 1 Then
- Call Blinksequenz
- Vibr_flag = 0
- End If
- Loop
- Onrxd:
- Input Empfangen Noecho 'Zeichen einlesen
- If Empfangen = "I" Then
- Vibr_flag = 1
- End If
- Return
- Sub Blinksequenz()
- Set Portd.7
- Waitms 25
- Reset Portd.7
- Waitms 250
- Set Portd.7
- Waitms 25
- Reset Portd.7
- Waitms 250
- Set Portd.7
- Waitms 25
- Reset Portd.7
- End Sub
- End