compatibilité ATM328P et ATM644P

Bonjour, n’ayant pas assez des 32Ko d’un ATM328P, j’ai donc réalisé une carte proto contenant un ATM644P.
Après m’être assuré de la compatibilité des pins (notamment A4 SDA du 328 vers SDA (17) du 644P et A5 SCL du 328 vers SCL (16) du 6AAP certains croquis fonctionnent bien.

Mais il y a un mais.
Notamment lorsque je compile un croquis utilisant #include <DallasTemperature.h> pour piloter des DS18B20 j’obtiens l’erreur suivante lorque j’ai choisi l’ATM644P alors que ca compile bien avec l’ATM328P:

invalid conversion from ‘const byte* {aka const unsigned char*}’ to ‘uint8_t* {aka unsigned char*}’ [-fpermissive]

Dans un autre croquis qui compile bien avec ATM328P j’ai l’erreur suivante:
C:\Users\AIRPOPCIE\Documents\Arduino\libraries\ProceduresJeeNodePOPvPOPv2/ProceduresJeeNodePOPvPOPv2.h:38:6: error: initializing argument 1 of ‘byte TraiterChaineRecue(unsigned char*, byte)’ [-fpermissive]

byte TraiterChaineRecue(unsigned char *ChaineCible, byte Long) {
Y as t il quelqu’un qui pourrait m’aider?..
Merci.

Auriez vous le message d'erreur complet (permettrait au moins de de savoir si c'est "votre" bibliothèque qui refuse de compiler, ou si c'est votre code)?

Il faut que les classes et fonctions soient adaptées au microcontrôleur, donc c'est impossible qu'en choisissant un 328p cela puisse fonctionner avec un 644p qui n'a ni le même nombre d'E/S, ni le même nombre de timers, ni les mêmes noms de PORT de sortie, ni les mêmes noms de registres, ni......

L'adaptation au 168p puis au 328p a été le premier travail d'Arduino quand il a copié Wiring qui utilisait un autre microcontrôleur.
Tant que l'on reste dans l'architecture avr c'est simple mais fastidieux.

Passé ces explications je ne vais pas pouvoir aller bien loin si ce n'est de te dire de chercher une adaptation "arduino" pour le 644p.

Il y avait une autre solution : la carte 644p est (était ?) la carte officielle du projet Wiring mais ce projet est stoppé depuis plusieurs années. Circonstance aggravante à l'occasion du passage en version 1.0 Wiring a bien remodelé ses fonctions et classes mais pas Arduino dans son passage simultané et chaotique dans sa propre version 1.0
Ce qui fait que je ne suis pas certain du tout que les bibliothèques Wiring (toujours disponibles au téléchargement : http://wiring.org.co/ puissent être utilisées dans l'IDE Arduino

merci pour les réponses. En fait tous mes croquis compilent sur 328P puis je choisis comme µP 644P (MightyCore).

Certains croquis comme RF12M compile biensur 644P et "cause" parfaitement avec un autre RF12M qui est sur 328P;
Lorsque je mets mon croquis qui utilise le RF12M sur 644 alors qu'il fonctionne sur 328 il ne cause plus alors que je n'ai pas d'erreur.

pour le message entier:

D:\ARDUINO\Version de travail\Maitre9\Maitre9.ino: In function 'void LectureDesTemperatures()':

Maitre9:333:43: error: invalid conversion from 'const byte* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]

    TempElu = sensors.getTempC(&Capteur1[0]);

                                           ^

In file included from D:\ARDUINO\Version de travail\Maitre9\Maitre9.ino:38:0:

C:\Users\AIRPOPCIE\Documents\Arduino\libraries\DallasTemperature/DallasTemperature.h:127:9: error:   initializing argument 1 of 'float DallasTemperature::getTempC(uint8_t*)' [-fpermissive]

   float getTempC(uint8_t*);

         ^

Maitre9:339:43: error: invalid conversion from 'const byte* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]

    TempGlu = sensors.getTempC(&Capteur2[0]);

                                           ^

In file included from D:\ARDUINO\Version de travail\Maitre9\Maitre9.ino:38:0:

C:\Users\AIRPOPCIE\Documents\Arduino\libraries\DallasTemperature/DallasTemperature.h:127:9: error:   initializing argument 1 of 'float DallasTemperature::getTempC(uint8_t*)' [-fpermissive]

   float getTempC(uint8_t*);

         ^

Maitre9:345:43: error: invalid conversion from 'const byte* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]

    TempKlu = sensors.getTempC(&Capteur3[0]);

                                           ^

In file included from D:\ARDUINO\Version de travail\Maitre9\Maitre9.ino:38:0:

C:\Users\AIRPOPCIE\Documents\Arduino\libraries\DallasTemperature/DallasTemperature.h:127:9: error:   initializing argument 1 of 'float DallasTemperature::getTempC(uint8_t*)' [-fpermissive]

   float getTempC(uint8_t*);

         ^

Maitre9:351:44: error: invalid conversion from 'const byte* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]

     TempRlu = sensors.getTempC(&Capteur4[0]);

                                            ^

In file included from D:\ARDUINO\Version de travail\Maitre9\Maitre9.ino:38:0:

C:\Users\AIRPOPCIE\Documents\Arduino\libraries\DallasTemperature/DallasTemperature.h:127:9: error:   initializing argument 1 of 'float DallasTemperature::getTempC(uint8_t*)' [-fpermissive]

   float getTempC(uint8_t*);

         ^

Plusieurs bibliothèque trouvées pour "DallasTemperature.h"
Utilisé : C:\Users\AIRPOPCIE\Documents\Arduino\libraries\DallasTemperature
Non utilisé : C:\Users\AIRPOPCIE\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master

"Certains croquis comme RF12M compile biensur 644P et “cause” parfaitement avec un autre RF12M qui est sur 328P;
Lorsque je mets mon croquis qui utilise le RF12M sur 644 alors qu’il fonctionne sur 328 il ne cause plus alors que je n’ai pas d’erreur.
"
Cela semble confirmer le diagnostic pessimiste (plus que le mien) de 68tjs…
Quelles ont été vos sources d’inspiration pour porter le 644?

ca capacité en mémoire...64Ko car je voudrais installer 2 programmes qui utilisent un LCD64128 l'un pour afficher date et heure en permanence et l'autre lorsque j'appui sur un BP voir led différentes T° qu'il reçoit d'un autre ATm328 équipé d'un module radio...

Es un problème de registres, de configuration?...
Merci de l'aide.

Lorsque je mets mon croquis qui utilise le RF12M sur 644 alors qu'il fonctionne sur 328 il ne cause plus alors que je n'ai pas d'erreur.

Il cause sur quelle interface ?
Sur la liaison série ?
La fonction init() qui est ajoutée derrière ton dos par l'IDE configure le micro "à la mode Arduino" : c'est à dire simple d'utilisation, sans prise de tête, mais comme on ne peut pas avoir le beurre et l'argent du beurre "à raz les pâquerettes"
Comment est configuré ton 644p ?
Comme en sortie usine ?
Et qu'elle est cette configuration sortie usine ? --> réponse dans la datasheet du micro. Il y va y avoir quelques registres à lire et à exploiter les lectures.

Bonjour, n'ayant pas assez des 32Ko d'un ATM328P,

Il y a peut-être de l'optimisation de code à faire avant de changer de micro.

Si tu fais une carte prototype je pense que tu fais un circuit imprimé, tu peux utiliser plus simplement le micro de la carte Mega qui a beaucoup plus de mémoire et qui est géré par Arduino.
Si tu recherches des connexions traversantes Il existe maintenant des cartes en "format réduit" qui sont équipées de ce microcontrôleur .

car je voudrais installer 2 programmes

Est-ce une erreur d'expression ? Parce qu'on ne peut mettre qu'un seul programme dans un micro, il n'y a pas de système d'exploitation.

ok je me suis mal exprimé. En fait je veux mettre les 2 programmes dans l'ide en ayant organisé de tel sorte qu' à la mise sous tension c'est la partie affichage de l'heure qui fonctionne par appel de sous programmes, puis lorsque j'appui sur un BP c'est une autre partie du croquis qui est appele pour recevoir les valeurs transmises par un autre ATM328P + RF12M. au bout d'une minute ca rebascule sur l'affichage de l'heure.
Losque je met les 2 BIENS ORGANISES j'ai environ 40Ko.. dont besoin d'un 64Ko d ou mon choix du 644P.

J'ai effectivement réalisé une carte proto avec:
Un 644P Un RF12M un module alimentation un DS3231 pour la date et l'heure.

Si je devais prendre une carte Mega 256 (que j'ai cela serait plus "consequant" en matière de circuit, et je pensais "plus abordable" le 644P

quand je dis qu'il ne cause pas en fait la comilation se fait bien mais la partie RF12M du programme ne tourne pas dans le 644 alors qu'il tourne dans le 328P

je regarde s'il existe des "petites" cartes 256 que je pourrais intégrer a ma carte proto.
Merci de l'éclairage (5v à led) hi.

j ai oublie de répondre à :

"Comment est configuré ton 644p ?
Comme en sortie usine ?
Et qu'elle est cette configuration sortie usine ? --> réponse dans la datasheet du micro. Il y va y avoir quelques registres à lire et à exploiter les lectures."
j'ai acheté 2µP ATMéga 644P dans lesquels j'ai chargé un BootLaodeur avec la méthode décrite pour les 328P et ca fonctionne bien.
Ensuite je le "téléchargeé comme un 328P.

je me suis demandé s'il fallait configurer certains registres mais là j'ai un handicape je ne décode pas le grand breton.. Alors les Datasheet c'est très indigeste pour moi. Si quelqu'un l'avait déjà fait.. ca serait très bien

je viens de trouver cette carte, je l’ai commandé car mes croquis compile très bien avec le 256
Merci pour l’idée…
Je vous dirais quand j’aurai réalisé…