Aedolon
Just face it: sometimes nobody envies you. There has to be a bottom and that bottom is probaly you. // http://www.amazon.com/o/registry/VWZ93N4Y6XQT
Deze vraag is misschien een beetje teveel maar ik ga ze toch stellen:
Ik weet niks van AVR en C !! en ik wou snel ff een PWM progje hebben (eentje gevonden op avrfreaks)
maar das in C en ik wil met 2 knopje de snelheid hoger (dutycycle groter) of lager ipv met de PC wat in dit voorbeeldje staat
/*********************************************
Date : 3/27/2001
Author : Jorge Jaar
Company : Tohoku University Sendai, Japan
Comments: This progm is designed to control a DC motor by means of PWM
with feedback from a led/photodiode and serial interface to a computer.
Chip type : AT90S2313
Clock frequency : 4.000000 MHz
Memory model : Tiny
Internal SRAM size : 128
External SRAM size : 0
Data Stack size : 32
*********************************************/
#include <90s2313.h>
#include <delay.h>
#include <stdio.h>
#include <lcd.h>
#include <stdlib.h>
#asm
.equ __lcd_port=0x18
#endasm
void main(void)
{
//Local Variables
char buf[15],
srpmi[3],
srpms[3];
int rpms=0,
rpmsn=0,
x,
rpmi=750;
// Input/Output Ports initialization
// Port B
DDRB=0x08; //00001000
PORTB=0x08; //00001000
// Port D
DDRD=0x00; //00000000
PORTD=0x08; //00001000
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3.906 kHz
// Mode: Output Compare
// OC0 output: Disconnected
TCCR0=0x05; //00000101
TCNT0=0x00; //00000000
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 15.625 kHz
// Mode: 8 bit Pulse Width Modulation
// OC1 output: non inv
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x81; //10000001
TCCR1B=0x04; //00000100
TCNT1H=0x00; //00000000
TCNT1L=0x00; //00000000
OCR1H=0x00; //00000000
OCR1L=0x00; //00000000
// UART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// UART Receiver: On
// UART Transmitter: On
// UART Baud rate: 9600
UCR=0x18; //00011000
UBRR=0x19; //00011001
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80; //10000000
//intro: LCD module initialization and motor startup
lcd_init(16);
lcd_putsf(" motor driver");
delay_ms(2000);
OCR1L=050;
while (1)
{
//get the intended rpms if key pressed POLL UART
if(USR.7==1)
{
gets(srpmi,3);
rpmi=atol(srpmi);
lcd_gotoxy(0,1);
lcd_puts(srpmi);
};
//get frequency (rpms)
rpmsn=0;
do{
if(PIND.3==0)
{
do
{}while(PIND.3==0);
TCNT0=0;
do
{}while(PIND.3==1);
x=TCNT0;
rpmsn=(14000/x);
};
}while(rpmsn==0);
//update lcd if data changed
if ((int)(rpms)!=(int)(rpmsn))
{
sprintf(buf, "speed=%urpm",rpmsn);
lcd_gotoxy(0,0);
lcd_puts(buf);
rpms=rpmsn;
//putchar("r");
itoa(rpms, srpms);
putchar(srpms);
//make srpmi an int
};
OCR1L=OCR1L+((rpmi-rpms)/30);
if (OCR1L>250)
OCR1L=250;
if (OCR1L<10)
OCR1L=10;
delay_ms(100);
};
}
zou iemand zo lief willen zijn om dit beetje aan te passen (lijkt me niet zoveel werk voor een ervaren iemand denk ik ?
Ik zou zeer dankbaar zijn !
Aedolon
is voor een klein DC Motortje
Aedolon
Just face it: sometimes nobody envies you. There has to be a bottom and that bottom is probaly you. // http://www.amazon.com/o/registry/VWZ93N4Y6XQT
In een van de eerste regels staan "includes" naar '90s2313.h' en 'lcd.h' die je er absoluut bij moet hebben om uberhaupt iets te kunnen wijzigen. De andere zijn standaards die al bij de compiler zitten, hoewel ik twijfel aan 'delay.h'.
Veel verder kan ik je er niet mee helpen helaas.
Aedolon
Just face it: sometimes nobody envies you. There has to be a bottom and that bottom is probaly you. // http://www.amazon.com/o/registry/VWZ93N4Y6XQT
Aedolon
Just face it: sometimes nobody envies you. There has to be a bottom and that bottom is probaly you. // http://www.amazon.com/o/registry/VWZ93N4Y6XQT
Ik zal wel die C compiler vinden hoop ik ?
is er echt niemand lief genoeg tsss ? 
mag ik het dadelijk nog in assembler gaan tikken en zoveel tijd heb ik niet
Aedolon
Just face it: sometimes nobody envies you. There has to be a bottom and that bottom is probaly you. // http://www.amazon.com/o/registry/VWZ93N4Y6XQT
Koen Van Vlaenderen
De vergeetachtigheid bewijst grotere diensten aan het hart dan het geheugen aan het verstand.
Prog in assembler. gewoon in de aanstuur loop even de knoppen pollen en de nodige code daaruit starten.
Probeer een structuur als:
loop [uitgang hoog,delay volgens teller, poll knoppen,uitgang laag,delay volgens teller2]
als een knop ingedrukt is de tellervariabal aanpassen dat het tellen minder lang/langer duurt en daar is je regelbare pwm 
Beter zou zijn de pwm outputs van de AVR te gebruiken via de 8/16bit counter in pwm mode maar aangezien je er nog niets van af weet zou ik het eerst zo proberen.
Aedolon
Just face it: sometimes nobody envies you. There has to be a bottom and that bottom is probaly you. // http://www.amazon.com/o/registry/VWZ93N4Y6XQT
hmmm mja maar is er echt niemand die AVR C kan op CO ?
die ene link naar een tut wilt geven of zo lief zo zijn om dat aan te passen ?
wat een ontgoocheling
Marcel
AVR C tutorial http://expand.xs4all.nl/avr
AVR C ???
Het is gewoon C hoor. Je hoeft alleen maar te weten waar de variabelen en extra functies voor staan. De variabelen in hoofdletters zijn zo te zien predefined voor de AVR. Een reference van de gebruikte libraries is voldoende om daar achter te komen. Overigens is ook uit het commentaar al veel op te maken. Ook de functies beginnende met lcd_ spreken al voor zich.
Marcel
Aedolon
Just face it: sometimes nobody envies you. There has to be a bottom and that bottom is probaly you. // http://www.amazon.com/o/registry/VWZ93N4Y6XQT
yes dat is het probleem ik moet de libs vinden zodat ik de functies weet
het is veel makkelijker trouwens om te lezen wat de functies doen dan de hele libary te ontleden met gebrekkige programma commentaar
Ik heb C nog steeds niet kunnen begrijpen
Wat zit er nou in zo include file?
En wat is de ligica in het heel veel ( ( ) ) die je tig x hebt en zowat on overzichtelijk word 
Hmm misschien komt het omdat ik visual basic ben gewend 
Marcel
AVR C tutorial http://expand.xs4all.nl/avr
Op 10 september 2003 21:04:15 schreef Aedolon:
yes dat is het probleem ik moet de libs vinden zodat ik de functies weet
het is veel makkelijker trouwens om te lezen wat de functies doen dan de hele libary te ontleden met gebrekkige programma commentaar
Dan doe je toch even wat research. Met wat zoeken op google ben ik d'r inmiddels als achter dat bijvoorbeeld de CodeVision AVR compiler met deze include files geleverd wordt. (de lite versie is freeware voor niet commercieel gebruik en kan je dus zo downloaden)
Aan de naam van de include file 90s2313.h kan je al afleiden dat de code dus geschreven is voor een AT90S2313. Kijk je in de bijbehorende datasheet van die AVR dan worden de namen van de variabelen ineens duidelijk, want het zijn gewoon de namen van de register exact zoals deze in de datasheet genoemd worden.
Zelfs zonder enige kennis van AVR-controllers kan ik daar nog achter komen.
Marcel
Aedolon
Just face it: sometimes nobody envies you. There has to be a bottom and that bottom is probaly you. // http://www.amazon.com/o/registry/VWZ93N4Y6XQT
Koen Van Vlaenderen
De vergeetachtigheid bewijst grotere diensten aan het hart dan het geheugen aan het verstand.
AVR-GNUcc ? kijk eens op www.avrfreaks.net daar gebruiken ze veel C
/edit hier : http://www.avrfreaks.net/AVRGCC/index.php
[Bericht gewijzigd door Koen Van Vlaenderen op ]
