Forum: Mikrocontroller und Digitale Elektronik EFM8UB1 programmieren / Hello World


von Sebastian V. (sebi_s)


Lesenswert?

Ich versuche gerade eine neue Platine mit einem EFM8UB10F16G in Betrieb 
zu nehmen. Leider hat Mouser realtive alte Chips geliefert, sodass ich 
den USB Bootloader, auf den ich mich eigentlich verlassen hatte, nicht 
benutzten kann (Bootloader funktioniert laut Errata erst mit Datecode 
1601 oder neuer). Mit der Application Note "AN127: Flash Programming via 
the C2 Interface" habe ich dann angefangen mein eigenes C2 
Programmiergerät zu bauen. Ich kann mittlerweile die Device ID auslesen, 
Device Erase durchführen und Flash lesen/schreiben. Ich habe dann mit 
dem Wizard von Simplicity Studio ein neues Projekt erstellt und um 
folgenden Code ergänzt:
1
SI_SBIT(LED0, SFR_P1, 1);                  // P1.1 LED0
2
3
int main (void)
4
{
5
  // Call hardware initialization routine
6
  enter_DefaultMode_from_RESET();
7
  
8
  LED0 = 0;
9
  while(1);             
10
}
Da wohl standardmäßig alle Pins als Open Drain konfiguriert sind sollte 
das Pin P1.1 auf Low ziehen. Nachdem ich das compilierte Programm in den 
Flash, beginnend bei Adresse 0x0000, geschrieben habe tut sich 
allerdings nichts an diesem Pin. Er wird immer noch durch einen Pullup 
auf High gehalten.

Hat jemand eine Idee warum es nicht funktioniert? Ist der Code 
unvollständig? Oder ist der Fehler eher in meinem Programmiergerät zu 
suchen?

von Jim M. (turboj)


Lesenswert?

Bei den C8051gern musste man immer erstmal den WDT ausschalten, der 
Watchdog war so scharf gestellt ab Reset das es nicht für eine XRAM 
Initialisierung mit Variablen gereicht hat. Schau mal ins Handbuch, bei 
den EFM8 dürfte es ebenso sein.

Besorge Dir lieber einen C2 Debugger oder eins der EFM8 STKs von Silabs. 
Du siehst ja selbst dass Du einen funktionierenden Debugger brauchst.

von Joerg L. (Firma: 100nF 0603 X7R) (joergl)


Lesenswert?

Der EFM8 hat wie die anderen Silabs 8051 einen Pin-Mux, der, wenn ich 
das richtig verstanden habe, vorher programmiert werden muß.

von Lothar (Gast)


Lesenswert?

Joerg L. schrieb:
> Der EFM8 hat wie die anderen Silabs 8051 einen Pin-Mux

Wenn man Simplicity Studio installiert gibt es mehrere Beispiele für 
EFM8UB1, auch ein Blinky. Eventuell mal das entsprechende HEX flashen.

Alternativ testweise ein neues Projekt in ASM ohne alles (keine 
Includes), das sollte immer gehen:

XBR2 EQU 0E3H

ORG 0

main:
  MOV  XBR2, #01000000B  ; cross-bar enable all pins
loop:
  CPL  P0.0      ; LED on P0.0

  MOV  R0, #0FFH
  CALL  delay
  JMP  loop

delay:
  MOV  R1, #10
loop1:
  MOV  R2, #0FFH
loop2:
  DJNZ  R2, loop2
  DJNZ  R1, loop1
  DJNZ  R0, delay
  RET

von Sebastian V. (sebi_s)


Lesenswert?

Lothar schrieb:
> Alternativ testweise ein neues Projekt in ASM ohne alles (keine
> Includes), das sollte immer gehen:

Danke das läuft! Hatte wohl vergesssen das Crossbar Enable Bit zu 
setzen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.