Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Fragen zur Software

Basteleien analog und digital mit Strom und Spannung.

Moderator: radioscout

Benutzeravatar
Kappler
Geowizard
Beiträge: 1439
Registriert: So 31. Dez 2006, 16:51
Wohnort: 77876 Kappelrodeck

Re: Fragen zur Software

Beitrag von Kappler » Mi 17. Nov 2010, 15:18

Zunächst mal kannst du in beiden IF-Abfragen den ELSE-Zweig weglassen:
Wenn die Taste gedrückt wird, soll ins Unterprogramm verzweigt werden, wenn die Taste ruht, dann soll nichts passieren.

Dann auf jden Fall den Start Adc weglassen. Das startet eine Analog-Digital-Wandlung, die du gar nicht brauchst und die auch gar nicht näher initialisiert ist. Keine Ahnung, was so passiert...

In den Unterprogrammen auf keinen Fall alle Bits von Portb setzen, sondern nur das Bit, dessen zugehörigen Ausgang du setzen willst. Sonst schaltest du bei den Eingängen die Pullup-Widerstände, die du zuvor mühsam gesetzt hast, wieder aus.
Also z.B. Portb.3 = 1

Also folgendermaßen:

Code: Alles auswählen

$hwstack = 20                                               'hardwarestack herabsetzen damit genügend variablen zur verfügung stehen
$regfile = "ATtiny13.DAT"
$crystal = 128000                                           'Frequenz des internen Oszillators

Config Portb = &B00011000                                   'Pinb.4+3 auf 'Ausgang', Rest auf 'Eingang' schalten
Portb = &B00000110                                          'Ausgänge auf Low setzen
Stop Ac                                                     'Analog-Komparator abschalten, um Strom zu sparen

Wdtcr = &B11010011                                          'Watchdog definieren: 0.125 Sekunden, Interrupt auslösen, kein Reset
Enable Interrupts                                           'Interrupts freigeben

Do
   Reset Watchdog
   Powerdown

   If Pinb.1 = 0 Then                                         
      Gosub A
   End If

   If Pinb.2 = 0 Then                                         
      Gosub B
   End If
Loop

A:
   Portb.3 = 1
   Reset Watchdog
   Powerdown
   Portb.3 = 0
   Reset Watchdog
   Powerdown
   Portb.3 = 1
   Reset Watchdog
   Powerdown
   Portb.3 = 0
   Reset Watchdog
   Powerdown
   Portb.3 = 1
   Reset Watchdog
   Powerdown
   Portb.3 = 0
Return

B:
   Portb.4 = 1
   Reset Watchdog
   Powerdown
   Portb.4 = 0
   Reset Watchdog
   Powerdown
   Portb.4 = 1
   Reset Watchdog
   Powerdown
   Portb.4 = 0
   Reset Watchdog
   Powerdown
   Portb.4 = 1
   Reset Watchdog
   Powerdown
   Portb.4 = 0
   Reset Watchdog
   Powerdown
   Portb.4 = 1
   Reset Watchdog
   Powerdown
   Portb.4 = 0
Return

End
Und wenn das alles funktioniert und du es soweit verstanden hast, kannst du dir mal For...Next Schleifen anschauen, das macht das Leben in einigen Bereichen viel einfacher, bei dir insbesondere die Unterprogramme A und B übersichtlicher :D
Gruß aus dem (badischen) Schwarzwald, Andreas (1/4 Kappler)
Bekennender Fremdlogleser und Rosinenpicker

Werbung:
Benutzeravatar
upigors
Geowizard
Beiträge: 2350
Registriert: Mo 24. Sep 2007, 15:52
Wohnort: 39326 Hohenwarsleben
Kontaktdaten:

Re: Fragen zur Software

Beitrag von upigors » Mi 17. Nov 2010, 16:04

OK, hab ich verstanden. Wird morgen früh gleich getestet und wenns klappt sind wohl alle Unklarheiten beseitigt. Warum nun aber genau mein Programm immer in ner Schleife lief weiß ich zwar nicht (an den Pullups kanns ja glaubich nicht gelegen haben) aber für spätere Anwendungen kann ich ja dann das funktionierende Gerüst übernehmen. Danke auf jeden Fall für deine Geduld mit mir ;)
Diese For-To-Next-Schleifen kenn ich noch im Ansatz aus "Basic Grundkurs am KC85" aus der Berufsschule aber das ist 22 Jahre her. Nichts destso Trotz hab ich mich vorhin schon daran erinnert als ich das Programm geschrieben hab. Da es mir hier aber nur ums prinzipielle Erkennen ging hab ich da drauf verzichtet. Ich glaub aber im ursprünglichen Reaktivlicht (10 kurze Blitze) von Windi ist auch eine, da kann ich ja dann nochmal spicken ;)

