AVR StampPlotExample.c: Rozdiel medzi revíziami
Zo stránky SensorWiki
| Bez shrnutí editace | Bez shrnutí editace | ||
| Riadok 1: | Riadok 1: | ||
| <source lang="c"> | <source lang="c"> | ||
| #include <stdio.h> | #include <stdio.h> | ||
| #include < | #include <stdlib.h> | ||
| #include < | #include <math.h> | ||
| #include  | #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 | |||
|   for ( |  printf("!TITL Lahky Priklad\r");  // Nazov okna | ||
|  printf("!SPAN -5, 45\r");         // Rozpatie pre analogove veliciny | |||
|  printf("!PNTS 1250\r");           // Pocet bodov ktore kreslime | |||
|      _delay_ms( |  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 */ | } /* End Of Main */ | ||
| </source> | </source> | ||
| Riadok 51: | Riadok 63: | ||
| [[Category: AVR]][[Category: CAD_RS]] | [[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 */