Operácie

AVR StampPlotExample.c: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Bez shrnutí editace
Balogh (diskusia | príspevky)
Bez shrnutí editace
 
Riadok 1: Riadok 1:
<source lang="c">
<source lang="c">
#define F_CPU 18432000UL     
#include <stdio.h>
#include <stdio.h>
#include <avr\io.h>
#include <stdlib.h>
#include <util\delay.h>
#include <math.h>
#include "serial.h"   
#include <avr/io.h>
#include <util/delay.h>




int main(void) {
#define BAUDRATE      9600
  unsigned char i,j;
#define BAUD_PRESCALE  (((F_CPU / (BAUDRATE * 16UL))) - 1)


   DDRD = 0b00000010;
void inituart(void)  /* Initialize UART */
  PORTD = 0b00000011;
{                                                     
  inituart();
   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
}


static FILE mystdout = FDEV_SETUP_STREAM(sendchar, NULL,_FDEV_SETUP_WRITE);
void sendchar (char c)
stdout = &mystdout;
{
  while ( !( UCSR0A & (1<<UDRE0)) ) ;                 // Wait for empty transmit buffer
  UDR0 = c;                                           // Send the byte
}


/* Inicializacia grafickeho prgoramu */


_delay_ms(500);                   // Kratka 500 ms prestavka aby sa
FILE mystdout = FDEV_SETUP_STREAM(sendchar, NULL, _FDEV_SETUP_WRITE);
                                  // vyprazdnil buffer v PC
                              // 'sendchar' je nova funkcia pre jeden znak
printf("!RSET\r");                // Reset vymaze okno
printf("!TITL Lahky Priklad\r");  // Nazov okna
printf("!SPAN -5, 45\r");        // Rozpatie pre analogove veliciny
printf("!PNTS 125\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


/* Cyklus v ktorom si kreslime dve analogove veliciny: i a 2i po 50 ms */
int main(void)
{
unsigned char c;
float x=0.0;
inituart();                   // Inicializacia seriovej linky
stdout = &mystdout;              // Odteraz funguje printf();


for (j=1;j<4;j++)
printf("!RSET\r");                // Reset vymaze okno
  for (i=1;i<30;i++)
printf("!TITL Lahky Priklad\r");  // Nazov okna
   {
printf("!SPAN -5, 45\r");        // Rozpatie pre analogove veliciny
    printf("%d,%d\r",i,2*i);
printf("!PNTS 1250\r");          // Pocet bodov ktore kreslime
     _delay_ms(50);  
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;
printf("Koniec cyklu - hotovo!\n");
 
} /* End Of Main */
} /* End Of Main */
</source>
</source>
Riadok 51: Riadok 63:




[[CADRS Cvičenie 11|Návrat na cvičenie 11...]]


[[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 */