desktop

Preguntas de Arduino y C para tal micro

El atmega328 en su hoja de datos te da la siguiente información:

VIL: 0,3Vcc (Vcc=2,4v-5,5v) [Excepto /Reset y XTAL1]
VIH: 0,6Vcc (Vcc=2,4v-5,5v) [Excepto /Reset y XTAL1]

Lo que suceda en el medio... y suerte con eso!.

Después tenés puertos con un comparador analógico (además de los ADC).
 
hola, estaba viendo el tema de programacion en arduino y veo que , por dar un ejemplo, el reloj es de 16 M y cambiar eso es un lio.
tambien que si quiero usar un timer de el micro es otro lio.

pregunta 1: si yo me meto con el lenguaje C de atmel o el de pic con su programa especifico, en ese caso si posee instrucciones o funciones que me permitan usar esas cosas de el micro ??

pregunta 2 : imagino que las instrucciones y el lenguaje en general , la estructura es similiar al procesing ?

pregunta 3 : me pueden dar el enlace donde meterme, donde bajar esos programas, yo soy muy duro con eso, me han tenido que explicar paso a paso para poder bajar el de arduino y tener asi el icono en la pantalla de la computadora y asi usarlo.

muchas gracias.
 
Bajar el programa es muy simple si eso te cuesta lo otro te costara más, el tema del timmer es algo complejo al principio, como a todo hay que tomarle la mano si en arduino te cuesta donde todo esta simplificdo, imagina en el assembler del micro o en C
Para Pic hay varios "C", el MikroC, el CCS, pero son pagos, para Atmel tenes el ATmel Studio AVR C también son pagos pero podes bajar de sus web un programa de demostración que tiene algunas limitaciones, pero para empezar alcanzan, hay algunos gratis pero tienen sus limitciones
Si describis lo que querias hacer con el timmer, seguro que los enemigos acérrrimos de los delay() del foro gustosos te explicaran paso a paso como hacer uso del timmer y no morir en el intento
 
Los timers se pueden usar sin problemas en arduino, basta con cargar la librería adecuada, incluso sin la libraría se puede.
 
ah, gracias, yo aun no comprendo mucho, si bien me estoy metiendo en el procesing y voy comprendiendo .
pero mi idea final es directo al micro , mas que al arduino.

y que me recomiendan , si tuviesen que elegir solo 1 linea, la linea de pic o de atmel ?? para programar en C ?
y si hay algun programa bueno , gratis y facil de bajar, que si mas adelante quiero algo mejor, pues sea con las mismas instrucciones auque de pago, pero al principio uno gratuito.
yo , dudo que vaya a usar alguna vez un micro de esos de 100 patas, o sofisticados, para mi con los de 28 pines para abajo, estoy sobrado, y 8 bits.

atmel o pic ??
y donde voy a buscar el programa para bajarlo ??

no se si hay diferencia notoria en prestaciones entre una marca y otra, lo que si , ya estoy con arduino, no se si eso tiene algo que ver o no , o si al programar en C termina siendo igual si es arduino, o pic o atmel.

les agradezco mucho a todos .
Bajar el programa es muy simple si eso te cuesta lo otro te costara más, el tema del timmer es algo complejo al principio, como a todo hay que tomarle la mano si en arduino te cuesta donde todo esta simplificdo, imagina en el assembler del micro o en C
Para Pic hay varios "C", el MikroC, el CCS, pero son pagos, para Atmel tenes el ATmel Studio AVR C también son pagos pero podes bajar de sus web un programa de demostración que tiene algunas limitaciones, pero para empezar alcanzan, hay algunos gratis pero tienen sus limitciones
Si describis lo que querias hacer con el timmer, seguro que los enemigos acérrrimos de los delay() del foro gustosos te explicaran paso a paso como hacer uso del timmer y no morir en el intento

en asm se que es un parto el tener que mirar todo de todo, cada registro, cada cosilla de configuracion mirar el manual de la datasheet.
me d ala impresion que el procesing de arduino simplifica todo eso, pero tambien te limita, como dije por ejemplo en el ck o con el uso de los timers.

