Operácie

AVR StampPlotExample.c: Rozdiel medzi revíziami

Z SensorWiki

(Nová stránka: <source lang="c"> Inicializacia grafickeho prgoramu: // Kratka 500 ms prestavka aby sa // vyprazdnil buffer ...)
 
 
(6 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:
 
<source lang="c">
 
<source lang="c">
/* Inicializacia grafickeho prgoramu */
+
#include <stdio.h>
 +
#include <stdlib.h>
 +
#include <math.h>
 +
#include <avr/io.h>
 +
#include <util/delay.h>
  
                                  // Kratka 500 ms prestavka aby sa
 
                                  // vyprazdnil buffer v PC
 
printf("!RSET\n");                // Reset vymaze okno
 
printf("!TITL Lahky Priklad\n");  // Nazov okna
 
printf("!SPAN -5, 45\n");        // Rozpatie pre analogove veliciny
 
printf("!PNTS 125\n");            // Pocet bodov ktore kreslime
 
printf("!TMAX 30\n");            // Casova os 30 sekund
 
printf("!MAXS\n");                // Na konci stoj
 
printf("!TSMP ON\n");            // Casove znacky ANO
 
printf("!CLRM\n");                // Vymaz okienko na spravy
 
printf("!PLOT ON\n");            // Kreslenie ANO
 
printf("!RSET\n");                // Restart s novymi parametrami
 
                                  // Kratka 200 ms prestavka aby sa
 
                                  // vyprazdnil buffer v PC
 
  
/* Cyklus v ktorom si kreslime dve analogove veliciny a jednu cislicovu */
+
#define BAUDRATE      9600
 +
#define BAUD_PRESCALE  (((F_CPU / (BAUDRATE * 16UL))) - 1)
  
for (j=1;j<4;j++)
+
void inituart(void)  /* Initialize UART */
  for (i=1;i<30;i++)
+
{                                                     
   {
+
  UBRR0 = (unsigned char)BAUD_PRESCALE;                // Set baud rate
    printf("%d,%d\n",i,2*i);
+
  UCSR0B = (1 << RXEN0) | (1 << TXEN0);               // Enable receiver and transmitter
 +
  UCSR0C = (1<<USBS0)|(3<<UCSZ00);                    // Set format: 8data, 2stop bit
 +
}
 +
 
 +
void sendchar (char c)
 +
{
 +
  while ( !( UCSR0A & (1<<UDRE0)) ) ;                // Wait for empty transmit buffer
 +
  UDR0 = c;                                          // Send the byte
 +
}
 +
 
 +
 
 +
FILE mystdout = FDEV_SETUP_STREAM(sendchar, NULL, _FDEV_SETUP_WRITE);
 +
                              // 'sendchar' je nova funkcia pre jeden znak
 +
 
 +
int main(void)
 +
{
 +
  unsigned char c;
 +
float x=0.0;
 +
inituart();                   // Inicializacia seriovej linky
 +
stdout = &mystdout;              // Odteraz funguje printf();
 +
 
 +
printf("!RSET\r");                // Reset vymaze okno
 +
printf("!TITL Lahky Priklad\r");  // Nazov okna
 +
printf("!SPAN -5, 45\r");        // Rozpatie pre analogove veliciny
 +
printf("!PNTS 1250\r");          // Pocet bodov ktore kreslime
 +
printf("!TMAX 30\r");             // Casova os 30 sekund
 +
printf("!MAXS\r");                // Na konci stoj
 +
printf("!TSMP ON\r");            // Casove znacky ANO
 +
printf("!CLRM\r");                // Vymaz okienko na spravy
 +
printf("!PLOT ON\r");            // Kreslenie ANO
 +
printf("!RSET\r");                // Restart s novymi parametrami
 +
_delay_ms(200);                  // Kratka 200 ms prestavka aby sa
 +
                                  // vyprazdnil buffer v PC
 +
for (;;)
 +
{
 +
   c = (char)rand();                       
 +
  printf("%d,%d\r",(int)(100*(sin(x)+1)),c);
 +
  if (c>245)
 +
    printf("Alarm! Temperature HIGH!!!\r");
 +
  if (c<5)
 +
    printf("Alarm! Temperature LOW!!!\r");
 +
  _delay_ms(300);
 +
  x=x+0.1;
 
   }
 
   }
 +
return 0;
 +
} /* End Of Main */
 +
</source>
 +
 +
  
printf("Koniec cyklu - hotovo!\n");
 
  
</source>
+
[[Category: AVR]][[Category: CAD_RS]]

Aktuálna revízia z 20:23, 11. november 2011

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <avr/io.h>
#include <util/delay.h>


#define BAUDRATE       9600
#define BAUD_PRESCALE  (((F_CPU / (BAUDRATE * 16UL))) - 1)

void inituart(void)   /* Initialize UART */
{                                                       
   UBRR0 = (unsigned char)BAUD_PRESCALE;                // Set baud rate
   UCSR0B = (1 << RXEN0) | (1 << TXEN0);                // Enable receiver and transmitter
   UCSR0C = (1<<USBS0)|(3<<UCSZ00);                     // Set format: 8data, 2stop bit
}

void sendchar (char c)
{
   while ( !( UCSR0A & (1<<UDRE0)) ) ;                 // Wait for empty transmit buffer
   UDR0 = c;                                           // Send the byte
}


FILE mystdout = FDEV_SETUP_STREAM(sendchar, NULL, _FDEV_SETUP_WRITE);
                              // 'sendchar' je nova funkcia pre jeden znak

int main(void)
{
 unsigned char c;
 float x=0.0;
 inituart();	                   // Inicializacia seriovej linky
 stdout = &mystdout;               // Odteraz funguje printf();

 printf("!RSET\r");                // Reset vymaze okno
 printf("!TITL Lahky Priklad\r");  // Nazov okna
 printf("!SPAN -5, 45\r");         // Rozpatie pre analogove veliciny
 printf("!PNTS 1250\r");           // Pocet bodov ktore kreslime
 printf("!TMAX 30\r");             // Casova os 30 sekund
 printf("!MAXS\r");                // Na konci stoj
 printf("!TSMP ON\r");             // Casove znacky ANO
 printf("!CLRM\r");                // Vymaz okienko na spravy
 printf("!PLOT ON\r");             // Kreslenie ANO
 printf("!RSET\r");                // Restart s novymi parametrami
 _delay_ms(200);                   // Kratka 200 ms prestavka aby sa
                                   // vyprazdnil buffer v PC
 for (;;)
 {
  c = (char)rand();                        
  printf("%d,%d\r",(int)(100*(sin(x)+1)),c); 
  if (c>245)
    printf("Alarm! Temperature HIGH!!!\r");
  if (c<5)
    printf("Alarm! Temperature LOW!!!\r");
  _delay_ms(300);
  x=x+0.1;
  }
 return 0;
} /* End Of Main */