- LiFePO4 Speicher Test         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: RN-Control und AVR STudio/GCC probleme

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2010
    Ort
    Löhne
    Alter
    32
    Beiträge
    17

    RN-Control und AVR STudio/GCC probleme

    Anzeige

    LiFePo4 Akku selber bauen - Video
    ich habe anscheinend ein Problem mit meinem avr-gcc compiler
    ich versuche das mitgelieferte testprogramm in das RN-Control (1.4) zu laden, aber als quittung bekomme ich nur ein "stotteriges" Piepen

    habe schon versucht mit MFile ein Makefile hin zu bekommen aber auch das hat mir nichts gebracht, natürlich habe ich auch das mitgelieferte Makefile getestet...ohne erfolg

    Ich habe mal versucht das Bascom Testproject in den Controller zu laden, das klappt, aber ich würde lieber in C schreiben

    Hat jemand einen Vorschlag woran es sonst liegen könnte?

    Danke und Gruß
    Lineage

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Wenn man annimmt das das Programm selbst OK ist, dann könnten es falsche Fusebits sein oder Quarzfrequenz nicht richtig angegeben.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2010
    Ort
    Löhne
    Alter
    32
    Beiträge
    17
    ich gehe davon aus das das programm selbst in ordnung ist, da es das vom roboternetz als demo vorgestellte programm ist und daher sicherlich schon genug tests durchlaufen hat.

    mit den fusebits/Quarzfrequenz da muss ich nachher mal nach gucken

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2010
    Ort
    Löhne
    Alter
    32
    Beiträge
    17
    also anscheinend funktioniert das programm richtig....nur viel zu langsam
    ...für einen 16MHz quarz habe ich in der configuration eine frequenz von 16000000 (16Millionen) Hz eingetragen und die CKSEL Bits auf Ex. Crystal High Freq. und Startup 16K CK + 64 ms eingestellt.
    hoffe das ist so richtig...wenn nicht wäre ich für eine korrektur dankbar

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Fuses sollten so richtig sein.
    Wenn ich das jetzt richtig lese, dann funktioniert das Bascom Demo?
    Wenn das so ist, dann müsste doch das C-File eine Make haben. Das kenne ich allerdings nicht.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2010
    Ort
    Löhne
    Alter
    32
    Beiträge
    17
    ja die Bascom Demo läuft
    und ja zu dem C-File gibt es eine Make....aber mit der läufts auch nicht
    ich habe das gefühl das ich probleme mit dem Takt habe oder das der controller irgendwo immerwieder festhängt und das dadurch alles stark ausgebremst wird (die Töne die aus dem Piepser kommen sind sehr lang und haben dafür eine etwas zu niedrige frequenz (hab ich nicht gemessen) auch alles andere ist sehr langsam (lauflicht etc.)
    deshalb kann ich mir nicht so richtig erklären wo das problem zu suchen ist

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Wenn das BASCOM-Demo läuft, müssen die Fuses OK sein.
    Kannst du das C-File hier mal herein stellen.
    Womit kompilierst du? AVR-Studio?
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2010
    Ort
    Löhne
    Alter
    32
    Beiträge
    17
    ja AVR studio (winavr GCC plugin)

    Code:
    /*
    ###################################################
    RNControl-Test.c
    
    Aufgabe:
     Dieses Testprogramm testet gleich mehrere Eigenschaften auf dem Board
     Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
     Taste 1: Zeigt Batteriespannung über RS232 an
     Taste 2: Angeschlossene Motoren beschleunigen und abbremsen
     Taste 3: Einige Male Lauflicht über LED´s anzeigen. Am I2C-Bus
              darf in diesem Moment nichts angeschlossen sein
     Taste 4: Zeigt analoge Messwerte an allen Port A PIN´s über RS232 an
     Taste 5: Zeigt digitalen I/O Zustand von PA0 bis PA5 an
    
    
     Sehr gut kann man aus dem Demo auch entnehmen wie Sound ausgegeben wird,
     wie Tasten abgefragt werden und wie Subroutinen und Funktionen angelegt werden
    
    Autor: Georg Richter
    #######################################################
    */
    
    
    
    
    
    #include <stdlib.h> 
    #include <avr/io.h>
    #include "rncontrol.h"
    
    
    
    
    
    /*### Variablen ###*/
    const float referenzspannung = 0.0048828125;	//Referenzwert zur Multiplikation mit den Werten der Analogports (0...1023), um auf die Voltzahl zu kommen (0...5). Ergibt sich aus 5/1024.
    uint16_t analog;								//Variable für jeweils an einem Analogport gemessenen Wert, um nicht für eine Ausgabe mehrere Messungen durchführen zu müssen.
    char wort[5];									//Zahlen (Integer und Float) müssen vor der Ausgabe per RS232 in ASCII-Zeichen konvertiert werden, für die ein Speicher benötigt wird.
    
    
    
    
    
    /*### Batteriespannung ###*/
    void Batteriespannung(void)
    {
    	sendUSART("Analog6 = "); analog = adcwert(6);
    	utoa(analog, wort, 10);	sendUSART(wort); sendUSART(" = ");
    	dtostrf(analog*referenzspannung, 11, 8, wort);	sendUSART(wort); sendUSART(" Volt\r\n");
    	dtostrf(adcwert(6)*referenzspannung*5.66804, 11, 8, wort);
    	sendUSART("Batteriespannung = "); sendUSART(wort); sendUSART(" Volt\r\n\n\n\n");
    	waitms(300);
    }
    
    
    
    
    
    /*### Motortest ###*/
    void Motortest(void)
    {
    	Mlinksvor();
    	Mrechtsvor();
    
    	setPWMlinks(0);
    	setPWMrechts(0);
    	waitms(40);
    
    	for(uint8_t i=0; i<255; i=i+5)
    	{
    		setPWMlinks(i);
    		setPWMrechts(i);
    		waitms(40);
    	}
    
    	setPWMlinks(255);
    	setPWMrechts(255);
    	waitms(40);
    
    	for(uint8_t i=255; i>0; i=i-5)
    	{
    		setPWMlinks(i);
    		setPWMrechts(i);
    		waitms(40);
    	}
    
    	setPWMlinks(0);
    	setPWMrechts(0);
    
    	Mlinksstop();
    	Mrechtsstop();
    	waitms(300);
    }
    
    
    
    
    
    /*### LED-Lauflicht ###*/
    void Lauflicht(void)
    {
    	for(uint8_t i=0; i<10; i++)
    	{
    	setportcoff(0);
    	waitms(150);
    	setportcon(0);
    	setportcoff(1);
    	waitms(150);
    	setportcon(1);
    	setportcoff(2);
    	waitms(150);
    	setportcon(2);
    	setportcoff(3);
    	waitms(150);
    	setportcon(3);
    	setportcoff(4);
    	waitms(150);
    	setportcon(4);
    	setportcoff(5);
    	waitms(150);
    	setportcon(5);
    	waitms(300);
    	}
    }
    
    
    
    
    
    /*### Analogwerte ###*/
    void Analogwerte(void)
    {
    	//Alle internen Pullups an, ausgenommen Port A3 und Batteriespannung/Taster (A6 und A7). Da A3 aber nun auch nicht auf GND liegt, ergibt sich ein "Rauschen", der Wert variiert mit jeder Messung mehr oder weniger stark.
    	setportaon(0);
    	setportaon(1);
    	setportaon(2);
    	setportaoff(3);
    	setportaon(4);
    	setportaon(5);
    	
    	for(uint8_t i=0; i<8; i++)
    	{
    		analog = adcwert(i);																		//Messung Analogport [i]
    		utoa(i, wort, 10); sendUSART("Analog"); sendUSART(wort); sendUSART(" = ");				//Ausgabe: "Analog[i] = "
    		utoa(analog, wort, 10);	sendUSART(wort); sendUSART(" = ");									//Ausgabe: "[Analogwert] = "
    		dtostrf(analog*referenzspannung, 11, 8, wort);	sendUSART(wort); sendUSART(" Volt\r\n");	//AUsgabe: "[Reale Voltzahl] Volt[Umbruch]"
    	}
    	
    	sendUSART("\n\n\n");
    	waitms(300);
    }
    
    
    
    
    
    /*### Digitalwerte ###*/
    void Digitalwerte(void)
    {
    	//Einige interne Pullups an, andere aus -> gibt bei einigen "Rauscheffekt", mal misst er "high", mal "low" und mal irgendwas dazwischen "?".
    	//Ein kleines Stückchen Draht an einem der Ports wirkt wahre Wunder, was das Rauschen betrifft -> viel öfter "low" dabei als ohne. Nachteil: Die Tastenerkennung funktioniert kaum noch.
    	setportaoff(0);
    	setportaon(1);
    	setportaoff(2);
    	setportaon(3);
    	setportaon(4);
    	setportaon(5);
    	
    	for(uint8_t i=0; i<8; i++)
    	{
    		utoa(i, wort, 10); sendUSART("Digital"); sendUSART(wort); sendUSART(" = ");	//Ausgabe: "Digital[i] = "
    		if (PINA & (1<<PINA0)) {sendUSART("high");} else {sendUSART("low");}			//Abgleich des Zustandes - Ausgabe: "high" oder "low"
    		sendUSART("\r\n");
    	}
    	
    	sendUSART("\n\n\n");
    	waitms(300);
    }
    
    
    
    
    
    /*### Hauptschleife ###*/
    int main(void)
    {
    
    	/*###Initialisierungsphase###*/
    
    	//Pins bzw. Ports als Ein-/Ausgänge konfigurieren
    	DDRA |= 0x00;	//00000000 -> alle Analogports als Eingänge
    	DDRB |= 0x03;	//00000011 -> PORTB.0 und PORTB.1 sind Kanäle des rechten Motors
    	DDRC |= 0xFF;	//11111111 -> PORTC.6 und PORTC.7 sind Kanäle des linken Motors, Rest sind LEDs für Lauflicht
    	DDRD |= 0xB0;	//10110000 -> PORTD.4 ist PWM-Kanal des linken Motors, PORTD.5 des rechten
    	
    	//Initialisierungen
    	setportcon(0); setportcon(1); setportcon(2); setportcon(3); setportcon(4); setportcon(5); //LEDs ausschalten
    	setportdoff(7);	//Speaker aus
    	init_timer1();	//Initialisierung Timer für PWM
    	init_USART();	//USART konfigurieren
    
    
    
    	/*###Hauptschleife###*/
    	sound(6, 270); //Startmelodie
    	sound(8, 270);
    	sound(11, 270);
    	sound(7, 270);
    	waitms(10);
    	sound(7, 270);
    	sound(6, 270);
    	sound(11, 540);
    	sendUSART("\r\n\n\n"); //Sendet einen kleinen Begrüßungstext. "\r" setzt den Cursor wieder auf Zeilenanfag, "\n" beginnt dann die nächste Zeile
    	sendUSART("**** RN-Control 1.4 *****\r\n");
    	sendUSART(" \r\n");
    	sendUSART("Fuer C umgeschrieben Version des mitgelieferten\r\n");
    	sendUSART("Bascom-BASIC Beispielprogramms inkl. eigener\r\n"); 
    	sendUSART("Header-Datei mit wichtigen Grundfunktionen.\r\n");
    	sendUSART(" \r\n");
    	sendUSART("Vielen Dank an die RN-Community fuer ihre Hilfe!\r\n\n\n\n");
    
    
    
    	Mlinksstop();
    	Mrechtsstop();
    
    
    	setPWMlinks(0);
    	setPWMrechts(0);
    
    
    	while(1)
    	{
    		switch(button())
    		{
    			case 1: Batteriespannung(); break;
    			case 2: Motortest(); break;
    			case 3: Lauflicht(); break;
    			case 4: Analogwerte(); break;
    			case 5: Digitalwerte(); break;
    			default: break;
    		}
    	}
    	
    	
    	return 0;
    }
    wie gesagt der Demo Code aus der community

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Wenn du unter Project / Configuration Options die richtige Frequenz eingestellt hast, sollte alles stimmen. Zum testen fehlt mir noch die rncontrol.h .
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  10. #10
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    Zitat Zitat von Hubert.G
    ... Zum testen fehlt mir noch die rncontrol.h ...
    Beide Teile des Demoprogramms stehen hier im RNWissen.

    Als ich meine RNControl in Betrieb genommen hatte, habe ich zum Üben gleich zwei fabrikfrische mega32 dazubestellt. Original mit Demoprogramm und bootloader kopiert, Fuses ausgelesen und notiert, originalen Controller raus, fabrikfrischen m32 rein, Fuses nach dem Original gesetzt und den kopierten File geflasht. Lief einwandfrei - warum auch nicht. Danach das Demo compiliert und geflasht. Soweit ich weiß, lief das ebenfalls problemlos. Aufgefallen war mir, dass zwar das Demoprogramm brav publiziert wurde, aber von Fuses steht dort nix geschrieben - da darf man alleine durch . . . . . Wenn meine Notizen stimmen, war damals SPIEN (klar), BOOTSZ1 und BOOTRST gesetzt.

    Später gabs dann mal mit einem neuen m32 Probleme mit JTAGEN.
    Ciao sagt der JoeamBerg

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress