Hi, naja so wie du dass Schaltest leuchten alle LED's Dauer![]()
Die Flash lights muss ich ja mit dem µC zum Blinken Bringen - darum Kopfschmerzen![]()
Wieso??So nur die Sache mit dem Flash macht mir Kopfschmerzen
Code:... ... Select case Impuls Case is > 110: DDRA = &B01111111 'Flash, Beacon, LS und PosLi als Ausgang Case 75 to 109: DDRA = &B01101111 'Flash, Beacon und PosLi als Ausgang Case is < 75: DDRA = &B01100000 'Nur PosLi als Ausgang End select .. ..Großartig - es gibt m.E. kein besseres, um Bascom von der Pieke auf zu lernen!!!Hi, Ja das Buch kenne ich
EDIT:
In Deinem Beitrg von vorgestern 18.00 Uhr sind´s noch die Landescheinwerfer, die zusammen mit dem Flashlight über den 3-stufigen Schalter geschaltet werden sollen. Das geht ein wenig durcheinander, aber wenn Dir das Prinzip klar ist, kannst Du natürlich auch die Positionslichter über das DDR-Register steuern!
Hi, naja so wie du dass Schaltest leuchten alle LED's Dauer![]()
Die Flash lights muss ich ja mit dem µC zum Blinken Bringen - darum Kopfschmerzen![]()
Gruß
MiniMax
Wenn das so wäre, hätte ich´s nicht so geschrieben.naja so wie du dass Schaltest leuchten alle LED's Dauer
DDRDX.Y = 1 heißt mitnichten, dass der Ausgangspin ein High führt. Er ist lediglich als AUSGANG konfiguriert. Ob er eine 1 oder 0 führt, hängt von PORTX.Y ab.
Mein Vorschlag war also der, in der Hauptroutine die Ports vom Flasher und der Beacon kontinuierlich in ihrem Rhythmus zu setzen und zu löschen, und auf DDR-Ebene zu entscheiden, ob diese Levels wirklich an die Endverbraucher kommen (DDRX.Y = 1) oder eben nicht (DDRX.Y = 0).
BTW: Das Buch von Roland Walter kostet echt nicht die Welt...
Hi, ähmm irgendwie verstehe ich nicht ganz was du meinst? Was hat die DDR ebene damit zu tun ob die LED's an oder aus sind?!? WAs ich jetzt gemacht habe, ist DDRD = &B11111111 --> Alle Ports im Segment D sind als Ausgang konfiguriert![]()
Gruß
MiniMax
So wie ich das verstanden habe willst Du doch die Flashs und die Beacon nicht immer an oder immer aus haben, sondern sie sollen blinken oder nicht blinken, je nach Steuerknüppelstellung. Richtig??
Und eine von 2914 Möglichkeiten das zu realisieren wäre die:
1. die PORTs (!!) werden in der Hauptschleife immer und immer nach Deinem Muster gesetzt und resettet. Also Flash an, Flash aus, Flash an, Flash aus, Beacon an, laaaange pause, Bacon aus.
2. Wenn das RC-Signal aber grade anzeigt, dass z.B. die Flashs aus sein sollen, setzt Du die dazugehörigen DDR-Register einfach auf 0. Dann sind die Anschlusspins des Controllers als Ausgänge quasi "abgehängt", völlig unabhängig davon, was auf der PORT-Ebene passiert.
Jetzt klarer??
Hi,
Jop!So wie ich das verstanden habe willst Du doch die Flashs und die Beacon nicht immer an oder immer aus haben, sondern sie sollen blinken oder nicht blinken, je nach Steuerknüppelstellung. Richtig??
Also: Wenn die Lichter Aus sein Sollen setzte ich das dazugehörige register auf 0 und wenn die Flasher ein sein Sollen, setze ich sie auf 1 ? Richtig??? Und die Flash reinfolge passiert unabhämging von den Schalterzuständen? Richtig?? Nur wie SOll ich die Flaher laufen lassen? Mit ner Case abfrage in do und in der Timer_isr einfach "incr Blabla" ??1. die PORTs (!!) werden in der Hauptschleife immer und immer nach Deinem Muster gesetzt und resettet. Also Flash an, Flash aus, Flash an, Flash aus, Beacon an, laaaange pause, Bacon aus.
2. Wenn das RC-Signal aber grade anzeigt, dass z.B. die Flashs aus sein sollen, setzt Du die dazugehörigen DDR-Register einfach auf 0. Dann sind die Anschlusspins des Controllers als Ausgänge quasi "abgehängt", völlig unabhängig davon, was auf der PORT-Ebene passiert.![]()
Gruß
MiniMax
So habe es jetzt so gemacht und siehe da -- es funktionier - naja halb![]()
Wenn ich mit DDRA = ... die Ausgänge auf Eingang schalte, leuchten die LED's ganz leicht noch - geht dass später mit nem Transistor weg?
Gruß
MiniMax
Das ist der kleine Schönheitsfehler an meinem Gedanken.Wenn ich mit DDRA = ... die Ausgänge auf Eingang schalte, leuchten die LED's ganz leicht noch - geht dass später mit nem Transistor weg?
Das PORTX.Y-Register legt ja fest, ob ein Anschluss, der als Ausgang konfiguriert ist, 1 oder 0 führt. Wenn der Anschluss als Eingang konfiguriert ist, ist das PORT-Register aber nicht ganz unbeteiligt: Ist es 1, wird ein eingebauter PullUp-Wierstand aktiviert, der den Eingangspin auf ein definiertes High zieht, wenn er komplett unbeschaltet in der Luft hängt. Das ist dann wichtig, wenn Du z.B. einen Taster oder sowas abfragst, denn frei in der Luft hängende Pins fangn sich sofort alle möglichen Störsignale (z.B. 50Hz-Brumm, aber auch hochfrequente Signale) ein.
Dieser PullUp-Widerstand nach +5V ist zwar hochohmig (ca. 50 kOhm), aber offensichtlich reichen diese 0,1mA schon aus, Deine LEDs ein bisschen leuchten zu lassen. Eine Transistorstufe würde das sogar noch verschlimmern, weil man mit 50 kOhm gegen +5V einen Transistor ohne weiteres komplett durchsteuern kann.
Die einfachste Lösung hierfür wäre, dass Du Deine LEDs nicht vom Controller nach Masse legst, sondern genau adersherum von +5V zum Controller. Da die LED ohnehin an +5V hängt, ist der 50 kOhm-PullUP nach +5V ohne Wirkung.
Das wird eigentlich auf fast allen Boards ohnehin so gemacht, weil der Strom, den ein LOW-Anschluss nach Masse ableiten kann höher ist als der Strom, den er im HIGH-Zustand z.B. an eine LED abgeben kann.
Man muss dann halt nur umdenken, denn RESET xyz schaltet die LED an, und SET schaltet sie aus. Aber das haben sch viele Bascom-Anwender geschafft.
Ich bin zwar absolut kein Profi, würde es aber genau so machen. Oder spricht irgendetwas dagegen?Nur wie SOll ich die Flaher laufen lassen? Mit ner Case abfrage in do und in der Timer_isr einfach "incr Blabla" ??
Okay - dann muss ´ne andere Lösung her. So´n FET würde natürlich von den 50 kOhm komplett durchgesteuert.
Dann würde ich das so machen, dass Du in der Hauptschleife die Select Case-Abfrage machst, und vor dem Einschalten der entsprechenden Ausgänge die Impuls-Variable abfragst. Also etwa so:
Code:... ... Select Case V Case 1: If Impuls > 185 then Set Flashlinks Set Flashrechts SetFlashheck End if Case 2: Reset Flashlinks Reset Flashrechts Reset Flashheck ... ...
Das resetten sollte unabhängig von der Variablen Impuls laufen, denn wenn Du per 3-Stufenschalter die Flashs in dem Moment ausschaltest wo sie gerade an sind, müssen sie in der nächsten Select-Case-Runde ja trotzdem ausgeschaltet werden.
D.h. ganz allgemein: Das Einschalten mit einem "If Impuls</> blabla" verknüpfen, das Auschalten nicht. Dann hast Du alle beiden Funktionen in einer einzigen Select-Case-Schleife.
Lesezeichen