EFM8UB1 programmieren / Hello World

OP #4501857
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?
#4501906
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.
Gast #4502198
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.