imagino tambien que el lenguaje C diseñado por el fabricante, para el micro directo debe por un lado simplificar y por el otro lado permitir facil accceso a todo, incluso timers ( en arduino no tanto ya que lo usa el arduino para sus cosas) .

en fin, yo NO estoy canchero, me cuesta cada cosa nueva, si bien lo de programar y entender las instrucciones va, con paciencia, pero me interesa ir viendo paralelamente como dije para trabajar con el micro, NO es mi idea trabajar con arduinos, si aprender.

las placas que hare seran especificas, con su fuente, reles y demas, esto de "arduino" lo veo mas como aprendizaje, no para algo que vaya adejar instalado donde un clienteo incluso para mi.
solo el nano puede pintar, que se suelda en una placa, como si fuese u chip grande.
pero los demas.....:rolleyes:,
 
Última edición:
El Arduino es un chip pelado que suma un xtal y un mecanismo de comunicacion serie que puede obviarse si necesitas usar todos los pines del chip. Mas alla de eso y el PCB es una forma muy sencilla de probar y programar el Atmega328. El mismo programa lo podes flashear en un chip solo usando el mismo Arduino y unos conectores, asi que ni necesitas programador cuando tengas listo el software definitivo.
Hay mucha gente que habla estupideces de los Arduinos, pero como plataforma de desarrollo y evaluacion es muy potente y hasta podes usarlo directamente con el Atmel Studio si queres herramientas "mas poderosas" para desarrollo de software que el IDE de Arduino.

Lo unico lamentable es la ausencia de un debugger por hardware, para lo que hay que gastar 100 u$s en un modulo de Atmel que se conecta via ICSP al Arduino.
 
La cuestión es que suele salir mas barato comprar un módulo arduino que hacerlo, si además cuentas el tiempo y el calentamiento de cabeza, mucho pero que mucho mas barato.
Procesing es un "masomenosC" que hereda casi todo del C y de hecho el processing del arduino al estar montado sobre un compilador de C admite casi todas las cosas del C aunque oficialmente processing puro no las admitiría, así que prácticamente es C.
Es verdad que si te saltas la capa de arduino tienes mas libertad como se discutió en el hilo de la multitarea, por ejemplo, pero a cambio pierdes la ingente cantidad de librerías que ha hecho la comunidad arduino.
En general me parece que preguntas mucho para algo au qún no has empezado; lo que a ti te parezca asumible a lo mejor a mi no me lo parece y lo que a ti te parezca fácil a lo mejor a mi difícil, y ninguno o los dos tenemos razón según se mire. A lo mejor sabes programar en C holgadamente y la restricción del wiring te molesta, pero a lo mejor te cuesta diseñar circuitos impresos o soldar... cada uno ha de buscar su camino.

A mi me cautivó arduino por su economía, inmediatez y comunidad. Pero claro, también es cierto que hace tiempo que solo hago monerías. Vine del campo contrario absolutamente; placas diseñadas desde cero con software desde cero en ensamblador etc. Por un lado tenía toda la libertad y exprimía la potencia del procesador, por otra el desarrollo y no digamos el mantenimiento del código era una locura.
 
Por otra parte, el codigo que se escribe en el IDE de Arduino pasa directo al compilador avr-gcc, asi que si no usas ninguna biblioteca de Arduino, tu codigoserá C puro y duro y podras configurar registros, escribir en los puertos y hacer lo que quieras sobre el micro sin usar ninguna de las funciones user-friendly de las bibliotecas de la comunidad.
Fijate en la biblioteca de funciones de este tema Un Arduino-Shield didáctico para iniciarse en la programación para que veas como acceder a los puertos sin usar la API de Arduino.
Y en este otro Principio de multitarea. Desterrando a los delays. para que veas como configurar los timers sin usar nada de Arduino
 
