hallo zusammen, bevor jetzt irgendwelche schreiben: "les das lcd tutorial *mecker*" , ich habe es gelesen. stelle meine frage dennoch, da ich nicht mit der lcd.h arbeiten will. ich habe folgendes problem: das lcd zeigt nur streifen an ;) g meine hardware sieht folgendermaßen aus: Enable an PC2 RW an PC1 RS an PC0 D0-D7 sind an PortB das wars eigentlich :) nett wäre es wenn mir irgendwer meinen code anpassen könnte =) mfg nuss //edit: kann mir wer zufällig noch sagen was dieser fehler in ponyprog heisst: "unable to probe, bad device or devie locked"
Hallo, falscher AVR-Typ eingestellt, Problem mit dem Zugriff auf den AVR oder Schutzbits gesetzt, bei letzterem sollte Erase helfen (macht aber Pony in der Default-Einstellung sowieso, wenn ich nicht irre. Bin zwar kein C-Programmier, fast nur ASM, aber: PORTD=0x00&0x03; 0 AND 3 ist bei mir 0, oder? for(k=0;k<7;k++) //Ausgabeschleife für die 6 Befehle { PORTC = 0xff&0x04; PORTB = befehl[7]; //Befehl ausgeben PORTC = 0x00&0x04; 0 AND 4 ist bei mir auch 0, oder? for(i=0;i<800;i++); Sicher, daß die Schleife nicht bei eingeschalteter Optimierung wegoptimiert wird bzw, wenn ohne, daß sie mehrere ms dauert? Die ersten Wartezeiten beim Init müssen recht lang sein (Datenblatt HD44780). init_lcd(); PORTB=hallo; Mehr am Rande: wie willst Du ein Array of Char ind das 8Bit-Register von PORTB bekommen??? Gruß aus Berlin Michael
> PORTB = befehl[7]; //Befehl ausgeben
Dein Array hat nur die Elemente befehl[0..6]
mhh komischer weise hat sich das problem von selbst gelöst...*kopf kratz* war wohl nen wackelkontakt.. aber danke für die schnelle antwort nur mein anderes problem hat sich leider noch ned von selbst behoben
das mit dem AND soll ja so sein das da ne null kommt. und die for schleife da sollte eigentlich da bleiben und nicht wegoptimiert werden und mit dem array...ehm hab mir das einfach so überlegt, dass ich da nen array reinschreibe. sollte doch gehen oder denke ich grad flasch?
Öhm - nix für ungut, aber da würde ich Dir echt empfehlen, nochmal ein C-Buch in die Hand zu nehmen. Wozu Du eine Schleife für Befehle veranstaltest und dann doch eine (falsche) Konstante in den Index schreibst, ist mir völlig rätselhaft. Außerdem ist die Notation PORTD=0x00&0x03 ziemlich von hinten durch die Brust ins Auge. Mehr Sinn macht es, z.B. die Bits zu bezeichnen und für bessere Lesbarkeit mit Shift-Befehlen zu verwenden wie PORTD = (1 << CS)|(1 << Enable)
nuss wrote: > das mit dem AND soll ja so sein das da ne null kommt. Warum schreibst du das dann so kompliziert und schreibst nicht einfach PORTD = 0; denn genau das macht deine VerUNDung letztendlich :-) > > und die for schleife da sollte eigentlich da bleiben und nicht > wegoptimiert werden Warum sollte der Compiler sie übrig lassen? Sie verbraucht nur Rechenzeit, ohne etwas Sinnvolles zu tun. Und da es die nobelste Aufgabe eines Optimizers ist, Rechenzeit frei zu bekommen, wo immer er sie kriegen kann, ..... Wenn du im Programm etwas warten willst, dann gibt es dafür die _delay_xx Funktionen. Details dazu finden sich auch im Tutorial. > > und mit dem array...ehm hab mir das einfach so überlegt, dass ich da nen > array reinschreibe. sollte doch gehen oder denke ich grad flasch? Du denkst falsch. Wenn in einer Garage nur 1 Auto Platz hat, dann wird es ziemlich schwierig sein 6 Stück Autos hineinzuquetschen. > da ich nicht mit der lcd.h arbeiten will. Du wärst bei deinem derzeitigen Kenntnissstand aber gut beraten, die LCD Routinen aus dem Tutorial einfach mal so zu übernehmen. Eine Alternative wäre noch die sog. Fleury Lib (nach 'Peter Fleury LCD' googeln)
Faszinierend. Ein Array mit 7 Elementen, eine Schleife, die von 0 bis 6 zaehlt, um die Elemente auszugeben, und dann wird jeweils das (nicht vorhandene) siebte Element ausgegeben. Kann so nicht gehen... Gruss, Torsten
Das mit dem array hab ich hier ausm forum. da wurde behauptet, dass das so funktioniert grml so hab das dann mal alles einzeln gemacht. und nen bissl programmiert und probiert und nun gehts! hab den code im anhang jetzt hab ich nur noch ne frage, wie mache ich das, dass der µC die zweite zeile nicht überspringt zur zeit sieht das so aus: 1. zeile: beschrieben 2. zeile: leer 3. zeile: beschrieben 4. zeile: leer und dann würde ich gerne noch wissen, wie ich das mache, dass ein langer text nur in der ersten zeile angezeigt wird. muss ich dazu zwischen dem schreiben "display shift" einschalten?
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.