Naben freunde der Nacht, benutze schon seit einiger Zeit Codevision AVR (vollversion...) und hatte auch nie probleme, jedoch geht seit neustem die lcd_gotoxy(0,0); funktion nicht, d.h. sie verschiebt alles um ~14 Zeichen nach rechts und springt nicht wie gewünscht an den anfang des LCDs... das ganze sieht wie folgt aus: (- = leerstelle im display) ---------------- -----------Text- und nicht wie gewünscht: Text------------ ---------------- quellcode schnippsel: unsigned char g_temp[5]; .... lcd_clear(); lcd_gotoxy(0,0); itoa(rpm,g_temp); lcd_puts(g_temp); .... eine neuinstallation hat leider auch nix gebracht :( ich hoffe das jmd. noch ne idee hat wodran es liegen könnte. Mfg Marcel
ich vermute dass deine Software zwar an die richtige Position schreibt, aber aus irgendeinem Grund dein display mit offset darstellt, schau mal im Datenblatt nach dieser Funktion. Verwendest du den RS-Pin noch für andere Funktionen? dann könnte es sein dass du möglicherweise mit puts ins instruction-Register schreibst und dadurch das Display verkonfigurierst. Oder schreibst du an anderer Prg.Stelle ins Instruction-Register? dann bist du möglicherweise "selber schuld". reduzier mal den code auf lcd_init lcd_clear lcd_goto lcd_putchar('*') wenn das klappt ist das Display in Ordnung. grüsse leo9
das das display in ordnung ist, habe ich vorher schon getestet (parallele schnittstelle...)... habe jetzt mal nen kurzen code geschrieben, und da funktioniert die lcd_gotoxy(0,0); funktion, sseeeehrrr merkwürdig... habe ansonsten nur noch einen DS1820 temp fühler angeschlossen und auch im programm "verankert", funktioniert auch eigentlich alles fehlerfrei, nur die funktion eben nicht... bin jetzt am auskommentieren der DS1820 fkt. mal schaun an welcher Zeile es liegt... danke aber schon mal für deine Hilfe :) Mfg Marcel
also es liegt scheinbar an genau dieser zeile: devices=w1_search(0xf0,rom_codes); kommentiere ich diese aus so funktioniert es wunderbar den cursor zu verhschieben, allerdings hilft mir das jetzt eher weniger weiter :(
ich würde mir das datenblatt des ds18x20 genauer auschauen; je nach modell ist bei denen der datenstream unterschiedlich formatiert (kann mich erinnern, habe schwierigkeiten mit einem ds1822, ist aber schon lange her...) glaube genau dasselbe trifft bei dir zu, du bekommst von ihm die richtige zahl nur mit 14 null-stellen davor oder sowas...
das problem habe ich aber immer, selbst wenn ich die ausgelesene temp. nicht anzeige sondern nur die drehzahl...
dann poste halt die Schaltung und den ganzen source, codeschnippsel ohne uP-Type, Initialisierung und möglicherweise störende Interruptroutinen ist keine gute Grundlage zum Fehler erraten. grüsse leo9
Habe nur diverse rechnungen rausgenommen da diese keine register oder sonstiges verändern
bin zwar zu faul mich mit allen Definitionen zu beschäftigen, mir fallen aber zwei mögliche Fehler auf: *) unsigned char rom_codes[MAX_DEVICES,2]; du reservierst zwei Byte pro device, die search-Routine will aber 9 Byte speichern *) unsigned char g_temp[5]; unsigned int rpm=0; rpm kann fünfstellig werden, du reservierst für den Ausgabestring aber nur fünf Zeichen, damit schreibt itoa auch ins nirwana Wenn eins davon der Fehler war, ist wieder einmal der Beweis erbracht dass Wirth doch die bessere Programmiersprache entworfen hat, mit c kann man zwar alles machen, sich aber genauso schnell selbst vernichten. grüsse leo9
*) unsigned char rom_codes[MAX_DEVICES,2]; du reservierst zwei Byte pro device, die search-Routine will aber 9 Byte speichern danke danke danke :) genau dadran hat es gelegen, hab wohl gedacht [MAX_DEVICES,2] = maximal mögliche angeschlossene geräte.... aber jetzt hats auch klick gemacht :)
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.