Igual, mi consejo para aprender un C super genérico, es saber usar las api standard de C (Ansi C), no sería mala idea instalarse un Codeblocks/Eclipse (o lo que fuera) con un compilador GCC en la PC y programar desde la misma PC.

De esa forma vas aprender a usar funciones muy útiles, como el sprintf, atoi/itoa, manejo de strings, uso de distinto tipos de variables, etc.

Lo único que no vas a poder realizar, son interrupciones (en windows se puede, pero la verdad, no da meterse con eso; en cambio en linux tenés formas específicas para hacerlo que te lo da el mismo SO). Esto si te conviene ya verlo desde el microcontrolador que vas a utilizar.
 
En general me parece que preguntas mucho para algo au qún no has empezado; lo que a ti te parezca asumible a lo mejor a mi no me lo parece y lo que a ti te parezca fácil a lo mejor a mi difícil, y ninguno o los dos tenemos razón .

hola, mira, te cuento y LES RUEGO NO ME MAL INTERPRETEN.

yo desde hace mucho queria aprender C para un micro.
asi de simple, el C de atmel o el de pic.
SE ME DIO LA OPORTUNIDAD de un profesor, de poder hacer un curso y estoy en eso , pero es de arduino.
estoy intentando paralelamente preguntarles a ustedes .
yo NO SE no me es comun las cosas que dicen ustedes.
ya hice programas,


int tiempo = 200 ;
void setup()
{
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);

// demas instrucciones
}
void loop()
{

analogWrite(3, 255);

// demas instrucciones
}

voy de a poco , practicando con el tinkercad y algunas cosas con el arduino1.

yo solo les pido lo que les pido y a mi entender se me van por las recontra ramas y no los entiendo.
a mi me cuest alo que es programacion, de igual modo que tengo ahora en la pantalla principal de mi PC el icono de arduino, con el simbolito de infinito, me costo bajarlo, me dieron las instrucciones paso por paso.
y en la pagina de arduino voy viendo las instrucciones de a poco .
tambien trabajo , no es que tengo 18 años y estoy estudiando .
y si me dicen todo lo que me dicen de veras no les entiendo .

les pedi claro:
un lenguaje C claro, si es posible gratis, el lenguaje que lo haya hecho el fabricnate, si es para pic, sera el C de microchip .
si es de atmel , sera el de atmel.
imagino que si el C es universal, pero cada " funcion " toca cosas de cada chip pàrticular.
diganem, aconsejenme que C .
para empezar, gratis.

diganme los pasos , que entre a tal pagina, imagino sera la de microchip.
en tal lugar hago click.
donde dice bajar tal programa.
tal version si o tal otro ano .
tene cuidado con no se que.

y yo poder terminar en la pagina correcta, teniendo en mi computadora ya el programa, y los pasos.
imagino que tendre que programar con al estructura de :

void setup

void loop

sobre que pagina lo hago ??
y bueno, cuando me compre el chip, supongamos que me meto con los de ATMEL asi sigo la linea con arduino y paralelamente el chip directo.
bueno, les pedire me enseñen como hago , paso por paso para poder progrmarlo.
yo vere ed comprarme el chip y de hacerme una placa, NO el arduino, sino una placa que le pueda poner el ck que quiera yo, .

un saludo
por ejemplo:
Igual, mi consejo para aprender un C super genérico, es saber usar las api standard de C (Ansi C), no sería mala idea instalarse un Codeblocks/Eclipse (o lo que fuera) con un compilador GCC en la PC y programar desde la misma PC.

De esa forma vas aprender a usar funciones muy útiles, como el sprintf, atoi/itoa, manejo de strings, uso de distinto tipos de variables, etc.

