Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
microcontrollertechnik:charlie_plexing [2022/12/12 01:27] mexleadminmicrocontrollertechnik:charlie_plexing [2022/12/15 23:24] (aktuell) – [Beispiel eines Charlieplexing] mexleadmin
Zeile 10: Zeile 10:
   * Rechts ist die LED Matrix zu finden, welche durch Charlieplexing angesteuert wird.   * Rechts ist die LED Matrix zu finden, welche durch Charlieplexing angesteuert wird.
  
-Es soll nun die Logik näher beschrieben werden. Dies kann auch durch Reduktion der Simulationsgeschwindigkeit besser in der Simulation sichtbar gemacht werden:+Es soll nun die Logik etwas näher beschrieben werden. Dies kann auch durch Reduktion der Simulationsgeschwindigkeit besser in der Simulation sichtbar gemacht werden:
   - Es ist ersichtlich, dass jeweils für ein nebeneinander liegendes LED-Pärchen im Charlieplexing Anode und Kathode vertauscht sind. \\ Im Code werden deshalb immer zwei nebeneinander liegende Werte in der Outputmatrix gleichzeitig behandelt. (Siehe Zeile 141ff in ''CharlieP.c'') Dabei ist für die LED links oben ([0][0]) die Kathode gerade der Pin des Ports $PORTx.0$.   - Es ist ersichtlich, dass jeweils für ein nebeneinander liegendes LED-Pärchen im Charlieplexing Anode und Kathode vertauscht sind. \\ Im Code werden deshalb immer zwei nebeneinander liegende Werte in der Outputmatrix gleichzeitig behandelt. (Siehe Zeile 141ff in ''CharlieP.c'') Dabei ist für die LED links oben ([0][0]) die Kathode gerade der Pin des Ports $PORTx.0$.
   - UM eine LED leuchten zu lassen wird ein bestimmter Pin eines Ports auf $High$ gesetzt, z.B. $PORTx.0$. Für diesen Pin muss auch das Datenrichtungsregister auf $High$ gesetzt werden, dies geschieht durch das $ODER$-Gatter vor dem $DDRx.0$ Pin. \\ Im Code wird dafür im Zeile 158 und 159 die ''portMatrix'' gefüllt.   - UM eine LED leuchten zu lassen wird ein bestimmter Pin eines Ports auf $High$ gesetzt, z.B. $PORTx.0$. Für diesen Pin muss auch das Datenrichtungsregister auf $High$ gesetzt werden, dies geschieht durch das $ODER$-Gatter vor dem $DDRx.0$ Pin. \\ Im Code wird dafür im Zeile 158 und 159 die ''portMatrix'' gefüllt.
   - Für die LEDs in der ersten Reihe ist $PORTx.0$ entweder die Kathode (jede zweite LED ab [0][0]) oder Anode (jede zweite LED ab [0][1]). \\ Gleiches gilt für die zweite Reihe für $PORTx.1$. Für die dritte Reihe gilt dies nur für die ersten beiden LEDs. \\ Im Code schlägt sich dies in der Ermittlung der ''actCathode'' für ein LED-Pärchen in Zeile 145 bzw. 148 nieder.   - Für die LEDs in der ersten Reihe ist $PORTx.0$ entweder die Kathode (jede zweite LED ab [0][0]) oder Anode (jede zweite LED ab [0][1]). \\ Gleiches gilt für die zweite Reihe für $PORTx.1$. Für die dritte Reihe gilt dies nur für die ersten beiden LEDs. \\ Im Code schlägt sich dies in der Ermittlung der ''actCathode'' für ein LED-Pärchen in Zeile 145 bzw. 148 nieder.
- 
  
 <WRAP> <WRAP>
 <imgcaption BildNr0 | Beispiel eines Charlieplexing> <imgcaption BildNr0 | Beispiel eines Charlieplexing>
 </imgcaption> \\ </imgcaption> \\
