Configuration Bits im Nachhein durch das Programm verändern
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache C  |  Configuration Bits im Nachhein durch das Programm verändern « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Configuration Bits im Nachhein durch das Programm verändern  (Gelesen 1719 mal)
 
Baerchen96
Newbie
*
Offline Offline

Beiträge: 26


Profil anzeigen
« am: Juli 20, 2011, 09:58:11 »

Hallo an alle,

ich habe eine Bootloader in meinem Modul. Dazu brauche ich den Oscillator Mode XT.

Ist der durch möchte ich gerne auf XT w/PLL 4x umschalten können.

Das ganze soll in einem PIC 30F4012 passieren der mit 20MHz läuft.

Ziel ist es ohne den Bootloader zu ändern auf eine UART Speed mit 115kb zu kommen.

So komme ich nur bis 37kb.


Kann mir jemand schreiben wie ich das machen kann. Das es geht habe ich für andere Bits gelesen, nur das war ASM wie setze ich das in Michrochip C um?


Vielen Dank für Eure Hilfe

Gruß Thorsten
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #1 am: Juli 20, 2011, 20:26:29 »

Hi,

verstehe jetzt nicht was das Problem ist. Du kannst doch zu jeder Zeit das BRG Register für die Baudrate ändern, im Bootloader und später im Programm.

Gruß
Stefan
Gespeichert

Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #2 am: Juli 20, 2011, 21:47:09 »

Du willst mit Sicherheit nicht die Configuration Bits ändern, da diese im FLASH gespeichert sind und nach deren Änderung der Bootloader nicht mehr funktioniert wird (zumindest nicht mit der vorgesehenen UART Baudrate).

Du solltest stattdessen eine Clockswitch durchführen (die Möglichkeit dazu muß in den Configuration Bits - d.h. im Bootloader - eingestellt sein). Der C30 stellt für den Clockswitch die beiden „Funktionen“ __builtin_write_OSCCONL und __builtin_write_OSCCONH bereit.


Viele Grüße

Bernd
Gespeichert

Baerchen96
Newbie
*
Offline Offline

Beiträge: 26


Profil anzeigen
« Antworten #3 am: Juli 21, 2011, 07:57:36 »

Hallo,

das Problem ist, das ich mit eine 20MHz im BRG Register nur bis maximal 39kb komme. So steht es jedenfals im Datenblatt und ich habe es auch probiert.


Da der Bootloder schon im Chip ist und auch aufgelötet ist komme ich nicht mehr per Programmer an den Chip ohne ihn auszubauen. Die Programmierpins liegen auf einem CAN Chip, so das ich keine Verbindung bekomme.

Da es nicht nur eine Platine ist, suche ich nach einem Weg das ohne löten zu lösen.

Um nun höher zu kommen muss ich in der Configuratin des PICs von XT auf XT w/PLL 4x umschalten können.

Da die Baudrate des Loaders theoretisch einfach mal vier sein müsste (38,4kb), denke ich das ich ihn noch erreichen kann. Den die Clock Umschaltung  glaube ich alleine bringt es auch nicht, da ich den Takt brauche.

Habt Ihr Ideen?

danke Gruß Thorsten
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #4 am: Juli 21, 2011, 17:57:42 »

Hatte die dsPIC33F im Kopf, bei denen ein Clockswitch zwischen primärem Oszillator mit und ohne PLL möglich ist. Bei den dsPIC30F kann dieser (wenn überhaupt) nur bei Typen mit dem „Oscillator System Version 3“ fuktionieren (ich wüßte nicht, warum sonst für NOSC<2:0> die Einstellungen „PLL oscillator“ und „External oscillator“ vorhanden sind).

Der 30F4012 verfügt über ein „Oscillator System Version 2“. Damit kommen wir zum nächsten Problem: Die maximale Eingangsfrequenz für die PLL bei diesem PIC sind 10MHz. Mit 20MHz externem Takt ist es unwahrscheinlich, daß die PLL funktioniert.

Zitat
das Problem ist, das ich mit eine 20MHz im BRG Register nur bis maximal 39kb komme. So steht es jedenfals im Datenblatt und ich habe es auch probiert.

Die maximale UART-Bitrate (BRG = 0) ist F_CY / 16. Bei 20MHz externem Takt sind das 5MHz / 16 = 312500 Bit/s.


Um mit dem C30 die Configuration Bits zu ändern, sind die folgenden „Funktionen“ nötig: __builtin_write_NVM, __builtin_tblwth, __builtin_tblwtl



Viele Grüße

Bernd
Gespeichert

Baerchen96
Newbie
*
Offline Offline

Beiträge: 26


Profil anzeigen
« Antworten #5 am: Juli 22, 2011, 06:24:47 »

Hallo Bernd,

erst einmal Danke.

Ich bin zur Zeit mit meinem Latein am Ende! Mir sterben die PICs am laufenden Band.
Die Platine die ich benutze ist alt und bewährt. Der PIC läuft mit 20MHz ohne PLL und mit 19200kb. Alles ist super.


Da die Daten immer mehr werden wollte ich nur die Boudrate hoch setzen. Also PLLx4 eingeschaltet. Nach vielem hin und her geht es dann auch hinund wieder. Dann habe ich auch gelesen das es maximal 10MHz sein dürfen. Quarz getauscht und PLL 8x eingestellt.

Es läuft ein paar Sekunden dann ist der PIC tod! Es ist die SMD Version I/SO.

Nun aber das was ich nicht verstehe. Ich habe dann noch mal die Vorgänger Platine raus geholt, da kann die RS232 aus anderen Gründen( OPtokopler) nur 9600kb. Aber ich habe dort auch mal die PLLx4 eingestellt alles andere umgerechnet das die Einstellungen wieder passen.

der Chip läuft mit 20MHz und PLL4! Das er schneller läuft sehe ich an einem blinkt takt für eine LED wo ich die Zeit nicht umgestellt habe.

Jetzt die Frage, was mache ich falsch wo ist der Fehler? Wenn es mit 10MHz gehen würde würde ich das ganze ja verstehen aber so???

Habt Ihr Ideen

Danke


Thorsten
Gespeichert
Baerchen96
Newbie
*
Offline Offline

Beiträge: 26


Profil anzeigen
« Antworten #6 am: Juli 22, 2011, 14:34:38 »

So, ich weiß zwar immer noch nicht wie das alles schief gehen kann.

Laut Datenblatt solte es mit 10MHz gehen, so habe ich es verstanden. Nun habe ich mal alles auf 4MHz umgebuat und die PLL auf 16 gestellt. Alle Werte angepast nun läuft meine RS232 wie ich es mir wünsche. Das umschalten kann jetzt theoretisch entfallen. Dann muss ich nur alle alten Platinen umlöten, da ich das eh machen muss wegen dem geänderten Quarz ist das eben so.

So mit ist das Problem gelöst

Danke

Thorsten
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.042 Sekunden mit 18 Zugriffen.
 
Top! Top!