Neueste Beiträge

#21
P
Mikrocontroller / Aw: LCD-Ansteuerung
Letzter Beitrag von pic18 - 23.04.2025, 19:43:52 CEST
der Code sollte eigentlich laufen, zeig mal den aktuellen kompletten Code. Welche Anzeige hast Du denn? Hat diese nur zwei Zeilen?
#22
P
Mikrocontroller / Aw: LCD-Ansteuerung
Letzter Beitrag von picass - 23.04.2025, 19:03:21 CEST
Hallo pic18 !
Das war eine Überraschung, dass du dich derart fix mit einem Prog-Vorschlag vermeldet hattest. Wau...., danke sehr.
Deinen Vorschlag konnte ich gerade eben zwischen dem täglichen Trouble ausprobieren. Hier war heute der Himmel los: ein während des Mittagessens vage geäußertes Stichwort - nämlich "Teneriffa" - führte in einem Blitzermarathon zur Buchung einer Reise. Plus Leihwagen, plus Platz im Parkhaus - obwohl dort alles dicht war....!
Also gettz dein Vorschlag. Er führte auch schon zu einem feinen Erfolg: der für die zweite Display-Zeile ausgedachte Text "zwei" erschien tatsächlich. Beim ersten Anlauf in der ersten Zeile, wobei Voriges gelöscht wurde, im zweiten Anlauf auch in der ersten Zeile, und der Rest vom Vorigen war noch vorhanden. Nach der Hochkonzentrations-Übung des Urlaubbuchens bin ich jetzt platt und sehne mich nach einem Schluck Rotwein und einem oder zwei Kürbiskernbrötchen, um das demnächstige Abdüsen zu feiern.

Das Prog vom "sprut" krankt u.a. daran, dass dort nicht wirklich eine Einsprungs-Prozedur mit ggf. variabler Adresse enthalten ist, sondern dass stattdessen in der Initialisierung ein "Gesamt-Reset" ausgelöst wird, was den Cursor natürlich auf die erste Stelle setzt. Also genau genommen erfolgt so keine (variable) Adress-Angabe/-Routine. Man müsste mal in einem anderen Programm schnüffeln, das zwei Zeilen bedient. Aber gettz bin ich platt......Nochmal danke für dein Hilfe. Ab zur Rotweinflasche....
Grüße, picass
#23
P
Mikrocontroller / Aw: LCD-Ansteuerung
Letzter Beitrag von pic18 - 22.04.2025, 20:07:05 CEST
meinst Du eine Anzeige 4x20 Zeichen?
zum Verständnis gebe ich hier mal den C Code
void LCD_gotoxy(uint8_t spalte, uint8_t zeile)
{
    uint8_t Adresse;

    akt_pos.spalte_nok = spalte;    //hier Spalte gleich merken, wird verändert
    akt_pos.zeile = zeile;
    letzte_pos.nok =1;    //letzte position nicht mehr gültig


    // 2: Zeile 0..3
    // 3: Spalte 0..39
    // Zeile 0: 0x00
    // Zeile 1: 0x40
    // Zeile 2: 0x00+Zeilenlänge
    // Zeile 3: 0x40+Zeilenlänge

    if (zeile>1) //Zeile2, 3
    {
        spalte += 20; //LCD_spalten;
    }
    Adresse = ((zeile & 0x01) * 0x40) + spalte;
    writeLCDCmd(Adresse | 0x80);

    wait_1us (25);//_ff testweise org. 25us

}
bei deinem Prog. müsstest Du folgendes schreiben um den Cursor zu setzen
bcf    PORTC, LcdRs; ist nicht unbedingt nötig da schon gelöscht.
movlw adresse; (0x40)
movwf LcdDaten
bsf LCDDaten,7; (0xc0) bit 7 setzen, kann auch mit oder 0x80 gesetzt werden
call OutLcdControl
Anschließend dein Zeichen laden und mit OutLcdDaten ausgeben.