Gruß aus dem (nordelbischen) Sachsen Anhalt
Uwe
Bild..Bild

thomas_st
Geowizard
Beiträge: 1643
Registriert: Fr 18. Nov 2005, 16:30
Wohnort: ~ N 51°21' E 12°00'

Re: Fragen zur Software

Beitrag von thomas_st » Mi 17. Nov 2010, 17:19

Ich mische mich mal in Eure Diskussion ein - stört hoffentlich nicht.
upigors hat geschrieben:Warum nun aber genau mein Programm immer in ner Schleife lief weiß ich zwar nicht (an den Pullups kanns ja glaubich nicht gelegen haben)[...]
Doch, genau daran hat es gelegen: Die Eingänge des Tiny sind sehr hochohmig - will heißen, da fließt so schnell kein Strom "hinein" oder "heraus". Wenn Du nun den Taster schließt, fließen die Ladung (bitte jetzt keine Diskussion über physikalische und technische Stromrichtung, Ladung von Elektronen u.s.w.) nach GND ab: der Eingang des Tinys ist also entladen. Wenn der Taster jetzt losgelassen wird, kann die Ladung sich so schnell nicht wieder aufbauen (der Taster ist ja geöffnet - da kann nichts strömen - und aus dem Tiny kommt auch kaum was herausgeströmt (siehe oben). Der Eingangstransistor des Tiny wird ein Feldeffekttransistor sein. Dieser reagiert - wie der Name schon sagt - auf das elektrische Feld. Dieses ist aber nunmehr weg und neu laden geht nicht so schnell - kein Feld: geschlossener Transistor und ein Tiny der weiter "denkt" die Taste ist gedrückt.

Der PullUp-Widerstand ist jetzt für nichts anderes da, als die Ladung wieder aufzubauen.

Alle Klarheiten beseitigt?

Viele Grüße,
Thomas(_st)

Benutzeravatar
upigors
Geowizard
Beiträge: 2350
Registriert: Mo 24. Sep 2007, 15:52
Wohnort: 39326 Hohenwarsleben
Kontaktdaten:

Re: Fragen zur Software

Beitrag von upigors » Mi 17. Nov 2010, 19:06

OK, vielen Dank für die Erläuterungen.
Ich glaub jetzt hab ich es verstanden :roll:
Gruß Uwe
Bild..Bild

Benutzeravatar
upigors
Geowizard
Beiträge: 2350
Registriert: Mo 24. Sep 2007, 15:52
Wohnort: 39326 Hohenwarsleben
Kontaktdaten:

Re: Fragen zur Software

Beitrag von upigors » Do 18. Nov 2010, 09:26

Kappler hat geschrieben:Dann mach es digital... Braucht auch weniger Strom, würde ich vermuten.
in Ruhe 4,7µA mit meiner weissen Test LED bei on 8,xx mA an 3V
wer brauch da nen Schlafmodus ;)
Bild..Bild

Benutzeravatar
upigors
Geowizard
Beiträge: 2350
Registriert: Mo 24. Sep 2007, 15:52
Wohnort: 39326 Hohenwarsleben
Kontaktdaten:

Re: Fragen zur Software

Beitrag von upigors » Do 18. Nov 2010, 09:33

Kappler hat geschrieben: In den Unterprogrammen auf keinen Fall alle Bits von Portb setzen, sondern nur das Bit, dessen zugehörigen Ausgang du setzen willst. Sonst schaltest du bei den Eingängen die Pullup-Widerstände, die du zuvor mühsam gesetzt hast, wieder aus.
Dann bekomm ich Probleme wenn ich z.B. ne 7 Segment Anzeige bauen möchte die bei Eingang 1 nen anderen Text ausgeben sollals bei Eingang 2.
Sind die Texte kurz wird das, mal abgesehen von der Fleißarbeit jeden balken via

Code: Alles auswählen

Portb.4 = 1
Reset Watchdog
Powerdown
zu setzen wird der Speicher da ganz schnell voll sein.
Da wäre ich dann auf diesen Code

Code: Alles auswählen

Portb = &B00001000
angewiesen. Müsste ich dann das ganze analog aufbauen um die Pullups ganz zu vermeiden oder gibts nen Trick?
Bild..Bild

Benutzeravatar
Kappler
Geowizard
Beiträge: 1439
Registriert: So 31. Dez 2006, 16:51
Wohnort: 77876 Kappelrodeck

