Modulo

Janiiix3

Aktives Mitglied
28. Sep. 2013
1.333
10
38
Hannover
Sprachen
  1. ANSI C
  2. C#
Nabend,

Ich habe gerade mal wieder ein Brett vorm Kopf :-[

Wie bekomme ich diesen Wert (z.B 324) in einen String mit Modulo?
Mit der 10 er Stelle klappt es nur mit den 100ern nicht... Was mache ich falsch?



CodeBox C
         APP.Buffer[3]   = (APP.TriacSec    / 100)   + 48;
         APP.Buffer[4]   = (APP.TriacSec    % 100) + 48;
         APP.Buffer[5]   = (APP.TriacSec    / 10)   + 48;
         APP.Buffer[6]   = (APP.TriacSec  % 10)   + 48;
 
Probiere mal ...


CodeBox C
APP.Buffer[3]   = (APP.TriacSec / 1000)   + 48;
APP.Buffer[4]   = ((APP.TriacSec / 100) % 10) + 48;
APP.Buffer[5]   = ((APP.TriacSec / 10) % 10)  + 48;
APP.Buffer[6]   = (APP.TriacSec  % 10)   + 48;
 
Das ist jetzt mit 1000 er oder sehe ich das falsch?
 
Das ist jetzt mit 1000 er oder sehe ich das falsch?

Ja, du verwendest ja 4 Stellen, die brauchst du für eine 8Bit Zahl nicht (0..255).
Falls APP.TriacSec nur 8bit groß ist, kannst du bei APP.Buffer[3] eine Null oder ein Leerzeichen verwenden, weil 1.000er Stelle gibts da ja nicht.
 
Hallo Janiiix,

hat dich mein Tipp weitergebracht, konntest du das Problem lösen?

Dirk :ciao:
 
Hallo @Dirk

Hat super geklappt. Habe heute den Prototyp meiner Schaltzeituhr fertig gestellt.
Jetzt wird geEAGELt ;)

Kurze quer Frage ->
Gibt es hier im Forum eine art "Datenbank" für Eagle Bauteile? Wäre mal richtig cool, wenn man sich die Bauteile, die man erstellt hat, teilen kann.
 
Habe heute den Prototyp meiner Schaltzeituhr fertig gestellt.
Jetzt wird geEAGELt ;)
:gamer1: cool :D

Kurze quer Frage ->
Gibt es hier im Forum eine art "Datenbank" für Eagle Bauteile? Wäre mal richtig cool, wenn man sich die Bauteile, die man erstellt hat, teilen kann.

So richtig nicht, ich hatte zwar mal eine "avr-praxis.lib" angelegt und ein paar Sachen von mir definiert. Das war es aber dann. Ich könnte aber mal einen Bereich für Eagle-Anwender machen, mit einer "Gemeinschafts.lib"
 
Das wäre richtig cool.
Dauert das lange? Vill. Finde ich schon ein paar Bauteile für mein Projekt
 
Naja, da müsste jeder mal ein bisschen dran arbeiten. Ich würde da sicherlich dann auch mal ein paar Devices erstellen, aber alleine dran zu arbeiten ... :giggle:
;)
 
Da ich mich ganz gut mit Eagle auskenne, würde ich dir gerne helfen wollen.
 
Gut, ich schau mal, dass ich zunächst einen entsprechenden Bereich für Eagle bzw. die Lib im Forum finde. Dies mache ich irgendwann am Wochenende.
 
  • Like
Reaktionen: Janiiix3
Hmm...
hab gerade mal durch meinen lib-Ordner geschaut - ist ein ganz schönes durcheinander geworden, inzwischen...
Und mit der Dokumentation ist das auch so eine Sache...
Da sind dann diverse Packages nahezu identisch in den unterschiedlichsten libs...
 
Schon mal ein bisschen angefangen...
 

Anhänge

  • SwitchBoard.jpg
    SwitchBoard.jpg
    282 KB · Aufrufe: 8
Hiiiiiiiilfe...

Sobald ich einen decrementiere, kommen sofort komische Zahlen... :(



CodeBox C
    /* Year */
   while (1)
   {
       Year += checkEnc(&Encoder);
       Encoder.Cnt = 0;

       if (Year > 2099)
       {
           Year = 2099;
       }
       if (Year < 2016)
       {
           Year = 2016
       }

       lcd_gotoxy(0,1);
       lcd_puts(dec_dtostr(Time->Day,Time->Mon,Year+2000,Time->DayN));

       if (!(ENC_ENTER_PIN & 1<<ENC_ENTER_bp))
       {
           _delay_ms(250);
           break;
       }
   }




CodeBox C
char *dec_dtostr(uint8_t day, uint8_t month, int16_t year, char Day_Name)
{
   /* DEC  to ASCII */
   date[0]       = ' ';
   date[1]       = ' ';
   date[2]       = (day / 10) + 48; // ten
   date[3]       = (day % 10) + 48; // ones
   date[4]       = '.'; // point
   date[5]       = (month / 10) + 48; // ten
   date[6]       = (month % 10) + 48; // ones
   date[7]       = '.'; // point
   date[8]     = ((year / 1000)) + 48;   
   date[9]     = ((year / 100) % 10) + 48;
   date[10]    = ((year / 10) % 10)  + 48;
   date[11]    = (year  % 10)   + 48;
   date[12]   = ' '; // empty

   switch(Day_Name)
   {
       case 1 :{date[13] = 'S'; date[14] = 'o';}break; // So
       case 2 :{date[13] = 'M'; date[14] = 'o';}break; // Mo
       case 3 :{date[13] = 'D'; date[14] = 'i';}break; // Di
       case 4 :{date[13] = 'M'; date[14] = 'i';}break; // Mi
       case 5 :{date[13] = 'D'; date[14] = 'o';}break; // Do
       case 6 :{date[13] = 'F'; date[14] = 'r';}break; // Fr
       case 7 :{date[13] = 'S'; date[14] = 'a';}break;   // Sa
       
       default :{date[12] = '\0';}break; // string termination
   }
   date[15] = ' ';
   date[16] = '\0'; // string termination

   
   
   return date;
}

 
Was ich auf die Schnelle sehe ...



CodeBox C
if (Year > 2099)
    {
        Year = 2099;
    }
    if (Year < 2016)
    {
        Year = 2016
    }

    lcd_gotoxy(0,1);
    lcd_puts(dec_dtostr(Time->Day,Time->Mon,Year+2000,Time->DayN));


Du summierst zu Year 2000 beim Funktionsargument, zuvor grenzt du Year ein zweischen 2016 und 2099. Du hast also immer irgendwas über 4000.
 
Es war ein casting Fehler. Danke.
Funktioniert jetzt ;)
 
Das Problem ist oder war...



CodeBox C
uint16_t tmp = 0;
while(1)
{
   tmp+= read_enc(); // read_enc gibt ein Byte zurück...
}


Wieso kommt es da zu Fehlern? Es kommen wenn ich Incrementiere, wilde Werte bei raus.
Ändere ich read_enc dahin, dass die Funktion mir 2 Byte zurück gibt (uint16_t) funktioniert es.
Versteht der Compiler dort an der Stelle was falsch?
 
Zuletzt bearbeitet:

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)