Lo único que no vas a poder realizar, son interrupciones (en windows se puede, pero la verdad, no da meterse con eso; en cambio en linux tenés formas específicas para hacerlo que te lo da el mismo SO). Esto si te conviene ya verlo desde el microcontrolador que vas a utilizar.
El Arduino es un chip pelado que suma un xtal y un mecanismo de comunicacion serie que puede obviarse si necesitas usar todos los pines del chip. Mas alla de eso y el PCB es una forma muy sencilla de probar y programar el Atmega328. El mismo programa lo podes flashear en un chip solo usando el mismo Arduino y unos conectores, asi que ni necesitas programador cuando tengas listo el software definitivo.
Hay mucha gente que habla estupideces de los Arduinos, pero como plataforma de desarrollo y evaluacion es muy potente y hasta podes usarlo directamente con el Atmel Studio si queres herramientas "mas poderosas" para desarrollo de software que el IDE de Arduino.

Lo unico lamentable es la ausencia de un debugger por hardware, para lo que hay que gastar 100 u$s en un modulo de Atmel que se conecta via ICSP al Arduino.

las cosas que ustedes hablan y marco en rojo no entiendo un pomo.
por eso para mi , se me van por las ramas, con todo respeto , por que se que me quieren ayudar.

y si sigo copiando y marcando sus coemntarios, asi es con todo .
les repito:

me pueden dar una mano ?? de a poco , no ya todo .
ahora nenesito me aconsejen :
quiero ver por mi cuenta de ir aprendiendo a programar en C un chip, una linea o una marca sera pic ?? o sera atmel??
como elegir algo que no conozco?? USTEDES SI !!!!!!!!!
yo estoy viendo arduino, eso no se si tira hacia atmel, imagino que si .
pic o arduino, cual se consigue siempre , facil, tiene buenas prestaciones, su "programador oficial " es gratuito, piola y potente ...
?¿:unsure:
cual ??

y ese, el que sea, me pueden dar una mano para bajarlo??
instrucciones paso a paso.
a mi ... les dire la verdad, quizas a ustedes les parezca una estupidez, pero me da miedo andar bajando cosas a la pc que no conozco, no soy de bajar programas, asi es que hay cosas de su foro que no puedo ver, por ejemplo esos manuales que ponen de national y de texas y otros en no recuerdo que lado, algo me falta en mi pc para pdoer verlos.
no importa eso.
yo entre que esta todo en ingles y no me siento comodo , pues necsito solo los pasos.

TODO DE A POCO VA SALIENDO.

hace unos meses, no entendia un pomo de nada.
y hoy entro mas que nada a :
aprendiendo arduino wordpress
o a la pagina directa de arduino
y con paciencia voy entendiendo de a poco .

bueno, lo mismo necesito pero no la pagina de arduino, sino de directo ATMEL o PIC.
que me digan los pasos, imaginen que tienen adelante a un alumno nuevo y le quieren dar los pasos para poder bajar el programa y ponerlo frente a la pagina adecuada.
eso.
no quiero que me den un curso para programar.
yo ire leyendo .
y a lo mucho , les pregunto dudas.
 
Última edición:
les pedi claro:
un lenguaje C claro, si es posible gratis, el lenguaje que lo haya hecho el fabricnate, si es para pic, sera el C de microchip .
si es de atmel , sera el de atmel.
imagino que si el C es universal, pero cada " funcion " toca cosas de cada chip pàrticular.
diganem, aconsejenme que C .
para empezar, gratis.
No entendiste nada!!
Vos queres aprender C y el C es lo mismo para cualquier chip, no hay uno mas claro o facil que otro. Es uno solo, igual para la PC que para un mainfrane y que para un microcontrolador.
Vos decis que queres usar los recursos propios de cada micro, y para eso tenes que saber como configurarlos a traves de los registros, igual que en assembler pero mas facil de escribir, o sea no podes escapar de conocer el harware si vas a programar un micro.
Las funciones de Arduino ya estan simplificadas para que cualquier salame configure un bit de un puerto y luego pueda leer o escribir o convertir A/D en el, tal como el ejemplo que mostras. Pero si queres gestionar y optimizar vos todo eso PODES HACERLO CON EL MISMO LENGUAJE Y EL DATASHEET DEL Atmega328...o como te crees que hice yo para escribir el codigo de los timers y el de la plaquetita??