Re: Fragen zur Software

Beitrag von Kappler » Do 18. Nov 2010, 09:36

upigors hat geschrieben:...wer brauch da nen Schlafmodus ;)
Wieso, Schlafmodus ist doch drin:

Code: Alles auswählen

Do
   Reset Watchdog
   Powerdown

   If Pinb.1 = 0 Then                                         
      Gosub A
   End If

   If Pinb.2 = 0 Then                                         
      Gosub B
   End If
Loop
Zeilen 2 und 3 machen nichts anderes, als in jedem Schleifendurchlauf den Prozessor schlafen zu schicken, danach werden mal schnell die Tasten durchprobiert und dann pennt er schon wieder ein...
Mach die beiden Zeilen

Code: Alles auswählen

   Reset Watchdog
   Powerdown
doch mal spaßeshalber raus - ich wette, der Stromverbrauch geht um den Faktor 100 bis 1000 nach oben...
Gruß aus dem (badischen) Schwarzwald, Andreas (1/4 Kappler)
Bekennender Fremdlogleser und Rosinenpicker

Benutzeravatar
Kappler
Geowizard
Beiträge: 1439
Registriert: So 31. Dez 2006, 16:51
Wohnort: 77876 Kappelrodeck

Re: Fragen zur Software

Beitrag von Kappler » Do 18. Nov 2010, 09:40

upigors hat geschrieben:
Kappler hat geschrieben: In den Unterprogrammen auf keinen Fall alle Bits von Portb setzen, sondern nur das Bit, dessen zugehörigen Ausgang du setzen willst. Sonst schaltest du bei den Eingängen die Pullup-Widerstände, die du zuvor mühsam gesetzt hast, wieder aus.
Dann bekomm ich Probleme wenn ich z.B. ne 7 Segment Anzeige bauen möchte die bei Eingang 1 nen anderen Text ausgeben sollals bei Eingang 2.
Sind die Texte kurz wird das, mal abgesehen von der Fleißarbeit jeden balken via

Code: Alles auswählen

Portb.4 = 1
Reset Watchdog
Powerdown
zu setzen wird der Speicher da ganz schnell voll sein.
Da wäre ich dann auf diesen Code

Code: Alles auswählen

Portb = &B00001000
angewiesen. Müsste ich dann das ganze analog aufbauen um die Pullups ganz zu vermeiden oder gibts nen Trick?
Kein Problem (wozu auch? Das Leben ist schon schwer genug :D ):
Setze beim Portb-Befehl im Bitmuster bei den entsprechenden Eingängen immer eine "1", dann bleiben die Pullup-Widerstände eingeschaltet:
beispielsweise

Code: Alles auswählen

Portb = &Bxxxxx111
wenn die Bits 0-2 als Eingang konfiguriert sind. Die x-en sind das gewünschte Bitmuster für die Ausgänge...
Gruß aus dem (badischen) Schwarzwald, Andreas (1/4 Kappler)
Bekennender Fremdlogleser und Rosinenpicker

Benutzeravatar
upigors
Geowizard
Beiträge: 2350
Registriert: Mo 24. Sep 2007, 15:52
Wohnort: 39326 Hohenwarsleben
Kontaktdaten:

Re: Fragen zur Software

Beitrag von upigors » Do 18. Nov 2010, 09:46

Kappler hat geschrieben:
upigors hat geschrieben:...wer brauch da nen Schlafmodus ;)
Wieso, Schlafmodus ist doch drin:
mein Fehler im Ausdruck, ich meinte eine "Tagabschaltung" um Strom zu sparen wenn das Ganze z.B. in nem Nachtcache Anwendung finden sollte. Bei 5µA im Normalbetrieb sehe ich die als Überflüssig an.
Bild..Bild

Benutzeravatar
upigors
Geowizard
Beiträge: 2350
Registriert: Mo 24. Sep 2007, 15:52
Wohnort: 39326 Hohenwarsleben
Kontaktdaten:

Re: Fragen zur Software

Beitrag von upigors » Do 18. Nov 2010, 09:47

Kappler hat geschrieben:Setze beim Portb-Befehl im Bitmuster bei den entsprechenden Eingängen immer eine "1", dann bleiben die Pullup-Widerstände eingeschaltet:
beispielsweise

Code: Alles auswählen

Portb = &Bxxxxx111
wenn die Bits 0-2 als Eingang konfiguriert sind. Die x-en sind das gewünschte Bitmuster für die Ausgänge...
das probier ich gleich mal....
Bild..Bild

Antworten