PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Attiny13 Flamenreglung



Horst12
10.12.2013, 23:41
Hallo liebe Leute
Habe hier ein Problem mit einem Attiny13
An dem ADC ist ein LDR angeschlossen der die Flame von einem Ölbrenner überwacht und über die PWM ein Magnetventil in Sekundentakt öffnen und schliessen soll.
Habe über ein Atmega8 eine solche Steuerung schon am laufen. Jetzt meine Frage: Wie bekomme ich den ADC auf 8 Bit und warum sagt Bascom "Out of SRAM space"

Habe mit Attiny13 noch nicht gearbeitet:(

Hier der Code:

$regfile = "attiny13.dat"
$crystal = 1200000

Dim Flame As Word

Config Portb.0 = Output
Config Portb.3 = Output
Config Portb.4 = Output

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Config Timer0 = Pwm , Compare A Pwm = Clear Down , Prescale = 1024
Enable Timer0


Do
Flame = Getadc(2)
Pwm0a = Flame

If Flame <= 20 Then
Portb.3 = 0
Portb.4 = 0
Elseif Flame > 55 And Flame <= 254 Then
Portb.3 = 1
End If

Loop

for_ro
11.12.2013, 06:44
Wie bekomme ich den ADC auf 8 Bit ...
Wenn du nicht in die Register eingreifen willst oder kannst, dann teile den Wert diurch 4 oder shifte um 2 Stellen nach rechts.

... und warum sagt Bascom "Out of SRAM space"

Weil du im Programm keine Wert für die Stacks und Framesize eingetragen hast. Daher nimmt Bascom die aus den Options -> Chip und die sind wahrscheinlich so hoch, dass die wenigen Byte SRAM schon davon verbraucht werden.
Probier mal recht kleine Werte wie
$hwstack=10
$swstack=10
$framesize=10

oberallgeier
11.12.2013, 08:26
... Problem mit einem Attiny13 ... Wie bekomme ich den ADC auf 8 Bit ... "Out of SRAM space" ...Das Datenblatt kann fast immer Aufklärung schaffen:

... The ADC generates a 10-bit result which is presented in the ADC Data Registers, ADCH and ADCL. By default, the result is presented right adjusted, but can optionally be presented left adjusted by setting the ADLAR bit in ADMUX ...... sprich: optionally be presented left adjusted by setting the ADLAR bit in ADMUX. D.h: mit gesetztem ADLAR ist der 8bittige Wert im ADCH; keine zusätzliche Arbeit, kein Speicherverschludern, das ADCL darf man da getrost vergessen denn man muss nur dieses eine Byte ADCH lesen. Und vorher zweckmässigerweise das Datenblatt des tiny *ggg*.

Bits setzen in Deiner Programmiersprache sollte doch gehen ! ? . . .

SRAM ist beim tiny13 ziemlich spärlich, hier ist der Rat von for_ro sicher passend. Ansonsten darf man eben nie mehr SRAM im Code definieren als verfügbar ist . . . Einzige Möglichkeit: sparen!

Ach ja, noch etwas:
Der Umgang mit Mikrocontrollern ohne das zugehörige Datenblatt zu lesen ist eines der letzten großen Abenteuer unserer Tage.

Horst12
11.12.2013, 20:42
Hallo Leute
Danke für die Tipps.
Bin halt Anfänger

Gruss

Horst12
20.12.2013, 22:29
Schönen Abend Leute
Habe alles probiert mit dem ADC beim Attiny 13. Nichts geht.
Habe mit dem Atmega8 schon viel gemacht, aber der Attiny13 macht mir das Leben schwer.
Jetzt habe ich ein kleines Testprogramm geschrieben für den ADC. Sage mir bitte jemand, warum das Ding nicht so läuft???:(

$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 10
$swstack = 10
$framesize = 10


Dim Flame As Word

Config Portb.3 = Input
Config Portb.0 = Output
Config Portb.1 = Output

Config Adc = Single , Prescaler = 128 , Reference = Avcc

Start Adc



Do
Flame = Getadc(3)

If Flame <= 200 Then
Portb.0 = 0
Portb.1 = 1
Elseif Flame > 200 And Flame <= 800 Then
Portb.1 = 1
Elseif Flame > 800 And Flame <= 1023 Then
Portb.1 = 0
End If

Loop

Danke im Voraus
Und frohes Fest

for_ro
21.12.2013, 08:47
Sage mir bitte jemand, warum das Ding nicht so läuft???:(

"...nicht so läuft???" ist wenig eindeutig. Macht dein Programm auch im Simulator nicht das, was du erwartest?
Grundsätzlich scheint mir daran nichts falsch zu sein. Leider habe ich keinen Tiny13 zum Ausprobieren.

Horst12
22.12.2013, 00:24
Hallo
Im Simulator bei Bascom funktioniert alles. Wenn ich ein Poti mit 25 k an an ADC3 anschliesse leuchtet die LED auf dauer. Egal welchen Werte ich eingebe.
Wenn ich einen Blinker programmiere gehen alle Ports. Controller auch schon getauscht.

Gruß
Horst12

Che Guevara
22.12.2013, 00:46
Was mir gerade beim Überfliegen auffällt:


Config Portb.3 = Input

sollte wohl so sein:


Config Pinb.3 = Input

Weiß nicht genau, wie das bei dem µC so ist, aber ich würde der Vollständigkeit halber noch den Pull-Up abschalten.

Gruß
Chris

for_ro
22.12.2013, 10:21
Hallo
Im Simulator bei Bascom funktioniert alles. Wenn ich ein Poti mit 25 k an an ADC3 anschliesse leuchtet die LED auf dauer. Egal welchen Werte ich eingebe.

Dann würde ich zunächst mal vermuten, dass etwas an deiner HW nicht stimmt. Bist du sicher, dass du das Poti richtig angeschlossen hast?