Problema con CodeWarrior

Hola gente, estoy tratando de programar un MC68HC908QB8, por supuesto utilizando CODEWARRIOR 6.3 y programando en lenguaje assembler (todavia no se mucho sobre el lenguaje C). Les comento cual es mi problema, resulta que compilo el programa y todo resulta a la perfeccion, lo que sucede es que a la hora de grabarlo me salta un error (ERROR 99), el cual dice que tiene problemas al intentar grabar la FLASH. Estoy utilizando una placa grabadora EVALUMQTY. Cualquier sugerencia se los voy a agradecer, estoy con esa traba hace bastante...
 
Según ésta página, que tuvo el mismo error, cambió lo siguiente;
Página anterior citada dijo:
Problema resuelto: Aumento de la frecuencia de reloj a 4.915MHz / 4800 baudios de 1.6MHz 1563 baudios. Al parecer, algunos tiempos asunto en la velocidad menor.
Obvio que es "San Google Traductor".
Probá eso, porque el error es que no se comunica.

Saludos
 
Hola. Estoy con la tarjeta de evaluación Kinetics K40 y necesito sacar un mensaje en pantalla, "Hola Mundo".
Debo configurar un interruptor timer que me genere una interrupción cada segundo.

Me sale error con lo siguiente:
¿Como puedo solucionarlo? Gracias.
C:
#include "derivative.h"
#include "Driver_SLCD.h"
#include "string.h"
#include "stdio.h"

#define FTM1_MOD_VALUE 24000

void _PWM(float DutyCycle);
void initPWM();

extern int LPTMR_INTERRUPT;
extern int int_counter;
extern void lptmr_interrupt();
extern void time_delay();
extern void initPIT();
void printLCDString(char *str);

