joho63
23.10.2013, 15:20
Hallo!
Mein Problem ist:
Ich habe ein kleines Programm in Bascom erstellt. Das schaltet einen Mosfet abhängig von einer analogen Eingangsspannung ein, und zwar in einem Fenster von 120mV bis 250mV Dauer Ein, bei mehr oder weniger Spannung für eine Sekunde Ein/Aus.
Der Timer erzeugt 75,2kHz, damit wird der Mosfet geschaltet.
Dieses Programm läuft auf einem Attiny13 tadellos.
Um die Sache noch zu verkleinern, möchte ich einen Attiny 10 verwenden.
Das Programm hat nur 272 Bytes, braucht einen Timer und einen analogen Eingang, der interne Oszillator ist genau genug dafür.
Da der Tiny10 aber von Bascom nicht unterstützt wird, brauche ich das ganze in C (kann ich nicht).
Hier das Programm:
$regfile = "attiny13.dat"
$crystal = 9600000 'intern
$hwstack = 22
$swstack = 24
$framesize = 16
Config Portb.1 = Output ' zum Mosfet
Config Portb.3 = Input ' B.3 = Analog-Eingang
Dim Result As Integer
Config Adc = Single , Prescaler = Auto , Reference = Internal
Do
Result = Getadc(3)
If Result > 120 And Result < 250 Then 'Ein bei 0,12V, Aus bei 0,25V
Gosub Timer_on
Else
Gosub Timer_off
Wait 1 '= Auszeit
Gosub Timer_on
End If
Wait 1 '= Einzeit
Loop
End
Timer_on:
Tccr0a = 66 'hex: 42 Set COM0A1:0 = 0 , 1; Set WGM1:0 = 1 , 0
Ocr0a = 64 'hex:40 Timerstartwert für 75,2kHz
Tccr0b = 9 'hex: 09 Start Timer, Prescaling = 1, WGM02 = 1
Return
Timer_off:
Tccr0a = 2 'hex: 02 COM0A auf 0 gesetzt!
Return
Programmer hab ich (myAVR Smart USB MK3), auch schon anderes mit programmiert, sollte also kein Problem sein.
Die Registerklimmzüge mußte ich machen, weil der Ausgang bei Timer Aus nicht definiert Low Pegel hat.
Ich Bin dankbar für jede Hilfe. Joachim
Mein Problem ist:
Ich habe ein kleines Programm in Bascom erstellt. Das schaltet einen Mosfet abhängig von einer analogen Eingangsspannung ein, und zwar in einem Fenster von 120mV bis 250mV Dauer Ein, bei mehr oder weniger Spannung für eine Sekunde Ein/Aus.
Der Timer erzeugt 75,2kHz, damit wird der Mosfet geschaltet.
Dieses Programm läuft auf einem Attiny13 tadellos.
Um die Sache noch zu verkleinern, möchte ich einen Attiny 10 verwenden.
Das Programm hat nur 272 Bytes, braucht einen Timer und einen analogen Eingang, der interne Oszillator ist genau genug dafür.
Da der Tiny10 aber von Bascom nicht unterstützt wird, brauche ich das ganze in C (kann ich nicht).
Hier das Programm:
$regfile = "attiny13.dat"
$crystal = 9600000 'intern
$hwstack = 22
$swstack = 24
$framesize = 16
Config Portb.1 = Output ' zum Mosfet
Config Portb.3 = Input ' B.3 = Analog-Eingang
Dim Result As Integer
Config Adc = Single , Prescaler = Auto , Reference = Internal
Do
Result = Getadc(3)
If Result > 120 And Result < 250 Then 'Ein bei 0,12V, Aus bei 0,25V
Gosub Timer_on
Else
Gosub Timer_off
Wait 1 '= Auszeit
Gosub Timer_on
End If
Wait 1 '= Einzeit
Loop
End
Timer_on:
Tccr0a = 66 'hex: 42 Set COM0A1:0 = 0 , 1; Set WGM1:0 = 1 , 0
Ocr0a = 64 'hex:40 Timerstartwert für 75,2kHz
Tccr0b = 9 'hex: 09 Start Timer, Prescaling = 1, WGM02 = 1
Return
Timer_off:
Tccr0a = 2 'hex: 02 COM0A auf 0 gesetzt!
Return
Programmer hab ich (myAVR Smart USB MK3), auch schon anderes mit programmiert, sollte also kein Problem sein.
Die Registerklimmzüge mußte ich machen, weil der Ausgang bei Timer Aus nicht definiert Low Pegel hat.
Ich Bin dankbar für jede Hilfe. Joachim