PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WinAVR: Erste Schritte in C bei Roboterboard



VictoriaOnSnow
29.04.2004, 23:35
Hallo,

ich würde gern mal C mit WinAVR ausprbieren. Kennt jemand ein Tutorial oder Getting-Started mit dem man zügig erste Tests ausführen kann?

Ideal wäre eine Anleitung ähnlich wie "Der erste Test" im RNBRFA-Manual.

Ist es so viel schwieriger oder zeitaufwendiger in C statt Basic zu Programmieren?

:-s

Gruss

VictoriaOnSnow

Kjion
30.04.2004, 09:28
ich würde gern mal C mit WinAVR ausprbieren. Kennt jemand ein Tutorial oder Getting-Started mit dem man zügig erste Tests ausführen kann?
http://www.kreatives-chaos.com/index.php?seite=avrgcc


Ideal wäre eine Anleitung ähnlich wie "Der erste Test" im RNBRFA-Manual.
In der nächsten Zeit kommen auch noch Bespielprogramme dazu. Ich hatte bis jetzt allerdings keine Zeit dafür...


Ist es so viel schwieriger oder zeitaufwendiger in C statt Basic zu Programmieren?
Überhaupt nicht. Ich finde es sogar viel komfortabler, andere Leute halt nicht. Das ist immer Ansichtssache ;-)

MfG Kjion

Frank
30.04.2004, 11:25
Die Sprache ist nicht schwieriger, aber die teils merkwüdigen Kürzel der Bibliotheken und Strukturen sind schon etwas nervig. Aber alles Ansichtssache, jedenfalls Einstieg in Bascom ist sicher etwas schneller möglich.
Aber wenn kjion oder/und jemand anders einige C-Beispiele für das Board schreibt, dann kann der Einstieg auch einfacher werden.

Gruß Frank

VictoriaOnSnow
30.04.2004, 22:13
Kjion, danke für den Tip www.kreatives-chaos.com. Ich werde es so bald wie möglich ausprobieren.

Ich kenne C eigentlich sehr gut. Was mir fehlte, war der schnelle Einstieg in den Compiler, ISP, Simulator, Debuggen usw. ähnlich wie im Bascom-Tutorial.

Victoria onSnow

Fengel
08.05.2004, 19:00
Ja so ein paar C Bespiel würden mich auch interessieren. Da ich schon länger mit C/C++ Programmiere will ich meine ersten versuchen dann auch lieber in C machen als mit Basic.
was halt ganz interessant wäre Bsp für:
Motoransteuerung
Sensor auswertung
A/D Wandler
Timer

Man findet halt überall nur Basic Schnipsle kaum was in C

gruß Fengel

Dino Dieter
08.05.2004, 23:27
Hallo Fengel

An was für Beispiele hast du denn gedacht?

Habe auch erst vor ein paar Wochen mit WINAVR angefangen und weiß noch sehr genau, wie schwer es am Anfang war. Jetzt ist aber aber viel schöner, als mit Bascom, weil du genau weißt, was der uC macht oder nicht macht.

Sag mal Bescheid, was du ungefähr haben möchtest, dann schaue ich mal. an uC kann ich anbieten 4433, Meg8, 2313, Tiny 26

MFg
Dieter

Frank
08.05.2004, 23:34
Schön wäre es wenn jemand die kleinen Demos hier in C umschreiben könnte. Denke das würde schon guten Einstieg ermöglichen:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=919

Dino Dieter
08.05.2004, 23:46
Hallo Frank

OK Ich fange Morgen mal langsam an. Habe jedoch kein so ein Board, sollte aber kein Problem sein. Testprogramm 2 und 7 werde ich Morgen mal machen.

MFG
Dieter

Fengel
09.05.2004, 10:23
Schön wäre es wenn jemand die kleinen Demos hier in C umschreiben könnte. Denke das würde schon guten Einstieg ermöglichen:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=919

Ja genau ich gleube das würde die Sache schon mal verständlicher machen :)

