hey leutz, ich hab schon das ganze forum durchforstet aber leider keine Lösung für mein Prob gefunden. Ich hab auf nen Breedboard eine Schaltung mit nem Atmega8 aufgebaut, die Temperaturen via One Wire einlesen und auf nem (SED1520) Display ausgeben soll. Mit internen Oszillator funktioniert die Schaltung zumindest so weit das dass Display seine Ausgaben macht. Wenn ich jetzt einen externen Quartz anschließe (3,579 Mhz) funktioniert das Programm nicht mehr. Ich kann aber dennoch die Fuses auslesen, und das Programm flashen. Der Quarz schwingt auch, ich konnte den Sinus auf dem Oszi darstellen und auf die Frequenz zurückrechnen. Ja, die Fuses sind richtig gesetzt, CKSEL 1111 SUT 11, rest hab ich nicht verändert. Quarz ist gleich direkt an den Mik. Anschlüssen dran, mit 2x 22pf gegen masse. Aus anderen Beiträgen hatten User noch den Tipp AVCC mit anzuschließen, das hatt ich dann auch nachgeholt, änderte aber nichts. Könnte sein , dass der EL Inverter für das Display, irgenwie Interferenzen macht ? Jemand eine Idee ? Grüße
Du hast dein Programm schon neu kompiliert, mit F_CPU / F_OSC definiert auf 3579000 ? 2x 100nF vorhanden (VCC->GND und AVCC->GND)?
> funktioniert das Programm nicht mehr. Was funktioniert nicht mehr? Hast du schon mal das Hello-World (blinkende LED) ausprobiert? BTW: > Breedboard Breadboard (mit A) > Atmega8 läuft nur mit internen Quarz, Der hat keinen internen Quarz
das Programm macht nur eine einfache Ausgabe z.B. "Test", ich hab schon alles unnötige rausgelassen. hmm, jaja , ich meinte ja den internen oszillator. > Hast du schon mal das Hello-World (blinkende LED) ausprobiert? nein, ist aber auch nen Versuch wert > Du hast dein Programm schon neu kompiliert, mit F_CPU / F_OSC definiert auf 3579000 ? Ja, ich hab das Makfile entsprechend angepasst. Ist aber unkritisch, wenn ich die 3,579 Mhz eingestellt habe und die externe Anregung ausschalte geht das Programm immer noch. Aber wie gesagt sobald die Fuses auf extern gestellt werden geht das Programm nicht mehr. Aber es lässt sich ohne Probleme aufspielen und die Fuses kann ich auch umstellen, ergo muss die externe Anregung funktionieren. > 2x 100nF vorhanden (VCC->GND und AVCC->GND)? nein , hab ich nicht, werde ich heut nachholen, sollte das solche Auswirklungen haben ?? danke für die tipps
nur nochmal vorwerg, ich hab die 22pf schon getauscht, den Quarz auch des öfteren, ja sogar den Mega8....
Wenn der Quarz schwingt und du ihn bei eingestelltem Quarz per ISP schreiben und lesen kannst dann läuft der Quarz wie er soll. Also kein QUarzproblem, eher die restliche Hardware oder deine Software macht nicht das was sie soll.
Stefan P schrieb: >> Du hast dein Programm schon neu kompiliert, mit F_CPU / F_OSC definiert > auf 3579000 ? > > Ja, ich hab das Makfile entsprechend angepasst. Ist aber unkritisch, > wenn ich die 3,579 Mhz eingestellt habe und die externe Anregung > ausschalte geht das Programm immer noch. Ich wünschte, Hilfesuchende würden sich in diesem Punkt weniger kryptisch ausdrücken. Checkliste zum Abhaken * Quarz (2,579 Mhz) ist angeschlossen, die beiden Kondensatoren (22pF) sind am QUarz drann * Fueses sind auf Crystal gestellt * Dem Programm wurde auch mitgeteilt (per #define F_CPU oder Einstellung im AVR-Studio), dass es jetzt mit höherer Taktfrequenz abgearbeitet wird > Aber wie gesagt sobald die > Fuses auf extern gestellt werden geht das Programm nicht mehr. Lass mal bei deiner 3.579 Mhz Einstellung eine LED blinken. 1 Sekunde ein, 1 Sekunde aus. Wenn dein Programm immer noch auf 1Mhz läuft, dann dauert das Blinken 3 Sekunden statt 1. Den Unterschied sieht man auch mit freiem Auge. > Aber es > lässt sich ohne Probleme aufspielen und die Fuses kann ich auch > umstellen, ergo muss die externe Anregung funktionieren. Die Schlussfoglerung ist so nicht so schlecht. Hat nur einen Haken. Wenn dein µC immer noch mit internem Oszi läuft, lässt er sich auch noch Programmieren.
> Die Schlussfoglerung ist so nicht so schlecht. Hat nur einen Haken. Wenn > dein µC immer noch mit internem Oszi läuft, lässt er sich auch noch > Programmieren. Also der läuft schon mit den externen 3,579 Mhz, denn wenn ich jetzt den Quarz entferne kann ich weder Fuses noch das Programm übertragen. Mach ich den Quarz wieder ran, kann ich die Fuses wieder umstellen, stell ich dann auf Intern, macht das Display sofort ne Ausgabe. > Ich wünschte, Hilfesuchende würden sich in diesem Punkt weniger > kryptisch ausdrücken. Nochmal, wenn ich in meine Programm die F_CPU von 1 Mhz auf 3,56 Mhz stelle aber trotzdem den internen Oszi von 1 Mhz verwende funktioniert die Ausgabe immer noch, dass meinte ich mit "unkritisch"
>Ja, die Fuses sind richtig gesetzt, CKSEL 1111 SUT 11, Wenn du die Fuses so setzen und erfolgreich mit diesen Werten wieder auslesen kannst, läuft der Prozessor mit dem externen Quarz. >Könnte sein , dass der EL Inverter für das Display, irgenwie >Interferenzen macht ? Nichts ist unmöglich, aber zu 99% ist das ein Softwareproblem (oder der Aufruck auf deinem Quarz stimmt nicht) Daher: Zeig doch mal deinen Code. Oliver
> Daher: Zeig doch mal deinen Code. Sowas in der Richtung wollte ich mit meiner Frage erreichen: >>> funktioniert das Programm nicht mehr. >> Was funktioniert nicht mehr?
im prinzip hab ich das programm auf die universal C bib von http://en.radzio.dxp.pl/sed1520/ reduziert. Ich habs jetzt leider nicht parat , bin in der Arbeit. Compiler ist der avr-gcc unter windows. Fuses hab ich mit avrdude oder alt. mit PonyProg geflasht, wobei ich mit PonyProg schlechte Erfahrungen gemacht hab, der hat mir den flash einfach Abgebrochen und der Controller war danach kaputt. Ich werd dann heute abend den El-Inverter abklemmen und die 2 Koppelkondestoren reinbauen. Dann geb ich Feedback.
>> Was funktioniert nicht mehr?
die Ausgabe auf dem Display geht nicht mehr! Das ist ja die einzige
Funktion des Programmes nachdem ich alles andere rausgeschmissen habe.
Also es müsste "Test" auf dem Display stehen. Das tuts wie gesagt nur
mit dem internen oszi
>Nochmal, wenn ich in meine Programm die F_CPU von 1 Mhz auf 3,56 Mhz >stelle aber trotzdem den internen Oszi von 1 Mhz verwende funktioniert >die Ausgabe immer noch, dass meinte ich mit "unkritisch" Das ist ein logischer und auch praktischer Trugschluß. Das es in die eine Richtung funktioniert, beweist nicht, das es auch andersrum gehen muß. Und ganz praktisch ist bei der Ansteuerung von LCD's ein zu langsames timing gar kein Problem, ein zu schnelles dagegen schon. Oliver
anderst herum hab ichs gar net gemacht, ich hab schon immer ordentlich die F_CPU auf die neue Frequenz eingestellt.
also ich hab das BlinkProgramm getestet. Es läuft mit dem 3 Mhz quarz super, wenn ich F_CPU auf 1 Mhz stelle und die delay funktion auf 1 Sekunde stelle, dann blinkt die LED ca. 3 mal pro Sekunde. dann muss der Fehler irgendwo im Quelltext stecken,... hier:
1 | #include <avr/io.h> |
2 | #include <util/delay.h> |
3 | #define SCREEN_WIDTH 122
|
4 | |
5 | #define SED1520_DATA_PORT PORTD
|
6 | #define SED1520_DATA_DDR DDRD
|
7 | #define SED1520_DATA_PIN PIND
|
8 | |
9 | #define SED1520_CONTROL_PORT PORTC
|
10 | #define SED1520_CONTROL_DDR DDRC
|
11 | |
12 | #define SED1520_A0 (1 << 0)
|
13 | #define SED1520_E1 (1 << 2)
|
14 | #define SED1520_E2 (1 << 1)
|
15 | #define SED1520_RW (1 << 1)
|
16 | #define SED1520_RES (1 << 3)
|
17 | #define F_CPU 3579000UL
|
18 | |
19 | extern unsigned char lcd_x, lcd_y; |
20 | //-------------------------------------------------------------------------------------------------
|
21 | //
|
22 | //-------------------------------------------------------------------------------------------------
|
23 | |
24 | void GLCD_InitPorts(void) |
25 | {
|
26 | SED1520_DATA_DDR = 0xFF; |
27 | |
28 | SED1520_CONTROL_DDR |= (SED1520_E2 | SED1520_E1 | SED1520_A0 | SED1520_RES); |
29 | DDRB |= (SED1520_RW); |
30 | _delay_ms(10); |
31 | SED1520_CONTROL_PORT &= ~SED1520_RES; |
32 | _delay_ms(100); |
33 | SED1520_CONTROL_PORT |= SED1520_RES; // Reset liegt üblicherweise auf H |
34 | |
35 | |
36 | }
|
37 | //-------------------------------------------------------------------------------------------------
|
38 | //
|
39 | //-------------------------------------------------------------------------------------------------
|
40 | void GLCD_WaitForStatus(unsigned char status, unsigned char controller) |
41 | {
|
42 | char tmp; |
43 | SED1520_CONTROL_PORT &= ~SED1520_A0; |
44 | PORTB |= SED1520_RW; |
45 | SED1520_DATA_DDR = 0x00; |
46 | do
|
47 | {
|
48 | if(controller == 0) |
49 | {
|
50 | SED1520_CONTROL_PORT |= SED1520_E1; |
51 | asm("nop");asm("nop"); |
52 | tmp = SED1520_DATA_PIN; |
53 | SED1520_CONTROL_PORT &= ~SED1520_E1; |
54 | }
|
55 | else
|
56 | {
|
57 | SED1520_CONTROL_PORT |= SED1520_E2; |
58 | asm("nop");asm("nop"); |
59 | tmp = SED1520_DATA_PIN; |
60 | SED1520_CONTROL_PORT &= ~SED1520_E2; |
61 | }
|
62 | }while(tmp & status); |
63 | SED1520_DATA_DDR = 0xFF; |
64 | }
|
65 | //-------------------------------------------------------------------------------------------------
|
66 | // Write command
|
67 | //-------------------------------------------------------------------------------------------------
|
68 | void GLCD_WriteCommand(unsigned char commandToWrite,unsigned char ctrl) |
69 | {
|
70 | GLCD_WaitForStatus(0x80, ctrl); |
71 | |
72 | SED1520_CONTROL_PORT &= ~SED1520_A0; |
73 | PORTB &= ~SED1520_RW; |
74 | |
75 | SED1520_DATA_PORT = commandToWrite; |
76 | |
77 | if(ctrl) |
78 | {
|
79 | SED1520_CONTROL_PORT |= SED1520_E2; |
80 | asm("nop");asm("nop"); |
81 | SED1520_CONTROL_PORT &= ~SED1520_E2; |
82 | }
|
83 | else
|
84 | {
|
85 | SED1520_CONTROL_PORT |= SED1520_E1; |
86 | asm("nop");asm("nop"); |
87 | SED1520_CONTROL_PORT &= ~SED1520_E1; |
88 | }
|
89 | }
|
90 | //-------------------------------------------------------------------------------------------------
|
91 | // Write data
|
92 | //-------------------------------------------------------------------------------------------------
|
93 | void GLCD_WriteData(unsigned char dataToWrite) |
94 | {
|
95 | GLCD_WaitForStatus(0x80, 0); |
96 | GLCD_WaitForStatus(0x80, 1); |
97 | SED1520_CONTROL_PORT |= SED1520_A0; // A0 auf 1, weil Daten |
98 | PORTB &= ~SED1520_RW; // W auf 0 weil schreiben |
99 | SED1520_DATA_PORT = dataToWrite; |
100 | if(lcd_x < 61) |
101 | {
|
102 | SED1520_CONTROL_PORT |= SED1520_E1; |
103 | asm("nop");asm("nop"); |
104 | SED1520_CONTROL_PORT &= ~SED1520_E1; |
105 | }
|
106 | else
|
107 | {
|
108 | SED1520_CONTROL_PORT |= SED1520_E2; |
109 | asm("nop");asm("nop"); |
110 | SED1520_CONTROL_PORT &= ~SED1520_E2; |
111 | }
|
112 | lcd_x++; |
113 | if(lcd_x >= SCREEN_WIDTH) |
114 | lcd_x = 0; |
115 | }
|
116 | //-------------------------------------------------------------------------------------------------
|
117 | // Read data
|
118 | //-------------------------------------------------------------------------------------------------
|
119 | unsigned char GLCD_ReadData(void) |
120 | {
|
121 | unsigned char tmp; |
122 | |
123 | GLCD_WaitForStatus(0x80, 0); |
124 | GLCD_WaitForStatus(0x80, 1); |
125 | SED1520_CONTROL_PORT |= SED1520_A0; |
126 | PORTB |= SED1520_RW; |
127 | SED1520_DATA_DDR = 0x00; |
128 | SED1520_DATA_PORT = 0xFF; |
129 | if(lcd_x < 61) |
130 | {
|
131 | SED1520_CONTROL_PORT |= SED1520_E1; |
132 | asm("nop");asm("nop"); |
133 | SED1520_CONTROL_PORT &= ~SED1520_E1; |
134 | asm("nop");asm("nop"); |
135 | SED1520_CONTROL_PORT |= SED1520_E1; |
136 | asm("nop");asm("nop"); |
137 | tmp = SED1520_DATA_PIN; |
138 | SED1520_CONTROL_PORT &= ~SED1520_E1; |
139 | }
|
140 | else
|
141 | {
|
142 | SED1520_CONTROL_PORT |= SED1520_E2; |
143 | asm("nop");asm("nop"); |
144 | SED1520_CONTROL_PORT &= ~SED1520_E2; |
145 | asm("nop");asm("nop"); |
146 | SED1520_CONTROL_PORT |= SED1520_E2; |
147 | asm("nop");asm("nop"); |
148 | tmp = SED1520_DATA_PIN; |
149 | SED1520_CONTROL_PORT &= ~SED1520_E2; |
150 | }
|
151 | SED1520_DATA_DDR = 0xFF; |
152 | lcd_x++; |
153 | if(lcd_x > 121) |
154 | lcd_x = 0; |
155 | return tmp; |
156 | }
|
ich hab schon die asm("nop") 3 mal kopiert und eingefügt, um die zeit zu verlängern, aber das Display mach immer noch keinen Mucks. Was mich auch iritiert ist, das die Einstellung von F_CPU im Makefile ignoriert wurde. erst nachdem ich es als #define F_CPU im Code engefügt hat, hat er es übernommen.
ich denke die initialisierung des Displays könnte ein problem sein... wie steuerst du dein Display an? 4 oder 8 bit? Bei 4 bit arbeitest du mit vielen waits, wenn die nicht stimmen => tot Bei den 8 bit hängt der Prozessor wenn er kein ok zurückbekommt... Initialisiert sich dein Display korrekt?
Jan Herzog schrieb: > ich denke die initialisierung des Displays könnte ein problem sein... > wie steuerst du dein Display an? 4 oder 8 bit? Nicht jedes Display ist ein 44780 kompatibles Display mit 4 oder 8 bit Modus.
@linklon >ich denke die initialisierung des Displays könnte ein problem sein... >wie steuerst du dein Display an? 4 oder 8 bit? Es gibt auch noch andere LCD Controller als du gerade im Kopf hattest ;) @Stefan #define F_CPU 3579000UL gehört VOR #include <util/delay.h>
Wenn du den Takt verdreifachst solltest du testweise auch mal alle "nops" verdreifachen.
Stefan P: > ich hab schon die asm("nop") 3 mal kopiert und eingefügt, um die zeit zu > verlängern, aber das Display mach immer noch keinen Mucks. jo die nops hab ich schon verdreifacht > #define F_CPU 3579000UL > gehört VOR > #include <util/delay.h> ok, das define hab ich jetzt vorgeschoben, aber das Display macht immer noch keine Ausgabe. Ich steuer das Display mit einer 8 Bit an. Der Controller ist ein SED1520
so ich hatte gestern auch noch die asm("nop") komplett rausgeschmissen und mit _delay_ms(10) getauscht, aber es bringt auch nichts,... hmm schön langsam gehen mir die ideen aus....
das klingt ja nach einem sehr merkwürdigem problem. wie läuft es denn, wenn du den internen takt auf 4 mhz stellst ? wenns dann auch nicht läuft gibts vielleich ein problem mit dem layout oder sowas. gruss klaus
hmm aso, ich dachte der einezige interne Takt ist der mit 1 Mhz, blick ins Datenblatt: CKSEL laut datenblatt für intern CKSEL = 0001 und SUT = 10 = 1 Mhz ich stells dann mal auf CKSEL 0100 müsste 4 Mhz sein Gute Idee, probier ich gleich heut abend !
Bau mal überall vor dem Setzten des Enable-pins noch ein delay ein, so wie hier:
1 | SED1520_DATA_PORT = dataToWrite; |
2 | _delay_ms(1); // <====================================== |
3 | if(lcd_x < 61) |
4 | {
|
5 | SED1520_CONTROL_PORT |= SED1520_E1; |
6 | ...
|
Oliver
wer ich dann auch heut abend probieren, ich geb dann feedback
1 | void GLCD_WaitForStatus(unsigned char status, unsigned char controller) |
2 | {
|
3 | char tmp; |
4 | SED1520_CONTROL_PORT &= ~SED1520_A0; |
5 | PORTB |= SED1520_RW; |
6 | SED1520_DATA_DDR = 0x00; |
7 | do
|
8 | {
|
9 | if(controller == 0) |
10 | {
|
11 | _delay_ms(1); |
12 | SED1520_CONTROL_PORT |= SED1520_E1; |
13 | asm("nop");asm("nop"); |
14 | asm("nop");asm("nop"); |
15 | asm("nop");asm("nop"); |
16 | tmp = SED1520_DATA_PIN; |
17 | SED1520_CONTROL_PORT &= ~SED1520_E1; |
18 | }
|
19 | else
|
20 | {
|
21 | _delay_ms(1); |
22 | SED1520_CONTROL_PORT |= SED1520_E2; |
23 | asm("nop");asm("nop"); |
24 | asm("nop");asm("nop"); |
25 | asm("nop");asm("nop"); |
26 | tmp = SED1520_DATA_PIN; |
27 | SED1520_CONTROL_PORT &= ~SED1520_E2; |
28 | }
|
29 | }while(tmp & status); |
30 | SED1520_DATA_DDR = 0xFF; |
31 | }
|
hey oliver, danke für den tipp, ich habs jetzt aber in der GLCD_WaitForStatus eingebaut. JETZT GEHTS Ich halte fest,... Problem war: ich musste die nops verdreifachen und bei der GLCD_WaitForStatus funktion vor Zugriff auf E1 bzw E2 ein delay einbauen Nur versteh ich jetzt nicht genau warum es nötig ist da noch ein delay reinzumachen ! Vielen Dank für die rege Hilfe. gruße
hat von euch jemand nen plan , warum das ganze ohne das _delay_ms(1) nicht funktioniert, ist zwar schön dass es jetzt geht, aber so lang ich des net versteh müss ich ständig grübeln,.....
Versuch doch mal die 1 ms zu drücken und kürzer zu machen. > warum das ganze ohne das _delay_ms(1) > nicht funktioniert, Kann nur vermuten. Am LCD läuft ja auch ein Prozessor. Der braucht auch ein bischen Zeit um nach der Bearbeitung eines Kommandos wieder aufnahmefähig für das nächste Kommando zu sein. Deine Abfrageschleife ist ziemlich dicht, soll heissen: ohne den _delay_ms kommt da Abfrage auf Abfrage ohne viel Zeit dazwischen. In deinem Fall würde ich auch mal so probieren: Die erste Abfrage würde ich ohne Zeitverzögerung machen. Erst dannn, wenn weitere Abfragen notwendig sind, kommt da eine kleine Verzögerung rein. Damit musst du nicht lange warten, wenn das Display beim Eintritt in die Funktion schon ready ist. Ungefähr so
1 | void GLCD_WaitForStatus(unsigned char status, unsigned char controller) |
2 | {
|
3 | char tmp; |
4 | |
5 | SED1520_CONTROL_PORT &= ~SED1520_A0; |
6 | PORTB |= SED1520_RW; |
7 | SED1520_DATA_DDR = 0x00; |
8 | |
9 | do
|
10 | {
|
11 | SED1520_CONTROL_PORT |= ( controller == 0 ? SED1520_E1 : SED1520_E2 ); |
12 | asm("nop");asm("nop"); |
13 | asm("nop");asm("nop"); |
14 | asm("nop");asm("nop"); |
15 | tmp = SED1520_DATA_PIN; |
16 | SED1520_CONTROL_PORT &= ~ ( controller == 0 ? SED1520_E1 : SED1520_E2 ); |
17 | |
18 | if( ! ( tmp & status ) ) // noch eine Runde fällig? dann ein bischen warten |
19 | _delay_ms( 1 ); |
20 | |
21 | } while(tmp & status); |
22 | |
23 | SED1520_DATA_DDR = 0xFF; |
24 | }
|
>hat von euch jemand nen plan ,
Der Plan heisst Datenblatt. Ich habe zwar keins vorliegen, aber
üblicherweise haben solche Bausteine u.a. auch eine definierte
Mindestzeit, die die Daten anliegen müssen, bevor das Taktsignal kommem
darf.
Und ansonsten gilt bei solchen Problemen immer: Es liegt am Timing.
Oliver
> Der Plan heisst Datenblatt. Ich habe zwar keins vorliegen, aber > üblicherweise haben solche Bausteine u.a. auch eine definierte > Mindestzeit, die die Daten anliegen müssen, bevor das Taktsignal kommem > darf. Ich leg ja keine Daten an, bevor ich daten anlege ruf ich die Funktion GLCD_WaitForStatus auf, und frag das Busy Flag ab, also status = 0x80, so lange das busyflag auf 1 ist, dreht das Programm seine runden in der Schleife, also müsste dieses delay doch dann unnötig sein ?!? > Versuch doch mal die 1 ms zu drücken und kürzer zu machen. hab ich schon versucht, aber die 1 ms braucht er schon ungefähr, wenn ichs kürzer mach dann verwehrt mir das Display die Ausgabe dein Code sieht auf jeden Fall gut aus, den werd ich übernehmen, schon weil er übersichtlicher und kürzer ist.
Ich hab im Datenblatt was gefunden S38, 39 Parameter Symbol Signal Min Typ Max Unit System cycle time tCYC6 *1 A0, CS 1000 — — ns Wenn meine CPU mit 4 Mhz taktet kann se im Schnitt einen Befehl in 250ns abarbeiten. Wenn ich die Funktion GLCD_Wait_For_Status 2mal hintereiander aufrufe um zB beide Controller abzufragen, dann dürfte das vom Timing her eng werden. Ich werd dann den Aufruf mal abändern.
1 | GLCD_WaitForStatus(0x80, 0); |
2 | _delay_ms(1); |
3 | GLCD_WaitForStatus(0x80, 1); |
4 | |
5 | denn wenn die Funktion endet mit: |
6 | SED1520_CONTROL_PORT &= ~SED1520_E2; |
könnte ich mir vorstellen, dass E2 noch gar nicht zurückgesetzt wird und dann schon wieder versucht wird E1 zu setzen, deswegen würde das delay hier die nötige zeit bringen.
also ich meinte die 1000 ns zwischen den zugriffen auf das CS nicht eingehalten werden
>hab ich schon versucht, aber die 1 ms braucht er schon ungefähr, das ist allerdings seltsam. Ich hatte die 1 ms eiggentlich nur als Extremwert dahingeschrieben, um zu sehen, ob es überhaupt was ausmacht. Üblicherweise liegen die einzuhaltenden Timings im Bereich 20 bis 500 ns, da geht es um ein paar nops mehr oder weniger. Hier, http://www.lcd-module.de/eng/pdf/zubehoer/sed1520.pdf auf Seite 36, stehen die relevanten timings. Das ist bei 3,7MHz Prozessortakt alles unkritisch, vorausgesetzt, dein Display hält sich auch an das Datenblatt. Oliver
also Stefan P (Gast): eventuell solltest du mal die portpins, die du für das display verwendest mal per software durchtoggeln und mal den rüssel (ossi) daufhalten. ein schlechtes layout oder schlechte kabel könnten nämlich dazu führen, dass die signale so verschliffen werden, das nix mehr geht, es sei denn, man baut einen haufen waits ein. gruss klaus
hmm, könnte sein, ich hab ja alles ein wenig wüst auf nem Breadboard zusammengenagelt,....
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.