ich würde nur ein Ausgabeunterprog. schreiben und bei Daten laden RS löschen bzw. setzen. Den Text würde ich in einer Schleife ausgeben.
#24
P
Mikrocontroller / Aw: LCD-Ansteuerung
Letzter Beitrag von picass - 22.04.2025, 18:24:27 CEST
Wärme erneut auf und gönne mir einen Rückfall ins Assemblieren. Das aber deswegen, weil es mir um die Verwendung von LCD-Displays geht und da wäre im Grundsatz ein Wiedereinstieg in Assembler eher leichter. Wo ist das Prob?
Das oben eingestellte Programm funktioniert immer noch, es gibt in einer Zeile die Worte "danke Piccer" aus. Nun würde ich gerne die zweite Zeile auch in Betrieb nehmen, finde aber weder im Sprut'schen orig Programm noch auf seiner Homepage mit Erklärungen zum LCD-Display einen Hinweis, wie dem Programm beizubringen ist, nicht auf den Anfang der ersten Zeile zu gehen (quasi Reset), sondern halt auf den Anfang der zweiten Zeile.
Die Adresse für Ersters ist schlicht "00", die Adresse für die zweite Zeile lautet "40", soweit klar. Aber wo findet sich das im Programm? Das orig Sprut-Prog ("Hello") ist unten im gezippten Anhang, das ist die alte Version von MPLAB. Mein Prog befindet sich oben und ist die mittlere MPLAB-Version. Der Link auf die Sprut-Beschreibung lautet:
https://sprut.de/electronic/lcd/index.htm
Kann mir da jemand beim Sprung in die zweite Zeile helfen?
Grüßen, picass
lcd.zip
#25
P
Projekte und Eigenbau / Aw: Roboter (Spinne bzw. Krebs...
Letzter Beitrag von picass - 22.04.2025, 15:34:42 CEST
Da steht dir mit der später mal möglichen Unterstützung beim Programmieren ja noch eine rosige Zukunft offen, zumal der Sprößling mit ungewohnten Methoden kreativ ans Werk zu gehen scheint.

Habe heute Vormittag zugeschlagen: bestellt wurde ein Joy-it-Car als Bausatz und ein Exemplar des Microbit-µC's. Wenn es gelingen sollte, den Bausatz aus den elende vielen Einzelteilen zusammen zu setzen und nichts Wesentliches fehlte oder aber Ungutes "übrig" blieb, dann könnte es ganz schnell gehen. Denn die Programmierung mittles Maus-Stupsen ist für einfache Manöver nun wirklich einfach, zumal man unmittelbar danach das Ergebnis betrachten kann. Das werde ich durch exercieren. Danach kommen dann dieselben Beispiele in MicroPhyton dran.
Ja, die Nutzung von fertigen und funktionstüchtigen Programm-Schnipseln ist eine rechte Abkürzung. Holprige Wege hatte ich in der Vergangenheit zur Genüge. Da erinnere ich mal daran, dass ich vor vieeeeelen Jahren sowohl die komplette Hardware als auch die Software incl. Erfindung eigenen Protokolls für serielle Datenübertragung geschaffen hatte. Dunnemals ging es um eine automatische Steuerung der Rollläden in unserem Haus. Dieses Projekt hat 1 1/2 Jahre meines Lebens erfordert. Vor wenigen Jahren war ich in einer Reha für 1 Monat verschwunden......, Hüfte halt. Statt wie wohl alle anderen Rehabilitanten sich nach Zerstreuung, also dem Quatschen mit anderen oder aber gleich der Suche nach evtl. geschlechtlich orientierten Genossen/Genossinnen auszurichten, hatte ich meinen Laptop eingeschmuggelt - der Hausmeister hatte was dagegen - und ohne Zugriff auf mein Labor die Schaltung für Anzeige der Öltemperatur in meinem Dicken - was mein Auto ist - ersonnen, also auch Hardw. u. Softw..
Ne, da hatte ich genug. Deshalb ja auch möglichst kein Assembler mehr. Aus Zeitgründen bevorzuge ich jetzt zur Abwechselung mal schnelle Lösungen. Die gesparte Zeit wandert in die Gartenarbeiten. Wenn der Bausatz hier ist, stelle ich ihn mal vor.
Grüße, picass
#26
^
Projekte und Eigenbau / Aw: Roboter (Spinne bzw. Krebs...
Letzter Beitrag von ^Cobra - 22.04.2025, 10:33:42 CEST
Anregungen gibt es viele. Da mich diese Bausätze aber nicht sonderlich Reizen gehe ich den langen, holprigen weg mit selbst Konstruieren,3D drucken bzw. zusammen bauen und natürlich das programmieren. Für mich ist ehr der Weg das Ziel und wenn es noch etwas dauert ist auch mein Sohn soweit sinnvoll anzupacken. Bis jetzt muss ich mehr aufpassen das er nicht in den Fußboden bohrt oder ein Schrank zersägt :P

#27
P
Projekte und Eigenbau / Aw: Roboter (Spinne bzw. Krebs...
Letzter Beitrag von picass - 22.04.2025, 09:46:45 CEST
Zitat von: ^Cobra in 22.04.2025, 06:48:08 CESTDas Wetter zwingt mich zu sehr was im Garten,am Haus oder die immer noch nicht komplett eingeräumte Werkstatt weiter zu machen.
Da geht es dir noch gut! Zusätzlich zum Wetter zwingt meine Frau mich, "was" am Garten zu machen. Und dann gibt es ja noch meinen zweiten Garten, den am geerbten Elternhaus. Das Grundstück hat 1.000 m² und zwecks des Leerstandes des Hauses ist die Natur sehr erfolgreich, sich dort auszubreiten. Dazu zählt übrigens auch die Tierwelt: es hat sich seit einem Jahr schon ein Reh den Garten als Nutzraum auserkoren. Das kommt aus dem nebenan liegenden Wald, spaziert ein Stück über die Anliegerstraße und tummelt sich auf meinem und den Nachbargrundstücken. Zudem musste ich mich in den letzten Tagen um 6 (!) Thermokomposter kümmern, also umsetzen und vorher noch eine irre Menge an Zweigen zerteilen, häckseln, etc..

Aber Roboter muss auch sein. Irgendwie muss es weiter gehen. Bei der Gelegenheit hatte ich mal nach Foren geschaut, die sich dem Theme "Robotik" widmen würden. Fand aber nur eines, das offenkundig ausläuft oder das schon ist. Vielleicht mal in einem Modellbauforung reinschauen? Geht ja nur um Anregungen.
Grüße, picass
#28
^
Projekte und Eigenbau / Aw: Roboter (Spinne bzw. Krebs...
Letzter Beitrag von ^Cobra - 22.04.2025, 06:48:08 CEST
Moin,
Leider noch nicht viel weiter. Habe die servos hier liegen und die Konstruktion in Freecad auch angefangen aber zu mehr noch nicht gekommen. 
Das Wetter zwingt mich zu sehr was im Garten,am Haus oder die immer noch nicht komplett eingeräumte Werkstatt weiter zu machen.

Ich hatte in meiner Schulzeit mit den nxt Roboter von lego zu tun. Da waren wir auf Wettkämpfe usw. Diese wurden auch sehr einfach grafisch programmiert. Natürlich haben unsere Gegner von Berufsschulen dies eleganter gemacht mit welcher Sprache auch immer. Hört sich aber für mich ähnlich an.
#29
P
Projekte und Eigenbau / Aw: Roboter (Spinne bzw. Krebs...
Letzter Beitrag von picass - 21.04.2025, 17:38:15 CEST
Wie geht es dem Krebs denn so? Hat er den Krebsgang erlernt...?

Gehe gerade mit dem Gedanken schwanger, einen kleinen Fahrroboter anzuschaffen. Hatte vor wenigen Tagen meinem Enkel ein "Joy-it-car" zum Geburtstag rüber geschoben. Der (Karren) wird zwar - leider - mit so'nem MicroBit-Prozessor betrieben, dafür gibt es aber supergute Anleitungen für eine dieser grafisch-orientierten Sprachen, bei denen man kleine Symbole mit der Maus auf ein Feld zieht und so Funktionen auslösen kann. Und es gibt die gleichen Beispiele auch in MicroPhyton und das wäre  das, was mich interessieren würde: funktionsfähige Programme, mit Hilfe derer ein Einstieg in MP ggf. einfach wäre. Hm....., jemand Erfahrung welcher Art auch immer mit diesem Joy-it-System oder dem MicroBit ?
Grüße, picass
#30
P
Compiler Software / printf() in C
Letzter Beitrag von pic18 - 19.04.2025, 14:06:57 CEST
Hallo, ich bin gerade dabei die Funktion printf() auf meine LCD-Anzeige oder auch andere Ausgabe-Schnittstelle umzuleiten. Das hat den Vorteil, dass ich float Zahlen formatiert ausgeben kann. Ich habe mir folgenden Code geschrieben, muss aber noch testen, ob dieser funktioniert. Könnte es so gehen, oder habt ihr Verbesserungsvorschläge?
#include "configuration.h"
#include "usb.h"
#include "main.h"
#include <stdio.h>

#if UIP_LOGGING == 1

void uip_log(const rom char *data) {
    printOut( "%S\r\n", data );
}

#endif

#include <string.h>
#include <ctype.h>
#include <stdarg.h>
#include "net/TcpApps/telnetd.h"
#include "commandParser.h"
#include "hardware.h"
#include "lcd/lcd.h"

typedef void (*put_t)(const uint8_t);
static int _print(put_t put, const rom char *f, va_list ap);

stdout= _H_USER; //damit Aufruf in main.c
int _user_putc(char c){  // für printf
    put_t fct;

#if TELNETD_SUPPORT == 1 && USB_SUPPORT == 1
    fct = (stdOut == source_usb) ? &transmitUSB : &telnetSendChar;
#elif TELNETD_SUPPORT == 1
    fct = &telnetSendChar;
#else
    fct = &transmitUSB;
#endif
    if (stdOut == source_lcd) fct = &writeLCDRomData;//&writeLCDData
    fct( c );    
}

extern source_t stdOut, stdOut_mr; // für print_test

void print_test(void){
    lcd_neu= 0; LCD_ausw();// Anzeige (Hauptmenu) auswählen
    writeLCDInitCmd(LCD_crcr_blink); //zum Testen des blinkens
    writeLCDInitCmd(LCD_CLEARDISPLAY);
    stdOut_mr = stdOut; //vorsichtshalber sichern
    stdOut = source_lcd;    //damit auf LCD Anzeige
    //#define _user_putc(c) writeLCDData(c) in main.h definiert siehe putc.c
    printf("%d\n",123);
    printf("%3.2f\n",3.14);
    printf("%f\n",3.14);
    stdOut = stdOut_mr;
}
🡱 🡳