Dino Dieter
09.05.2004, 13:47
Hallo

Hier mal das Testprogramm 2 in C für den WINAVR.

Ist ziemlich einfach gehalten.

Bei Fragen einfach fragen.

MFG
Dieter

Frank
09.05.2004, 13:55
Danke! Sieht gut aus, ob es geht konnte ich noch nicht testen, denke aber schon. Wäre aber gut wenn u es als Quelltext postest, dann kann man gleich rein schaun! EInfach hier rein kopieren, markieren und dann CODE-Button klicken

So:


/*
Testprogramm 2

Aufgabe:
Testen vom MAX232 und RS232 Schnittstelle indem
das Wort Hallo und eine Zahl an die RS232 sendet!
Unter Windows kann man das mit dem Hyperterminal
anzeigen lassen (9600 Baud einstellen)
Noch einfacher kann man es anzeigen, wenn man
in der Bascom Entwicklungsumgebung unter Tools
TERMINAL EMULATOR aufruft (oder Modem Symbol klickt)

Chip Mega 16
Takt 8.00 MHz
Stand: läuft
Größe 396 Byte
Version 1.0
Verfasser: Dino Dieter */

#include <avr/io.h>
#include <stdlib.h>

//Deklaration der Funktionen
void putc(char c); //Ausgabe eines Zeichen über RS232
void puts(char *s ); //Ausgabe eines Strings über RS232
void init(void); //Einstellen der Hardware des uC

// Baudrate berechen zum einstellen des UART. Lassen wir vom Complier berechnen
#define F_CPU 8000000 /* 8.000 */
#define UART_BAUD_RATE 9600 /* 9600 baud */
#define UART_BAUD_SELECT (uint)(F_CPU/(UART_BAUD_RATE*16l)-1)

//Definition einiger Datentypen, reine Geschmacksache
#define uchar unsigned char // 1 Byte ohne Vorzeichen 0 bis 255 erlaubt
#define uint unsigned int // 2 Byte ohne Vorzeichen 0 bis 65535 erlaubt

// Sendet ein Zeichen über die UART Schnittstelle (RS232) +++++++++++++++++++++
void putc(char c)
{
while( (UCSRA & 1<<UDRE) == 0 ); //warten, bis UDR leer ist
UDR = c; //und ausgeben, den Rest macht der uC alleine
}

//Sendet einen String über die UART Schnittstelle (RS232) +++++++++++++++++++++
void puts(char *s )
{
while( *s ) //Schleife solange wiederholen bis 0 kommt. Strings in
//C werden immer mit einer 0 abgeschlossen.
putc( *s++ ); //ein Zeichen ausgeben und nächste Zeichen einstellen
}


//Einstellen der Hardware des AVR +++++++++++++++++++++++++++++++++++++++++++++
void init(void)
{
// UART einstellen
UCSRB = (1<<TXEN); // Senden erlauben
//Baud rate einstellen für 9600 BAUD bei 8 MHz
UBRRH = UART_BAUD_SELECT >> 8; // oberen 4 Bits schreiben
UBRRL = UART_BAUD_SELECT; // unteren 8 Bits schreiben
}

//Hauptprogramm, hier startet der uC ++++++++++++++++++++++++++++++++++++++++++
void main (void)
{

init(); // Hardware einstellen gehen
uint i; // Variable bekannt machen
uchar s[10]; // Variable für itoa, zum umrechnen einer INT in einen String

for(;;) // Endlosschleife
{
itoa( i, s, 10 ); // i umrechen in String für die Ausgabe. Ergebnis steht
// dann in s.
puts("Hallo "); // Text senden
puts(s); // Zahlen ausgeben
puts( "\n\r" ); // Zeilenumbruch senden -- >> neue Zeile
i++; // i um 1 erhöhen. i++ --> i = i + 1
}

}

VictoriaOnSnow
09.05.2004, 20:27
Hallo zusammen,