-{{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgzCAMB0l3AmALATjejGAcVYFYw8EA2ARiQSz1KzUgjARDxCQjwFMBaU0gKDBIQAMwDuAEwBOAewAOAHQCOCaC1IgU0Rt15RW0GqkjVI5PAHYURPf1LEm5rEJ7XHz0pCFMxUuUpVqepC4pnyiIOYIwVyREVEgXFg4kGFx0UlpCR5CKeFuWZ4RTgkZuUXOGfkxTGWR0ciZiVCpVQ1VyS3xLg5ddh15xd3lWcT9wzyjjX3NAxWNY3UlOO0LxbGLsbXFeMTDm53BO5n7syXDC-HLXWNOOEe3cTMapExHKC+PZQ+JOO9MP08-iMcN9pmUgUMIWDUqDrKDJuCPgCIScQN9Yt9Si1BtN4asKiCkDgAVshBiiZ8YRTYkDUd8GhCGl8KTxClDCsyQc8mB0ouYQMQjhMcILdlwosEhAAFFJ8gVCjKirLxaX8OVK2JKpCSkBSsB8dUK+Vi7WsXUIA2QfmgwpYOwFITSi1y+lCO1ihrS-U0Q4of7TJXCoIGEAeeDhuChiPwVIanrBVGBq7pJ5J5NLVNC6aLINlezuaz5rJgXayq0Cho8EvMYjRUjVoQAEUbACUAB6wS38vB+4E1uuTaUAeRbABUO2Xu72ATt0jhh2OO2ry0WuEdZwkjk3W0vY5XNZWjikfcxp4qFclcOow9HIzeI3wTz3-iKjcEYNfb-Ao7e926K14ORdgBIANBunogM27bQM65bPmcG5NAu44wY+WC+j0xqfFeP5frhD7hEWioNNkzTqiRhQbqR27QfqcrwbEG6xMhHZ0XBuwIJWDScY6uojihbH8jxoEkfEwk0axwGmlExLcZA858YuqFyhKoHyaGYnqRJynlqQ5i7KQvYvMEhlMNpy5CUIpkJCRvYsQYwE4HpHpWfpZpSvxE7AaQ1jORpJludpx72FMhQ5j5TDeBIMgKMoqihkEIS2LQNlCFmuxHFEqBmhaNDEvWGVirwry7BAjqpACsTimSNQVWBLngLV4RVoVxalU1bWNalXUpC2nWMFkbkDeoTD3sEASgfF76qDCoZwqGbllCR1i2R10laSZ1hlEcEU1iJQG7YdlBzaNtYJa8zCPr5bkvE5N1nSNzCXbtwm3ftoYPaBeh4FdkV3sdql2CZX2HKkh0PddpZg-dAUGb2S13mdqkyU8r1I9xTKpDthQIPapFLXjON48dZTWW9ZMfKTRkfKaxVPLTNMmRyYOTOTrPxKT7PjVZHOpKJ3NRkB4RObaGljOQPNcm9XwnWiYuo1ZK08++qS09YDMdTt1jYwdxDuIUXCmgChvAxA75PcIACGAA2ADOHBPGuJrREKR4Va7RXVk7jsFZuntimMLVnKyczHjiRW9gNPBGaBLPRHrH0mSTwFB1HvsKQAwgAMinpEm8qxKmkI2d8Fnm5IO4XuIb7wNW3bDssJO5eV2KeAV1k7dCAA2pAAC6XekL3Ke1vlXsjx3vE9-3felwk49B1wq41wldf209KRl4b6GdYbKD+zYIg22vjcp0SdZe2fE9mlPXcIEPcqG-aC9IE-EvX33XdgEPm8v-vhtp9WWuR8G7NB-k-IUbB-hHj0KvEBTdH6txNE-BO3dB6f3vuWLeLsTTb0XpPNBd9Z5YL9gkVAiDEqwPXkQ+eQpVzQOCJQk+D8aFinnigkAA9p4YP5Gudu3teHOHYZwzhRC27OA9tgihwCqFgI4s4SBoEcgwOkUwzBv9FGkLxrsbud90Gn23pWS+9odH90IT-Ax8i94aPNow0Bc91KViLEyZR9cqHMIcYI9SxiOG6Jng-MRGiBEfWvroweoj26HiRkohhKiyKYNfmdLeIwdQ30IXKYyyS0T5TOqgrhucip8JZG-Ext9uEkKaBMM4QgADK8ChSVifhBapFl-JZF7BkaOZkOEfzCQ-V+bkkk8ECt0vJ6Tejtw6cUjhBCh6GFaZ0j6+UY4WnCHM8mOJ4ZoSEGAL21kwAbNGpABALAVmgWGgDKOCcm4ICqm-MABspmlKnlJSMExJRpxydM-uX8Xl1jsmnOyPjvllJuf6M69z3CfOEb08s2o6yBTTsMp5MKhK3Mjg8wFN8fnhBRm9FGCyw5eHUgs45EdDnHNjm2OeCAIC8BYFwMAVhQw0BykIUQlsAB2AAXDg4h5C2yHAAVy5bIYV-KAC2lsuWSAAJZtj4FS8wkADIkDRBDbRGiADGAALS2khrYyo4Py2Q1sOBtl5fy+Q8gOVZwAKKNglVK2V8rVmJJQcSK5qsPWOiWR1HZZLwBjyFoG1hXhLlARUkbOmyA5xmmacBYSPAPiJoyDUpu0wk2nWJKmkA8b0nWEzbLAEabgJpw+FHHNebdJFQ+E-StTcSz5XLZMYtuaWmEH9OWgt9bHwhRtG6IpK0RDRT8HFQI5sYChDsEwKE1h2ReGHb4WKE11ATtgLYEKKIZ1Im4oumK-h4qruDFOvtLIGjokinu0dK7EqTo3fGbqOZYhRSXQe8dx773jHWIMXdPh91joSmuk926eTcj2i+-9N6gOfoePcCkOAIPXsPbe9dvaH1HEWAhq9y7kPQbQ+cYYmVsNvsAx+xy8G0T2gUjKPgQA noborder}}+{{url>https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgzCAMB0l3AmALATjejGAcVYFYw8EA2ARiQSz1KzUgjARDxCQjwFMBaU0gKDBIQAMwDuAEwBOAewAOAHQCOCaC1IgU0Rt15RW0GqkjVI5PAHYURPf1LEm5rEJ7XHz0pCFMxUuUpVqepC4pnyiIOYIwVyREVEgXFg4kGFx0UlpCR5CKeFuWZ4RTgkZuUXOGfkxTGWR0ciZiVCpVQ1VyS3xLg5ddh15xd3lWcT9wzyjjX3NAxWNY3UlOO0LxbGLsbXFeMTDm53BO5n7syXDC-HLXWNOOEe3cTMapExHKC+PZQ+JOO9MP08-iMcN9pmUgUMIWDUqDrKDJuCPgCIScQN9Yt9Si1BtN4asKiCkDgAVshBiiZ8YRTYkDUd8GhCGl8KTxClDCsyQc8mB0ouYQMQjhMcILdlwosEhAAFFJ8gVCjKirLxaX8OVK2JKpCSkBSsB8dUK+Vi7WsXUIA2QfmgwpYOwFITSi1y+lCO1ihrS-U0Q4of7TJXCoIGEAeeDhuChiPwVIanrBVGBq7pJ5J5NLVNC6aLINlezuaz5rJgXayq0Cho8EvMYjRUjVoQAEUbACUAB6wS38vB+4E1uuTaUAeRbABUO2Xu72ATt0jhh2OO2ry0WuEdZwkjk3W0vY5XNZWjikfcxp4qFclcOow9HIzeI3wTz3-iKjcEYNfb-Ao7e926K14ORdgBIANBunogM27bQM65bPmcG5NAu44wY+WC+j0xqfFeP5frhD7hEWioNNkzTqiRhQbqR27QfqcrwbEG6xMhHZ0XBuwIJWDScY6uojihbH8jxoEkfEwk0axwGmlExLcZA858YuqFyhKoHyaGYnqRJynlqQ5i7KQvYvMEhlMNpy5CUIpkJCRvYsQYwE4HpHpWfpZpSvxE7AaQ1jORpJludpx72FMhQ5j5TDeBIMgKMoqihkEIS2LQNlCFmuxHFEqBmseGRVhlYq8K8uwQI6qQArE4pkjU5VgS54A1eE+U1sWJWNa1DWpZ1KQth1jBZG5-XqEw97BAEoHxe+qgwqGcKhm5ZQkdYtntdJWkmdYZRHBFLXCcevm+ZQs0jbWCU1Mwj6+W5LxOddp3DXoeCXZFok4MJdgmaBj3PWpJlHapH1nd94Q7YDoMLakflg9dvaLXep2qTJTzvQj3FMqk22FAg9qkYtONYzjR1lNZN2hkZHzE+TZkmRTqSmkVrAmRykOTKT0zGU87NiVZ8SLTzY1Wcz4RObaGljOQPNcqTXzHWiYvI1Zy38089PWPTtPhNt1iY0BdjuIUXCmgChufRA756MIACGAA2ADOHBPGuJrREKR7la7hXVk7jv1mKWZe2MzVNKycy5e4hW9v1PBGaBLPRMQVn3UTwHNVHvty0IADCAAyKekSbyrEqaWe59nm5IO4XuIenn1W3bDssJO5eV37FdZG3QgANqQAAup3pA9yntbEunXDD+3vHd33vd8GXY-qUHq41wldf28wzRz0SdZe6gnulivNtr43Kdbx1hvoRPZpT53CCD3Khv2kHSCPxLV+953YCD5vL872n1a14fBuG8EjPz9iaKOR4LaAPXk3B+YCQGPwTlfAeH877lnPi7E0F8x6TxQbfWeIDsFCl3pufewRV5AJSHPce3sx6HjISIaBx9740KFDQpBXcUEz3vngNutDeHOA4SAfufcB4ELXHwj2mDEoUJgeI0BoFnBsEijkKB9c5H3wUZWBR9ou631QSfC+2iL66OEfo-Bm8jFKJQBxVR5CmHAPnm9QR3E7GMPUcw9B49Kzj1MTfaeaD+QSMAs3UMuw9GiK-qE+hAsZEONgS-U658Rg6mvvguUHMJjBDyoDThAS86FT4SyV+ET-EpyNBMM4QgADKsChSVkfhBapFl-JZF7Dkuywj35iPvi-NyySeCBS6fkjJvQ245I7sIvBg9DCtOjidEeMcLQg2KGzHEsM0JCDAF7ayYB1kjUgAgFgyzQJDX+lHJBTcECVVfmAA2JSzEjPLNqAcko06nTyQYuULy2lmTTp0-xXzyzXP9KdO54dUkoJ6c8yMgzwlpyGYC6FQkbmR3uQC9+n9UhI1JkjeZzRZl4uskciOByjmxzbAkewEBeAsC4GAKwoYaBmgaKIS2AA7AALhwcQ8hbZDgAK6ctkEKvlABbS2nLJAAEs2x8EpeYSABkSBonuluRRIAADGAALS2khrbSo4Hy2Q1sOBth5Xy+Q8h2XZwAKKNnFZKmVcqQZJI4cSS5dMPWOkWe1bZpLwBe09eEf1VKvAXKAipI2DNkBzjNM04CwkeAfCTRkGpTdpjJoWRmGpLSdpZtlgCdNwE04fCjmmkACaMmFQ+I-CttSS2TALSWYk9aWmEH9GW6wRbK3BR5MU20xTloiGin4OKgRzYwFCHYJgUJrDsi8CO3wsVxrqEnbAWwIUUSzqRNxJdMV-DxTXcGadIVXRohZLEKKy7D0TpPZu+MXUcxXv3WO1diUp0PvGOsQYe6fAHvHQlddp6d08m5LtV9K6j0fo3Y+M9FJ7gUjepB29QH71wcfUcRYyH-1vug8Br9+RljbA4ihwDx6pqhBdEhtE9oFIyj4EAA noborder}}
 </WRAP> </WRAP>
  
 ===== Lib ===== ===== Lib =====
 +
 +
 {{microcontrollertechnik:charlieplexing.zip}} {{microcontrollertechnik:charlieplexing.zip}}
 +
 +Wichtig: 
 +  * Die vorliegende Lib (und damit der Code unten) ist nur für eine gerade Anzahl von Pins geeignet.
 +  * Zudem muss die Anordnung des Charlieplexings wie im folgenden Bild dargestellt eingehalten werden.
 +
 +{{drawio>microcontrollertechnik:CharliePschaltung.svg}}
  
 ===== Code ===== ===== Code =====