Hallo an Alle,
ich möchte mit einem Attiny13 eine Steuerung realisieren, welche erstens ein angeschlossenes Akkupack laden und zweitens dieses über ein Lämpchen wieder entladen (eigentlich der Hauptnutzen) kann.
Jetzt habe ich an den Portb.0 einen Schalter angeschlossen, der den Interrupt-Eingang gegen Masse oder Ub ziehen kann. Das Programm beinhaltet zwei Unterprogramme (Laden und Entladen) die, je nachdem auf welcher Position der Schalter steht, ausgeführt werden sollen. Gesteuert werden soll das Ganze also durch einen Interrupt....
Und da habe ich nun folgendes Problem, dass nur das Programm "Entladen" ausgeführt wird. Irgendwie erkennt der Controller den Interrupt nicht, wenn PCINT0 "high" wird, jedenfalls wird der "Laden" teil nie ausgeführt...
Hier mein Code:
Vielleicht habe ich einfach nur was übersehen, denn ich bin noch Anfänger.....Code:$regfile = "attiny13.dat" $crystal = 4800000 $hwstack = 32 $swstack = 8 $framesize = 16 Stop Ac 'Analogen Komparator ausschalten Dim Modus As Bit Dim Vbatt As Word Config Adc = Single , Prescaler = Auto , Reference = Internal '1,1Volt interne Referenzspannung ' 1,1V / 1024 = 0,00107V Auflösung; direkt am ADC ' mit Spannungsteiler :4,54545... kann bis 5V gemessen werden (Auflösung real ca.0,02V) Config Int0 = Change On Pcint0 Interrupt Config Portb.0 = Input '=0, dann Entladen und Tiefentladeschutz / =1, dann Laden und Ladeschluss Config Portb.1 = Output '=0, dann Lämpchen aus Config Portb.2 = Output '=1, dann Ladestrom aus / =0, dann Ladestrom an Config Portb.4 = Output 'LED + Piezo '___________________________________________________________________________________________________________________________________ Enable Interrupts Enable Int0 If Pinb.0 = 0 Then Gosub Entladen End If If Pinb.0 = 1 Then Gosub Laden End If '################################################## Entladen: Portb.2 = 1 'Ladestrom aus ' Portb.1 = 1 'Lämpchen an Do If Modus = 1 Then 'Abfrage nach wiederaufwachen nach Powerdown Goto Laden End If Vbatt = Getadc(3) If Vbatt < 615 Then '615 entspricht 3V bei Spannungsteiler ducrch 4,545 an ADC3 Portb.1 = 0 Sound Portb.4 , 400 , 600 Waitms 1000 Sound Portb.4 , 400 , 600 Config Powermode = Powerdown End If Loop Stop '################################################## Laden: Portb.2 = 0 'Ladestrom an Portb.1 = 0 'Lämpchen unbedingt aus Portb.4 = 1 'Kontroll-LED an => Laden Do Waitms 60000 '60s laden, dann Spannung ohne Ladestrom messen Portb.2 = 1 'Ladestrom aus Waitms 1000 '1s vor Messung warten Vbatt = Getadc(3) If Vbatt > 881 Then '881 entspricht 4,3V Portb.2 = 1 'ladestrom aus Sound Portb.4 , 800 , 400 Portb.4 = 0 'Kontroll-LED aus => geladen Else Portb.2 = 0 'Ladestrom wieder an End If Loop Stop '################################################## Interrupt: Waitms 100 Modus = Pinb.0 'Modus=0, dann Entladen / Modus=1, dann Laden If Modus = 0 Then Gosub Entladen End If If Modus = 1 Then Gosub Laden End If Return
Ich wäre dankbar über jede Hilfe und freue mich auf Rückmeldungen.
Beste Grüße so kurz vor Weihnachten,
Jo







Zitieren


Lesezeichen