Nicht angemeldet. · Kennwort vergessen · Registrieren

Andreas F.
Mitglied seit 10/2013
6 Beiträge
Betreff: Problem beim Flashen
Hi,
ich hab ein kleines Programm geschrieben um meinen ISP zu testen. (Code steht unten) Über "Start Without Debugging" bekomm ich ein "Build succeeded." Danach hab ich über "Build Solution" die Hex-Datei gespeichert. Wenn ich die Datei dann aber auf den µC flashe passiert gar nichts. Ganz selten leuchtet die erste rote LED, aber wenn ich dann das selbe Programm nochmal auf den µC flashe sind wieder alle LEDs aus. Ich hab das Programm, das alle Funktionen des Spicboards testet, als Hex-Datei. Diese Datei lässt sich immer ohne Probleme flashen. Kann mir jemand helfen? Was mach ich falsch?

Programm: AVRStudio 5.1      ISP: Diamex-AVR


#include <led.h>

void wait(void){
    volatile uint16_t i = 0;
    for (i = 0; i < 50000; i++);
}

void main(void){
    while(1){
        sb_led_on(RED0);
        sb_led_on(BLUE0);
        sb_led_on(GREEN1);
        sb_led_on(YELLOW1);
        wait();       
        sb_led_off(RED0);
        sb_led_off(BLUE0);
        sb_led_off(GREEN1);
        sb_led_off(YELLOW1);
                wait();
    }
}
Raim
GSPiC-Guru
Mitglied seit 05/2011
79 Beiträge
Sieht eigentlich gut aus. Hast du wirklich die entsprechende .hex-Datei passend zur ausgewählten Konfiguration (Build/Debug) genommen?

Eine kurze Suche hat allerdings auch gesagt, dass dein ISP sich eigentlich auch normal im AVR Studio verwenden lassen sollte. Dann sollte "Start without Debugging" eigentlich auch reichen, nach entsprechender Auswahl in den Eigenschaften vom Projekt.
morty
SPiC-Meister
(Moderator)
Mitglied seit 05/2011
331 Beiträge
Ich hab das Problem auch schon gesehen und versuche herauszufinden woran das liegt. In einem Fall hat es geholfen sb_led_set_all_leds() zu verwenden. ICh bin auf jeden Fall dran und melde mich sobald ich weiß was es ist.
Andreas F.
Mitglied seit 10/2013
6 Beiträge
Ich hab meinen Code jetzt mit deinem Tipp geändert und es blinken alle 8 LEDs synchron. Es scheint daher, dass der Fehler nicht bei  "Build Solution" liegt. Danke schön für eure Hilfe.
Ist das ein Problem das nur bei bestimmten ISP bzw. zuhause auftritt oder auch an den Rechnern bei der Tafelübung?


#include <led.h>

void wait(void){
    volatile uint16_t i = 0;
    for (i = 0; i < 50000; i++);
}

void main(void){
   
    while(1){
        wait();
        sb_led_set_all_leds(0xFF);
        wait();
        sb_led_set_all_leds(0);
    }
}
morty
SPiC-Meister
(Moderator)
Mitglied seit 05/2011
331 Beiträge
Von den Rechnern aus den Cip habe ich das noch nicht gehört. Hat wahrscheinlich auch eher was mit dem Compiler zu tun, als mit dem ISP. Kannst du mir mal deine libspicboard.a an morty@cs.fau.de schicken?
Andreas F.
Mitglied seit 10/2013
6 Beiträge
Die Datei hab ich dir geschickt.
Bei der 7-Segment-Anzeige scheint es ein ähnliches Problem zu sein.
Die Befehle sb_7seg_showNumber() und  sb_7seg_showHexNumber()
haben bei mir beide für den Wert "99" nichts ausgegeben. Die 7-Segement-Anzeige bleibt einfach aus.
killermiller
Mitglied seit 05/2011
41 Beiträge
Die 7seg-Anzeige braucht Interrupts (die beiden Anzeigen werden gemultiplext, um Pins zu sparen, das passiert über timer, welche wiederum interruptbasiert sind). Deshalb brauchst du noch ein

#include <avr/interrupt.h>

um die entsprechenden Befehle verfügbar zu machen und ein

sei();
am Anfang deiner main(), um die Interrupts zu aktivieren (Set Interrupt).
Vorsicht, Interrupts haben Fallstricke und Spezialfälle, kommt noch in der VL...
Andreas F.
Mitglied seit 10/2013
6 Beiträge
Danke dir, jetzt funktioniert auch die 7-Segment-Anzeige. Für das Wissen dahinter muss ich wohl die Vorlesung abwarten.
Andreas F.
Mitglied seit 10/2013
6 Beiträge
Kann es sein, das auch der Befehl sb_adc_read() Probleme macht? Auf den Uni-Rechnern hab ich den µC über den Debugger mit "Start without Debugging" programmiert und es wurden verschiedene Werte von Poti und Photowiderstand erkannt. Beim gleichen Programm zuhause über den ISP geflashet erkennt der µC keine Änderung der analogen Signalgeber mehr.
killermiller
Mitglied seit 05/2011
41 Beiträge
Kann sein, ist aber unwahrscheinlich.
Noch unwahrscheinlicher ist es, dass es Unterschiede macht, wie (JTAG/ISP) du das Programm auf den µC spielst.

Woran merkst du, dass keine Änderungen mehr erkannt werden?
Selbes Board und identisches Programm wie in der Uni?
Nimm dir mal das "known-good" .hex-file aus der Uni mit und versuchs mit dem.
Andreas F.
Mitglied seit 10/2013
6 Beiträge
Es geht um das Snake-Programm, deswegen möcht und darf ich hier wahrscheinlich keinen Code posten.
Mit dem beschriebenen µC von der Uni konnte ich mit dem Poti die Anzahl der leuchtenden LEDs verändern und auch der Photowiderstand hatte Auswirkung auf die Geschwindigkeit.
Als ich zuhause mit Copy/Paste exakt den gleichen Code auf den µC geflasht hab, hat immer nur eine LED geleuchtet und die Geschwindigkeit war auch fix.
morty
SPiC-Meister
(Moderator)
Mitglied seit 05/2011
331 Beiträge
Anscheinend gibt es Zuhause  massiver Probleme mit der Libspicboard. Ich werde versuchen das morgen einzugrenzen.
Schließen Kleiner – Größer + Auf diesen Beitrag antworten:
Prüfcode: VeriCode Gib bitte das Wort aus dem Bild ins folgende Textfeld ein. (Nur die Buchstaben eingeben, Kleinschreibung ist in Ordnung.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O :troll:
Weitere Zeichen:
Gehe zu Forum
Powered by the Unclassified NewsBoard software, 20110527-dev, © 2003-8 by Yves Goergen