... jeder fängt irgendwann mal mit BASCOM an ...
... und nun auch ich ...
Allerdings gestaltet sich die Sache schwieriger als erwartet, da es trotz intensiver Suche kein in meinen Augen brauchbares Tutorial gibt... Oder hat irgendwer Empfehlungen, auch in Buchform?
Gleich eine Frage zu BASCOM (aktuelle Version) vorweg:
Kann es wohl sein, das der komische Hardware-Simulator (das Dingen mit den LED's und dem LCD) nicht ordentlich funktioniert? Das betrifft auch das Fenster Variables. Beide aktualisieren sich bei einer Simulation nicht automatisch. Erst wenn ich mit der Maus z.B. auf eine LED eines nicht benutzen Port's klicke, wird es aktualisiert, ansonsten nicht.
Liegt das an meinem Rechner/OS (XP Pro x64, AMD Phenom 9750 Quad)? Wenn nicht, ist der Simulator doch vollkommen witzlos ](*,)
Nun zum Thema:
Zur Geschichte ist zu sagen, das ich mir dachte, das ein Basic- Dialekt gerade für ganz einfache Steuerungsaufgaben in Verbindung mit den kleinen Tiny's wesentlich einfacher und schneller zu verwenden ist als ASM oder C.
In diesem Sinne habe ich mir auch ein Projekt als Übung ausgedacht, welches hier als rein analoge Lösung existiert (NE556, OP's, ...). Dabei handelt es sich um eine "intelligente" Außenlichtsteuerung mit IR- Bewegungsmelder, 2 Taster im Flur und Helligkeitssensor
Diese Funktionalität möchte ich als Übung unter BASCOM so oder so ähnlich incl. einiger Erweiterungen (über die Taster programmierbar, 1wire, ...) mit einem Tiny84 nachbauen.
Im Grunde habe ich schon das Grundgerüst komplett. Allerdings stehe ich noch vor ein paar Schwierigkeiten, bei denen mir ggf. hier wer auf den richtigen Weg helfen könnte?!?
Das erste betrifft die BIT- Manipulation innerhalb eines mit DIM gesetzten Bytes. Das Setzen eines einzelnen BIT's ist ja kein Thema (BITS(x.y....), =&h... oder =&b...), aber das gezielte Löschen klappt irgendwie nicht.
Das zweite betrifft die Verwendung von DEBOUNCE. Im Prinzip ist mir die Verwendung klar, allerdings kommt dabei, zumindest über den Simulator, immer was anderes heraus als erwartet. Ich hatte DEBOUNCE für jeden der drei Eingänge auf L-Pegel mit GOSUB gesetzt und bin von allen drei Abfragen zur gleichen SUB gesprungen, um dort die letztendliche Auswertung vorzunehmen. Das klappt aber irgendwie nicht ...
Ein letztes (bis jetzt) ist die Auswertung der PCINTx (PinChangeInterrupts). Kann es sein, das BASCOM das garnienicht unterstützt?
Das sind erstmal meine derzeitigen Probleme. Ich bastle natürlich immer am Quellcode rum, so das eine Veröffentlichung an dieser Stelle m.E. keinen Sinn macht. Mache ich aber gerne, wenn es wer möchte. Das betrifft auch die Beschreibung des finalen Funktionsumfanges ...
Re: ... jeder fängt irgendwann mal mit BASCOM an ...
Zitat:
Zitat von M*I*B
Kann es wohl sein, das der komische Hardware-Simulator (das Dingen mit den LED's und dem LCD) nicht ordentlich funktioniert? Das betrifft auch das Fenster Variables. Beide aktualisieren sich bei einer Simulation nicht automatisch. Erst wenn ich mit der Maus z.B. auf eine LED eines nicht benutzen Port's klicke, wird es aktualisiert, ansonsten nicht.
Liegt das an meinem Rechner/OS (XP Pro x64, AMD Phenom 9750 Quad)? Wenn nicht, ist der Simulator doch vollkommen witzlos ](*,)
Wahrscheinlich aus Geschwindigkeitsgründen werden nicht alle Darstellungen des Simulator während der Ausführung des Programms aktualisiert. Dies wird aber in vielen anderen Simulatoren auch nicht gemacht.
Wenn du die aktuellen Werte sehen möchtest, kannst du die Ausführung jederzeit anhalten. Entweder durch die Knöpfe oben links oder durch Haltepunkte (Breakpoints), die du auf alle Zeilen setzen kannst, die vorne einen gelben Punkt haben.
Zitat:
Zitat von M*I*B
Diese Funktionalität möchte ich als Übung unter BASCOM so oder so ähnlich incl. einiger Erweiterungen (über die Taster programmierbar, 1wire, ...) mit einem Tiny84 nachbauen.
halte ich für eine gute Übung und auch machbar. Ich schätze auch, dass der tiny84 dazu locker in der Lage sein sollte.
Zitat:
Zitat von M*I*B
Das erste betrifft die BIT- Manipulation innerhalb eines mit DIM gesetzten Bytes. Das Setzen eines einzelnen BIT's ist ja kein Thema (BITS(x.y....), =&h... oder =&b...), aber das gezielte Löschen klappt irgendwie nicht.
Du kannst jedes Bit der ganzzahligen Variablentypen separat auf 0 oder 1 setzen. Ebenso die einzelnen Pins eines Ports.
My_Byte.0 = 0 setzt dir das Bit 0 von My_Byte auf 0, alle anderen bleiben unverändert
My_Long.30 = 1 macht das entsprechende bei der Long Variable.
PortA.3 = 1 setzt den Pin3 von PortA auf High-Pegel, bzw. schaltet den PullUp ein.
Das geht auch mit einem Alias
Ausgang alias PortA
Ausgang.3 = 1 hätte den gleichen Effekt.
Zitat:
Zitat von M*I*B
Das zweite betrifft die Verwendung von DEBOUNCE. Im Prinzip ist mir die Verwendung klar, allerdings kommt dabei, zumindest über den Simulator, immer was anderes heraus als erwartet. Ich hatte DEBOUNCE für jeden der drei Eingänge auf L-Pegel mit GOSUB gesetzt und bin von allen drei Abfragen zur gleichen SUB gesprungen, um dort die letztendliche Auswertung vorzunehmen. Das klappt aber irgendwie nicht ...
Zeig mal den Code dazu. Bedenke auch, dass der Pin immer noch mal auf High gehen muss, ansonsten gibt es keine Ausführung der Sub. Die Zeit Überwachung von Debounce funktioniert im Simulator glaube ich nicht.
Zitat:
Zitat von M*I*B
Ein letztes (bis jetzt) ist die Auswertung der PCINTx (PinChangeInterrupts). Kann es sein, das BASCOM das garnienicht unterstützt?
Wenn du dir das Datenblatt des Tiny84 anschaust, dann wirst du feststellen, dass es keinen PCINTx direkt gibt. Anders als der externe Interrupt INT0 werden die PCINT Eingänge gemeinsam abgefragt.
Die PCINTs von Porta sind unter PCINT0 zusammengefasst, die von PortB unter PCINT1.
Wenn du den Pin 3 von PortA benutzen willst, musst die diesen aktivieren. Dies geht über PCMSK0.3 = 1 oder auch PCMSK.PCINT3 = 1
Den Sprung in die ISR legst du so fest:
On PCINT0 PCINT0_ISR
wobei der Name PCINT0_ISR willkürlich gesetzt werden kann.
Wenn du mehrere aktive Pins hast, dann musst du nun in der ISR rausfinden, welcher gesetzt ist.
Re: ... jeder fängt irgendwann mal mit BASCOM an ...
Zitat:
Zitat von M*I*B
kein in meinen Augen brauchbares Tutorial
Hallo!
Ob brauchbar oder nicht, das müssen andere entscheiden.
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/
mfg
Gerold
:-)