int main(void)
{
    STRING str = "KAIXO";
    printf("String %s\n", str);

    _SLCDModule_Init();
    _SLCDModule_PrintString(str, 0);

    char str_number[100];

    printf("\n'H' 'o' 'l' 'a': %d\n", int_counter);
    lptmr_interrupt();
    time_delay();
    printf("\nAfter delay int_counter: %d\n", int_counter);

    _SLCDModule_ClearLCD(0);
    STRING str_seg = "SEG";
    _SLCDModule_PrintString(str_seg, 18);

    int_counter = 0;

    for(; {     
               if(LPTMR_INTERRUPT == 1){
                   LPTMR_INTERRUPT = 0;         
                   sprintf(str_number, "%d", int_counter);
                   _SLCDModule_PrintString(str_number, 0);
                   printf("counter: %d\n", int_counter);
               }
        }
        return 0;
    }

void initPWM(){
         SIM_SCGC6 |= SIM_SCGC6_FTM1_MASK;

         PORTA_PCR8 = PORT_PCR_MUX(3) | PORT_PCR_DSE_MASK;

        
         FTM1_MODE |= FTM_MODE_WPDIS_MASK;
         FTM1_MODE &= ~1;
         FTM1_QDCTRL &=~FTM_QDCTRL_QUADEN_MASK;
         FTM1_CNT = 0x0;
         FTM1_MOD = FTM1_MOD_VALUE;
         FTM1_CNTIN = 0;
         FTM1_C0SC |= FTM_CnSC_ELSB_MASK;
         FTM1_C0SC &= ~FTM_CnSC_ELSA_MASK;
         FTM1_C0SC |= FTM_CnSC_MSB_MASK;
         FTM1_C0V = FTM1_MOD_VALUE;
         FTM1_SC = FTM_SC_PS(0) | FTM_SC_CLKS(1);
    }

    void _PWM(float DutyCycle){
        float D = DutyCycle*0.01;
        FTM1_C0V = (int) ((1.0-D) * (float)FTM1_MOD_VALUE);
    }
 
Uuuh lo usé hace 10 años en la universidad pero yo dibujé mis letritas. Qué épocas.

Que me acuerde, hace 10 años, no lo tengo fresco pero, recuerdo que el timer se usaba para generar la frecuencia de barrido para la LCD y otro para hacer uso de interrupciones.

El procesador experto de CodeWarrior ayuda bastante, o usar el mismo timer y un incremento y cuando exista un desborde hacer que se ejecute una función.
Ya no usas más que el timer que genera la frecuencia de la LCD.
 
Última edición por un moderador:
De una web que soporta Kinetis
Pregunta allí a ver

No entiendo muy bien.
Usas delays e interrupciones a la vez eso no lo veo muy claro.
Dices que sale un error pero no dices cual. Dinos que error es a ver.
Los mensajes están en tres idiomas mezclados, Eusquera, Español e Inglés, supongo que clarificaría un poco que estén en uno solo.

Simplifica el código al máximo hasta que funcione algo y a partir de ahí vas añadiendo poco a poco para ver que cosa es la que falla.

Me acaba de pasar lo mismo en un código python que no conseguía entender. He ido quitando líneas hasta que he comprendido como funcionaba y a partir de ahí he vuelto a poner una a una las líneas pero ya desde el conocimiento para que hiciera lo que yo quería.
 
¿Hay diferencias entre CodeWarrior y otros compiladores? En CodeWarrior necesito hacer unas prácticas pero no me están funcionando, ejemplo, un contador en OnlineGDB me funciona pero cuando lo llevo a CodeWarrior salen mas de 10 warning
 
Por lo que comentas me parece estás bebiendo de fuentes contaminadas.

Si en una usan delays para lo que sea ya vamos mal, pero si los meten dentro de la interrupción entonces ya se supera toda la superación superable de la superancia... No me extraña que ni compile.
Si en la otra da una lista de warnings. que como su nombre indica es que se está programando con "guarrings" osea con guarradas y malos modos que lo mismo funcionan pero que potencialmente no van a funcionar.

Yo lo que haría sería copiarme de otros sitios en los que sepan programar.
 
Disculpame scooter, pero yo en un inversor implemento un SPWM vía interrupciones por timmer y para poder trabajar el display dónde monitoreo la frecuencia, del equipo, requiero implementar delay para tener una visualización correcta... Si vos decís que por hacer eso no se programar, entonces creo que vas a tener que refrescar tus conocimientos y ya cambiar el disco rallado de que por usar delay sos un meme andante...
Lee un p
En resumen, no vi un planteo tuyo "lógico" sobre el tema ...
Saludos
 
Disculpame scooter, pero yo en un inversor implemento un SPWM vía interrupciones por timmer y para poder trabajar el display dónde monitoreo la frecuencia, del equipo, requiero implementar delay para tener una visualización correcta... Si vos decís que por hacer eso no se programar, entonces creo que vas a tener que refrescar tus conocimientos y ya cambiar el disco rallado de que por usar delay sos un meme andante...
Lee un p
En resumen, no vi un planteo tuyo "lógico" sobre el tema ...
Saludos
Hola torres.electronico. Tienes algún material que me permita aprender a programar en CodeWarrior ? o solo con conocer lenguaje C es suficiente. Gracias.
 
Hola torres.electronico. Tienes algún material que me permita aprender a programar en CodeWarrior ? o solo con conocer lenguaje C es suficiente. Gracias.
Hola, tener una base de C te va ayudar mucho. Yo lo poco que aprendí de CW, lo adquirí del foro de codewarrior en la web del programador. No me pareció muy práctico en su momento, asi que no pase de blink LED y hola mundo.
 
Si trylo, coincido en parte con lo que decís, pero en mi opinión, sean estándar o no, el C sigue siendo un lenguaje de alto nivel y todos sirven. Las variantes de C tienen similitudes, son fáciles de interpretar, pero a la hora de querer aprenderlos bien y usarlos, me llevo unos pedos mentales terribles. Me pasó también con todos los basic para micros; son relativamente fáciles de interpretar, pero cuesta aprenderselos a todos.
Codewarrior le faltaría más aportes de la comunidad y quizás se volvería más atractivo como ccs o Arduino, que básicamente son los lenguajes/compiladores que más aportes y librerías hay en la red.
Yo me tomo el trabajo de leer mucho las librerías para sacar ideas y atacar programas
 
No creo por qué si sabes programar en estándar no necesitas aprender más.

El código que funciona en una plataforma el mismo funciona bien en otra.

Cuando no es estándar hay que hacer modificaciones al código, para poder hacerlo funcionar en otra plataforma.

Ejemplo ccs tiene directivas raras como:
#use fast io
Output_high();
Read_adc();

Eso para mí son cochinadas.

Code Warrior a diferencia no.
 
Atrás
Arriba