Visual Studio kompilacja pliku cpp
Ostatnio zmodyfikowano 2022-05-08 00:39
darex120 Temat założony przez niniejszego użytkownika |
Visual Studio kompilacja pliku cpp » 2022-05-07 07:58:27 Witam Serdecznie Mam problem. Potrzebuje skompilować plik CPP ,ale gdy otwieram go za pomocą Visual Studio 2022 , 2013 , lub AVR Studio nie podświetla mi się KOMPILUJ. Druga sprawa: gdzie i jak wgrać biblioteki io.h ,delay.h oraz aux.h ,pwm.h. Poniżej podaje kod i prosiłbym o pomoc, gdyż zaczynam z programowaniem i czytam różne kursy, lecz nic to nie wniosło . Kod. #include <avr/io.h> #include <avr/interrupt.h> #include <avr/wdt.h> #include <string.h> #include <stdlib.h> #include "timeout.h" #include "io/DigitalIn.h" #include "io/DigitalOut.h" #include "sensors/ds18b20.h" #include "lcd/hd44780.h" #include "misc/aux.h" #include "misc/pwm.h"
HD44780 lcd; DS18B20 ds18b20; PWM pwm; DigitalOut relay, speaker, fan; DigitalIn but1, but2, but3, but4; float tempval = 0; float vref = 5.0;
#define MODE_MEASURE_CURRENT 0 #define MODE_MEASURE_VOLTAGE 1 volatile bool adc_mode = MODE_MEASURE_CURRENT; volatile float current = 0, voltage = 0;
#define VOLTAGE_LIMIT 26 #define CURRENT_LIMIT 5 #define TEMPERATURE_STARTFAN 50 #define TEMPERATURE_SHUTDOWN 70 volatile float targetVol = 5.0, targetCur = 1;
volatile bool alarm = false; uint16_t cycles = 0;
ISR( ADC_vect ) { uint16_t analogVal = ADCL |( ADCH << 8 ); if( adc_mode == MODE_MEASURE_CURRENT ) { current =( analogVal / 1024.0 * vref ) / 0.186666; adc_mode = MODE_MEASURE_VOLTAGE; ADMUX = PC4; } else if( adc_mode == MODE_MEASURE_VOLTAGE ) { float R14 = 9.87, R13 = 98.2; voltage = analogVal / 1024.0 *( R13 + R14 ) / R14 * vref; adc_mode = MODE_MEASURE_CURRENT; ADMUX = PC5; } ADCSRA =( 1 << ADEN ) |( 1 << ADIE ) |( 1 << ADIF ) |( 1 << ADSC ) | ( 1 << ADPS2 ) |( 1 << ADPS1 ) |( 1 << ADPS0 ); if( current > targetCur + targetCur / 2 ) { pwm.setDuty( pwm.getDuty() / 2 ); alarm = true; } else if( current > targetCur ) { pwm.setDuty( pwm.getDuty() - 1 ); } else if( tempval > TEMPERATURE_SHUTDOWN ) { pwm.setDuty( pwm.getDuty() - 1 ); alarm = true; } else if( voltage > targetVol ) pwm.setDuty( pwm.getDuty() - 1 ); else if( voltage < targetVol ) pwm.setDuty( pwm.getDuty() + 1 ); }
int main( void ) { relay.init( & PORTD, PD5 ); fan.init( & PORTD, PD6 ); speaker.init( & PORTB, PB0 ); pwm.initPWM(); but1.init( & PORTC, PC0 ); but2.init( & PORTC, PC1 ); but3.init( & PORTC, PC2 ); but4.init( & PORTC, PC3 ); ds18b20.init( & PORTD, PD7 ); lcd.init( & PORTD, PD4, & PORTB, PB3, & PORTD, PD3, & PORTB, PB4, & PORTD, PD2, & PORTB, PB5 ); adc_mode = MODE_MEASURE_CURRENT; ADMUX = PC5; ADCSRA =( 1 << ADEN ) |( 1 << ADIE ) |( 1 << ADIF ) |( 1 << ADSC ) | ( 1 << ADPS2 ) |( 1 << ADPS1 ) |( 1 << ADPS0 ); sei(); lcd.sendstring( "********************\n" \ "*Digital Pwr Supply*\n" \ "*pocketmagic.net'15*\n" \ "********************\n" ); while( 1 ) { relay.set( targetVol > 12 ); fan.set( tempval > TEMPERATURE_STARTFAN ); if( cycles == 0 ) { float temp = 0; cli(); if( ds18b20.readTemperature( & temp ) == THERM_OK ) tempval = temp; sei(); lcd.cursorhome(); lcd.sendstringformat( " +SET: %5.2fV %5.2fA\n" \ "%5.1fC %5.2fV %5.2fA\n" \ "%s PWM:%4d\n" "2015 pocketmagic.net", targetVol, targetCur, tempval, voltage, current, fan.get() ? " +FAN" : " " , pwm.getDuty() ); } cycles++; if( cycles > 10000 ) cycles = 0; if( alarm ) { speaker.set( 1 ); _delay_ms( 30 ); speaker.set( 0 ); alarm = false; } if( but1.get() == 0 ) { if( targetVol < VOLTAGE_LIMIT ) targetVol += 0.1; cycles = 0; } if( but2.get() == 0 ) { if( targetVol > 0.1 ) targetVol -= 0.1; cycles = 0; } if( but3.get() == 0 ) { if( targetCur < CURRENT_LIMIT ) targetCur += 0.1; cycles = 0; } if( but4.get() == 0 ) { if( targetCur > 0.1 ) targetCur -= 0.1; cycles = 0; } } }
|
|
pekfos |
» 2022-05-08 00:39:29 Nie możesz po prostu "skompilować pliku" w Visualu. Musisz utworzyć projekt i go skonfigurować pod konkretny procesor i programator jaki masz. AVR Studio jest przestarzałe, użyj może Atmel Studio. |
|
« 1 » |