PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche Werte der Fusebits für rnControl Testprogramm mit avr



thdrummer
24.02.2007, 22:52
Hallo,

ich habe mit avrdude erfolgreich das fertig kompilierte Testprogramm auf mein rn-Control übertragen, um damit die Funktionen zu testen.
Nach dem Aufspielen des Testprogrammes verhält sich das Board so:
LED 7 und 8 leuchten dauernd, alle anderen LEDs sind aus.
Wenn ich die Resettaste drücke, ertönen 3 Beeps (tief hoch tief),
wenn ich Tasten T1,2,3,5 drücke, kommt nur ein einmaliger, tiefer Beep.
Wenn Taste 4 gedrückt wird, kommen 2 Beeps (tief hoch).

Jedoch sollte mit dem Testprogramm ein Lauflicht ablaufen, wenn man Taste 3 drückt, das ist bei mir jedoch nicht der Fall!

Die DIP Schalter sind alle auf ON und ich habe auf dem Board keine Jumper gesetzt.
Laut avrdude lauten bei mir die Fusebits:
Lowfuse: ef
Highfuse: d9

Wo könnte der Fehler liegen?

Vielen Dank schonmal für eure Hilfe,

Gruß
thdrummer

tippo
24.02.2007, 23:18
Am Anfang war es bei mir auch so, hatte zu wenig Spannung anliegen.

mfG
Tippo

thdrummer
25.02.2007, 09:07
Hallo Tippo,

danke für deine schnelle Antwort! Ich hatte bisher nur 7,5 V anliegen, verwende nun ein 12-V-Netzteil, jedoch funktioniert es immer noch nicht - das Verhalten bleibt genau gleich!
GIbt es weitere Ansätze um den Fehler einzugrenzen / zu beheben?

Danke schonmakl,

Gruß
thdrummer

tippo
25.02.2007, 09:18
Naja, mehr Probleme hatte ich noch nicht damit.
Programm 1 und 4 gibt etwas über die RS232 schnittstelle aus (1 Batteriespannung, 4 Messwerte an Port A). Evtl. schließt du mal den Rechner an die RS232 Schnitstelle an, startest ein Terminal in Bascom und drückst die 1 am Board.
Für Programm 2 müssten Motoren angeschlossen sein, das könntest du auch noch ausprobieren.

Die Fusebits sind übrigens im RN-Control handbuch erklärt, allerdings für Bascom glaub ich.

mfG
Tippo

thdrummer
25.02.2007, 09:30
Danke für die schnelle Antwort!
Programm 3 müsste ja ein Lauflicht erzeugen, das macht es aber nicht - und normal ist es AFAIK nicht, dass die LEDs 7 und 8 dauerleuchten.
Im RN-Control Handbuch sind die Fusebits nur für Bascom erklärt, leider. Da mein USB-Programmer (USBASP von http://www.fischl.de/usbasp/ ) jedoch nicht von Bascom unterstützt wird, kann ich es mit BASCOM nicht testen...
Am Ausgang für die Motoren liegt keine Spannung an - egal welche Taster ich drücke!
Bin langsam echt am verzweifeln, da ich nicht mehr weiterweiss.

Hat evtl. noch jemand anderes einen nützlichen Tip für mich?

Danke Tippo für diene Hilfe!

Gruß
thdrummer

thdrummer
25.02.2007, 10:53
Ich habe nun ein einfache C-Testprogramm auf das Board überspielt, hier der Quelltext:


#include <stdio.h> //c standard i/o lib
#include <stdlib.h> //c standard lib
#include <avr/io.h> //i/o functions definitions of registers and ports
#include <avr/delay.h> //delay function
#include <avr/signal.h> //needed when interrupts via SIGNAL used

#define LEDs PORTC

// Hält Program für ca. k * 100 Millisekunden an
void wait(int k) {
for (int i=0; i<k*10; i++) {
_delay_ms(10);
}
}

int main(void) //function main is ALWAYS called first
{
DDRC = 0xff; // LEDs als Ausgang

int i;

while(1) { // Lauflicht
for (i=0; i<8; i++) {
LEDs |= _BV(i);
wait(10);
LEDs &= LEDs ^ _BV(i);
}

}

return 0;
}


So funktioniert das Lauflicht, jedoch immer noch nicht mit der fertig kompilierten Version des rncontrol-Testprogramms - woran kann das noch liegen?

Frank
26.02.2007, 15:06
Wenn du RN-Control als Fertigmodul gekauft hast, dann ist der COntroller bereits korrekt programmiert, auch alle Fusebits korrekt gesetzt. Es muss also auf Anhieb alles funktionieren.
Solltest du es selbst aufgebaut haben, dann wäre es am einfachsten wenn DU die Fusebits mit Bascom entsprechend setzt. Da abe rdein ISP dafür wohl nicht geht, hilft ein Blick in unser RN-Wissen RN-Board FAQ:
https://www.roboternetz.de/wissen/index.php/RN-Board_FAQ-Seite

Dort findest du auch folgendes Bild zu Pony:

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=152.gif

Sollte die Tasten nicht korrekt funktionieren, könnte es sein das du einige Jumpe rfalsch gesetzt hast. Achte hier genau auf die Anleitung, wichtig ist zum Beispiel die Referenzspannung. Wenn da salles stimmt dann könnte es sein das deine Widerstände höhere Toleranzen als vorgesehn besitzen, du musst dann die "select case"Anweisung im Quellcode ändern.
Schau dir dazu folgenden Codeausschnitt des Testprogrammes an:


'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Tastenabfrage() As Byte
Local Ws As Word

Tastenabfrage = 0
Ton = 600
Start Adc
Ws = Getadc(7)
' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
If Ws < 500 Then
Select Case Ws
Case 400 To 450
Tastenabfrage = 1
Ton = 550
Case 330 To 380
Tastenabfrage = 2
Ton = 500
Case 260 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 90 To 130
Tastenabfrage = 5
Ton = 350
' Case Else
' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
End Select
Sound Portd.7 , 400 , Ton 'BEEP

End If


Dort gibt es einige auskommentierte Zeilen die du aktivieren solltest. Bei einer Taste wird dann ein Wert übe rdie RS232 Schnittstelle ausgegeben. Du solltest schaun ob dieser Wert in dem CASE-Bereich liegt. Bei taste 5 müsste der Wert beispielsweise zwischen 90 und 130 liegen. Ist das nicht der Fall, müsstest du die CASE Werte anpassen.

Wenn das alles auch nicht klappt, ja dann musst du den Aufbau deines Boardes nochmal komplett durchgehen, irgendwo muss da noch ein Wurm drin stecken. Genau mit Doku vergleichen. Zum C Programm kann ich nix sagen da ich C nicht nutze.

gruß
Frank