"Flashear" el chip es cargarle el programa en la memoria interna, decile grabar o como quieras.

El IDE es el entorno de desarrollo integrado, que permite editar, compilar y subir el programa el micro. Muchos se quejan del IDE de Arduino pero es muy facil de manejar y permite hacer muchisimas cosas si sabes como hacerlas. Los otros estan hechos por el fabricante como vos queres, pero son mas complicados de usar y algunos son de garpe. Conclusion: usa el de Arduino hasta que aprendas y luego, si queres, cambias y si no, seguis con el mismo...y ademas es gratis y usa el mismo compilador que usa el fabricante y que ademas es software libre.

Un debugger es una herramienta mitad hardware mitad software que te permite controlar y monitorear la ejecucion de un programa para simplificar el encontrar y solucionar errores.
quiero ver por mi cuenta de ir aprendiendo a programar en C un chip, una linea o una marca sera pic ?? o sera atmel??
como elegir algo que no conozco??
Eso no te lo puede decir nadie, por que hay enamorados de cada marca y terminan mandando fruta.
Para elegirlo hay que conocer los requerimientos de la aplicacion donde se va a usar, la tecnologia de PCB que podes afrontar, la cantidad de plata que podes invertir en cada unidad y en el proceso de desarrollo, y una parva de cosas tecnologicas y economicas que solo vos vas a conocer.
 
Última edición:
@peperc :
Pues para no irte por las ramas menudo ladrillo de argumentaciones que has soltado
Es un fallo común tu quieres LA_RESPUESTA respuesta y LA_RESPUESTA no existe. Lo que a ti te parece fácil puede que a mi no y a Dr.Zoiberg otra cosa diferente...
Si todos pensaramos lo mismo solo se fabricaría un coche con un nivel de acabado y de un color porque sería EL_COCHE correcto que comprar, como eso no existe por eso se fabrican miles o millones de modelos. Lo mismo con los lenguajes de progrmación y con los microcontroladores.

Me soprende que pidas LA_RESPUESTA y ya afirmes cual va a ser TU_TRABAJO; que vas a diseñar el pcb y lo vas a hacer todo... cuando resuta que no conoces nada de nada, o muy poco de muy poco. ¿Como sabes que eso va a ser así?

No existe la respuesta, existe tu respuesta que irá cambiando a lo largo del tiempo conforme aprendas cosas y conozcas productos. Y a medida que crezcas* y el mercado evolucione.

*Crecer a nivel técnico, no físico.
 
Todo esto me recordó a la vez que tenia que hacer un trabajo de investigación y decidí buscar en Internet, el problema fue que no tenia una PC en casa motivo por el cual no sabia como usarla, mucho menos sabia usar Internet.

Le pedí a un amigo que me ayudara con ese trabajo y fuimos juntos a un Internet publico (ese tiempo era realmente un lujo tener PC e Internet en casa), el pidió una maquina y el tiempo de uso... así me mostró como abrir el navegador e ir buscando todo lo relacionado ... el resto es historia.

Hay veces que se tiene un mar de opciones y puede ser confuso y para empezar a caminar se necesita de un faro.

peperc, ya que estas abierto a las opciones de PIC y AVR solo queda decidir con cual de ellos empezaras.
Asumiendo que el lenguaje C es igual para todos: PC, PIC, AVR, etc.

Lo primero que harías es comprar un programador de PICs o AVRs. eso tu elijes... puede ser por precio, calidad de acabado o el mas bonito, tu veras.

*Para PIC una sugerencia es PICKIT 2 en cualquiera de sus versiones (Original o clon, da lo mismo).
*Para AVR una sugerencia es el grabador USBasp

Si te compraste un grabador para PIC te recomiendo que te compres tambien un pic16f877A y un criatal de 20[MHz].

Si te compraste un grabador para AVR, tambien compra un Atmega 32 y un cristal de 16[MHz].

obviamente se asuma que tienes una fuente de alimentación de 5[V] y otra de 12[V] (la de 12 por si acaso, uno nunca sabe cundo la necesita).

Después de hacer lo anterior recién se elegirá el compilador C a utilizar.
 
Hola ., bueno voy atratar de hacerte mi aporte-, por estar de cierta manera ., en tu lugar hace un tiempo atras
Te doy mi idea ., ya que tenes el arduino lo podes usar como GRABADOR ., y que algo te indico mi maestro (eternamnte agradecidopor enseñarme )
cosmefulanito04 te lo expica por aca Preguntas de Arduino y C para tal micro
Ya que se usa o conrvierte un arduino en un prrogramador ISP como (parecido) al grabador USBasp ., que se puede grabar sobre una protoboard y unos cables desde el arduino
Ahora si ya tenes arduino y queres aprender C te cconvendria bajar el Atmel Studio 7 desde aca Atmel Studio 7 | Microchip Technology
No te paso el link de descarga .,porque el programa es gratuito (como siempre lo fue)., solo te pde inscribirte con un correo electronico solamente

Y en un mismo compilador te da la posibilidad de programar en ASM .,C y C++ (arduino)
Siii .., en un mismo compildor podes elegir ., en que lenguaje programar., ahora como bien dijiste que queres aprender en C ., bajate o leee agunos de los muchos PDF en linea que hay por aca
https://www.google.com/search?q=Introduccion-al-lenguaje-c.pdf&ie=utf-8&oe=utf-8&client=firefox-b
Todos los PDF ., te permiten extraer el texto de los programa ., o ejemplos para practicar con el micro

Espero que sirva para clarificarte un poco el panorama
 
saint y locodelaafonia:

MIL GRACIAS, MIL Y MIL GRACIAS , voy a dedicarle tiempo este fin de semana a ver y elegir, les agraddezco muchisimo por comprender lo que pedia y ayudarme.
ahora durante la semana tengo que ponerme al dia con el cursillo de arduino , quiero ver si puedo hacer algo con las instrucciones nuevas que estoy viendo .

y luego dedicare a ver esta INMENSA AYUDA QUE ME HAN DADO, mil gracias.

luego volvere conmas dudas claro esta :giggle:
 
hola, me he pusto a leer en paginas de la web tema de pwm y algo me parece que no entiendo .

queria saber la frecuencia de el pwm para atenuar leds, y que no se note parpadeo....
pero enceuntro comentarios muy variados:

80 a 100 hz :
Cómo atenuar un LED Calidad de luz | DigiKey

segun dicen el ARDUINO usa como fijo 500 hz

y aca veo
que luego de la mitad e la nota habla de varios Khz
¿Qué es la regulación mediante PWM?

para sus experiencias ¿ que frecuencia minima es la recomendable para no notar parpadeos ??
 
Vos podes fijar la frecuencia simplemente por ejemplo en un loop donde le das valores a Ton y Tdwn recordando que Ton+Tdwn=TT y que 1/TT= frecuencia
Entonces partes al revés tomas la frecuencia sacas su inversa y tienes TT a partir de alli fijas cuanto quieres que este prendida si le das la mitad de TT a c/u lucirá con poco brillo, si quieres aumentar le quitas tiempo a Tdwn y se lo sumas a Ton
Es solo para hacer una prueba rápida y ver como sucede, incluso se puede hacer con dos pulsadores que con uno decrezca y con el otro aumente
Hay otras formas, pero estas es una de las más simples para entender el proceso.

Tu dices según dicen, y porque mejor no te cercioras tu mismo, por empezar que modelo de Arduino estas utiizando?
Según ese modelo bajate el manual del mismo asi sabes hasta donde llega tu modelo,

El nano no es lo mismo que el Mega256 se basan en Arduino pero tienene prestaciones diferentes segun la potencia del micro de c/u, hay programas que en el nano no entrarian, pero si en el Mega
 
Atrás
Arriba