AVR Butterfly; eigenes Programm funktioniert nicht

OP #1237460
Lesenswert?

Hallo,

ich will einfach einen Pin auf 1 stehen lassen, nachdem schon alles 
andere (RS232 Ausgabe) nicht funktioniert. Ich habe das AVR Programm 
genommen und alles rausgeschmissen, zur Zeit sieht main.c so aus:

void disable_JTAG(void)
{
  unsigned char sreg;

  sreg = SREG;
  cli();
  MCUCR |= ( 1 <<JTD );
  MCUCR |= ( 1 <<JTD );
  SREG = sreg;
}


int main(void)
{

    disable_JTAG();

  DDRF = ( 1 << PF4 );

    while (1)            // Main loop
    {
     PORTF |= (1<<PF4);
    }
}

Eigentlich müsste ich dabei am JTAG-Connector etwas messen können (Pin 1 
und 2 laut Schematic), aber da ist keine Spannung drauf.

Noch eine Frage: ich lade einfach mein Programm rein, ohne vorher zu 
resetten. AVRProg beschwert sich nicht und sagt, es wäre geladen. 
Probeweise habe ich auch die alte Software (Rev07) wieder so 
reingeladen, sie funktioniert dann auch.
Überall steht aber, man soll das Board vorher resetten??? Ich habe auch 
probiert, die Batterie raus- und reinstecken, der Port bleibt trotzdem 
auf 0.

Kann mir jemand helfen?

Vielen Dank, Alla
OP #1237649
Lesenswert?

Das Problem hat sich geändert:

erst lag es am Messgerät, hatte aus Versehen kein DC eingestellt. Jetzt 
zeigt er konstant Spannung an, allerdings auch wenn ich den Pin auf 0 
setze:

PORTF &= ~(1<<PF4);

Das mit Bootloader funktioniert beim Originalprogramm nicht einfach so, 
nur über "Jump to Bootloader", bei meinem Programm allerding ohne 
Probleme. Heisst es, dass evlt. das Programm gar nicht drin ist? Bzw. er 
ist noch im Bootloader?

LG Alla
Gast #1237685
Lesenswert?

wenn ich mich recht erinner kommt der butterfly erst in den bootloder 
mode, denn du einen reset gemacht hast und am joypad etwas drückst. ich 
vermute mal, dass dein programm gar nicht geladen wird. hast' ein oszi?
Moderator Persönliche Seite #1238132
Lesenswert?

avrdude bietet eine Option für "Exit Programming Mode", Parameternamen 
grade nicht erinnerlich. Damit wird das entsprechende Kommando an den 
Bootloader gesendet und das Nutzerprogramm gestartet. Das spart 
zumindest das Joystick-Up zum Start des Programms. Falls man in die 
eigene Anwendung noch ein Enter Bootloader einbaut (WD-Reset aktivieren, 
wartet bis WD auslöst), kann man sich zusätzliche Lötarbeit sparen und 
muss dennoch keinen Reset per Strom-an/Strom-aus auslösen, um in den 
BL-Modus zu gelangen.
OP #1238163
Lesenswert?

Aber diesen Enter Bootloader muss man ja auch irgendwie auslösen und ich 
brauche zur Zeit überhaupt keinen Joystick. Sonst müsste ich dann auch 
die Tasten auswerten und noch abfragen, ob es nicht aus Versehen 
gedrückt wurde.

So ist es ja im Originalprogramm gelöst, da bietet es sich an, bei einem 
Menü... Diesen WD habe ich da schon gefunden.

Wir wollen mit dem µC eigentlich nur ein paar Daten aus dem Lasersensor 
abfragen und die auf den PC weiterschicken. Ganz simpel und dafür will 
ich keinen Aufwand mit Joystick usw betreiben.

Trotzdem danke, für die anderen ist es sicherlich interessant.

LG Alla

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren