Go Down

Topic: win-avr-programm in das arduino-ide korsett reinbringen, wie...? (Read 1 time) previous topic - next topic

funkheld

hallo,  wie bringt man die main.c und motor.h in der arduino-ide jetzt zum laufen?
wo muss was geändert werden? wie sieht die ordnerverteilung aus? zum compilieren mit der arduinio-ide?

gruss

main.c:
Code: [Select]

#include <avr/interrupt.h>
#include <stdlib.h>
#include <stdint.h>
#include <util/delay.h>
#include "motor.h"

int main(void)
{
   
sei();

robby_init();

_delay_ms(200);

m_wert=180;

robby_vor();
_delay_ms(1000);
robby_aus();
_delay_ms(1000);

robby_zurueck();
_delay_ms(1000);
robby_aus();
_delay_ms(1000);

robby_links();
_delay_ms(1000);
robby_aus();
_delay_ms(1000);

robby_rechts();
_delay_ms(1000);
robby_aus();


}


motor.h :
Code: [Select]

uint8_t m_wert;

void robby_init(void)
{
DDRD= (1<<PD4) | (1<<PD5);
DDRC= (1<<PC2) | (1<<PC3) | (1<<PC4) | (1<<PC5);
TCCR1A =(1<<WGM10)|(1<<COM1A1)|(1<<COM1B1);
TCCR1B |= (1<<CS12);
}

void re_vor(void)
{
PORTC &= ~(1<<PC4);
PORTC |= (1<<PC5);

OCR1A = m_wert;
}

void re_zur(void)
{
PORTC |= (1<<PC4);
PORTC &= ~(1<<PC5);

OCR1A = m_wert;
}

void li_vor(void)
{
PORTC &= ~(1<<PC2);
PORTC |= (1<<PC3);

OCR1B = m_wert;
}

void li_zur(void)
{
PORTC |= (1<<PC2);
PORTC &= ~(1<<PC3);

OCR1B = m_wert;
}


void robby_aus(void)
{
OCR1A = 0;
OCR1B = 0;
}

void robby_vor(void)
{
re_vor();
li_vor();
}

void robby_zurueck(void)
{
re_zur();
li_zur();
}

void robby_links(void)
{
re_vor();
li_zur();
}

void robby_rechts(void)
{
re_zur();
li_vor();
}


sth77

#1
Feb 10, 2011, 09:22 am Last Edit: Feb 10, 2011, 09:42 am by sth77 Reason: 1
Du musst nicht wegen jedem bisschen einen neuen Thread aufmachen. Warum lässt du das nicht in dem anderen, wenn es doch um das gleiche Thema geht? Das sind doch (soweit ich das gesehen habe) nur einfache Portzuweisungen und der Konfiguration der PWM in der motor.h
Wer jetzt dein Ursprungsthema nicht kennt, weiß beispielsweise nicht, dass es um die Ansteuerung eines L293D geht. Und was ich im anderen Thread schon bemängelte: Wer Hilfe sucht, muss ausreichend Informationen geben!

Eine Umstrickerei 1:1 ist meiner Meinung nach wenig sinnvoll. Schreib das Ding doch einfach neu, ohne die Zwänge der alten Programmierung zu übernehmen. :D Und wenn du erste Ansätze in der Arduino-Programmierung hast, helfen dir sicher viele weiter.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

funkheld

#2
Feb 10, 2011, 11:26 am Last Edit: Feb 10, 2011, 11:29 am by funkheld Reason: 1
man, das habe ich selber geschrieben für den winavr. dort läuft es.

mir geht es darum  wie es umgestrickt wird, weil es doch beim arduino  keine "main" gibt und wo was reingehört im kopf der "pde" damit es dort lauffähig.

kann man hier auch mal eine vernünftige antwort erwarten, oder werden meine fragen nicht richtig gelesen ?

es geht es hier um die "PWM", ob ein "l293d" oder eine andere motorplatine ohne l293d angesteuert wird, ist ja jetzt egal.

gruss

thias

#3
Feb 10, 2011, 11:37 am Last Edit: Feb 10, 2011, 11:39 am by thias Reason: 1
Statt einer main-Funktion wird bei Arduino die Kombination setup() und loop() verwendet. Alles was am Anfang einmalig ausgeführt werden soll, schreibt man in die setup-Funktion, danach wird das, was in loop drin steht, so lange wiederholt, bis Strom weg oder reset.

Du hast ja in deiner main keinen loop. Also werden die Aktionen einmal ausgeführt und dann passiert nichts mehr, wenn ich das richtig verstehe. Also schreibst du diesen Code in setup() rein und lässt loop() leer (oder lässt dort pin13 blinken).

Gruss
Matthias

funkheld

#4
Feb 10, 2011, 11:51 am Last Edit: Feb 11, 2011, 12:00 pm by funkheld Reason: 1
jup thias, danke.

jetzt läuft auch der roboter.

kann man denn in der setup()  eine while-schleife lassen?

gruss

Go Up