ich habe den Einstieg geschaft. Es läuft bei mir das auf C umgeschriebene Testprogamm 4 plus eine Geschwindigkeits-Steuerung über den PC.

Auf dem PC läuft ein kleines Visual-Basic Programm, das über die serielle Schnittstelle Kommandos an Board abschickt. Zur Zeit gibt es Komandos zum Einstellen der Schrittmotoren-Geschwindigkeit von 0 bis 1023 und ein Kommando zum Stoppen der Motoren. Weitere sind geplant. Debug-Informationen werden vom Board zurück an den PC-geschickt und im Visual-Basic Steuerprogramm angezeigt.

Ich habe verwendet:
- WinAVR-20040404 - C-Compiler
- AVR Studio 4 - Simulator
- Roboter-Board Version 1.2
- PonyProg2000 - zum Programmieren
- http://www.kreatives-chaos.com/index.php?seite=avrgcc - Tutorial sehr zielstrebig, genau, das was ich zum Einstieg brauchte
- Visual Basic 6.0 - PC-Steuerprogramm

Ich wäre schon bereit, die Basic-Programme nach C zu portieren. Ich müsste nur sicher sein, dass nicht noch mehrere Leute daran arbeiten. Dann könnte ich mir den Aufwand sparen. Frank, hast du den Überblick, ob schon jemand daran arbeitet? Kannst du das koordinieren?

Gruss

VictoriaOnSnow

Dino Dieter
09.05.2004, 21:58
Hallo

Testprogramm 2 ist ja oben schon, Testprogramm 7 mache ich Morgen.

Hatte gerade noch ein wenig mit meinem RC5 Sender auf einem Tiny12 zu tuen.

Poste dein Programm doch mal, man lernt ja nie aus.

MFG
Dieter

VictoriaOnSnow
09.05.2004, 23:32
Poste dein Programm doch mal, man lernt ja nie aus.

Hier ist mein erstes C-Programm zum Ansteuern 2-er Getriebemotoren (ich hatte im Posting zuvor versehendlich von Schrittmotoren gesprochen).

Über das beigefügte Windows-Programm kann man die Geschwindigkeit über die serielle Schnittstelle steuern. Die Bedienung sollte keiner grossen Erläuterung bedürfen:

RnbFraCtrl.exe starten
ComPort auswählen und einschalten
Geschwindigkeit einstellen (muss eine Zahl zwischen 0 und 1023 sein)
Button Senden schreibt den Befehl zum Board.
Read liest den Empfangspuffer aus und schreibt den Inhalt auf den Bildschirm.

Über Feeback und Verbesserungsvorschläge würde ich mich freuen.

VictoriaOnSnow

Frank
09.05.2004, 23:53
Ich wäre schon bereit, die Basic-Programme nach C zu portieren. Ich müsste nur sicher sein, dass nicht noch mehrere Leute daran arbeiten. Dann könnte ich mir den Aufwand sparen. Frank, hast du den Überblick, ob schon jemand daran arbeitet? Kannst du das koordinieren?


Soweit ich weiß bastelt an den C Programmen sonst keiner mehr. Denke alle betreffenden lesen hier mit so das ihr Euch gegenseitig absprechen könnt.

Wäre nur schön wenn ihr den Qeullcode als Text posten könntet, dann kann man schneller rein schaun. Einfach ist Posting als Text!

Aber ich kann ja später alle C-Sourcen nochmal zusammentragen und geordnet in einen Thread stellen. Wäre schön wenn hier im Thread immer kurz bestätigt wird welches Beispiel ausgetestet wurde.
Es bleibt Euch natürlich vorbehalten auch weitere Demos als die 8 ersten von mir zu basteln, falls Euch nochwas einfällt.

Frank
09.05.2004, 23:57
Aber sehe schon, das mit Quellcode ist in C etwas schwierig wegen der Header Files usw. na dann vielleicht doch als ZIP wenn es zu viele Files werden.