Forum: Mikrocontroller und Digitale Elektronik Programmierung Attiny für L293


von Olli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich bin Einsteiger in die avr-GCC Programmierung und habe im Rahmen 
eines kleinen Projekts einen ATtiny 2313 an den H-Brücken IC L293 D 
angeschlossen. Ich möchte damit einen DC Motor betreiben und den 
Schaltplan dazu seht ihr oben.

Ich habe nun folgenden Code bisher zur Programmierung genutzt, der aber 
natürlich nicht funktioniert :):
1
void init_timer0(void)
2
{
3
   TCCR0A = (1<<COM0A1)|(1<<COM0B1)|(1<<WGM00);
4
5
   TCCR0B = (1<<CS00);
6
7
   TIMSK &= ~0x3c;
8
}
9
10
11
12
void setPWM(uint8_t speed) 
13
{OCR1BL = speed;}
14
15
16
17
void Mzur(void)  //Uhrzeigersinn
18
{PORTB |= (1<<PB1); PORTB &= ~(1<<PB2);}
19
20
void Mvor(void)  //mathematischer Drehsinn
21
{PORTB &= ~(1<<PB1); PORTB |= (1<<PB2);}
22
23
void Mstop(void)  //aus
24
{ PORTB &= ~(1<<PB1); PORTB &= ~(1<<PB2);}
25
26
--------------------------------------------------
27
28
int main (void) {            
29
 
30
   DDRB = (1 << PB0);
31
 
32
  Mvor();
33
34
  setPWM(0);
35
36
  for(uint8_t i=0; i<255; i=i+5)
37
  {
38
    setPWM(i);
39
  }
40
41
  setPWM(255);  
42
43
   return 0;                 
44
}

Würd mich freuen, wenn ihr mir ein paar Denkanstöße geben könntet, für 
mich ist dat alles noch Neuland :D,

Vielen Dank im Vorraus,

Gruß Olli

von STK500-Besitzer (Gast)


Lesenswert?

In der Schleife "überfährst" du konstant den Wert, den du gerade 
eingestellt hat. Du mußt deine Schleife an deine PWM-Routine koppeln, 
also erst einen neuen Wert in OCR schreiben, wenn der vorherige erreicht 
wurde.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.