Not logged in. · Lost password · Register

Andreas F.
Member since Oct 2013
6 posts
Subject: 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
Member since May 2011
79 posts
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)
Member since May 2011
331 posts
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.
Member since Oct 2013
6 posts
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)
Member since May 2011
331 posts
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.
Member since Oct 2013
6 posts
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
Member since May 2011
41 posts
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.
Member since Oct 2013
6 posts
Danke dir, jetzt funktioniert auch die 7-Segment-Anzeige. Für das Wissen dahinter muss ich wohl die Vorlesung abwarten.
Andreas F.
Member since Oct 2013
6 posts
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
Member since May 2011
41 posts
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.
Member since Oct 2013
6 posts
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)
Member since May 2011
331 posts
Anscheinend gibt es Zuhause  massiver Probleme mit der Libspicboard. Ich werde versuchen das morgen einzugrenzen.
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O :troll:
Special characters:
Go to forum
Powered by the Unclassified NewsBoard software, 20110527-dev, © 2003-8 by Yves Goergen