Några småsaker bara.
Är det en felskrivning att det står 245 i rubriken?
Använder själv TinyPicBL med PIC18 och enda ändring att BR är satt till 19200.
För snabbare programmering under test av BL - sätt "MaxFlash" till ett lagom lågt värde så att den inte hamanr sist i minnet.
PIC18LF452 USART ett rent elände att få igång - några id
-
- Inlägg: 138
- Blev medlem: 12 maj 2007, 11:24:24
- Ort: Sjöbo
Hej du kan prova dessa .hex filer, jag har kört den som är till för 19200 i min simulator och den funkar.
Den andra borde funka.
http://www.tunetech.se/hex/18F452_USART ... _20Mhz.HEX
http://www.tunetech.se/hex/18F452_USART_19200_20Mhz.HEX
/Tripp
Den andra borde funka.
http://www.tunetech.se/hex/18F452_USART ... _20Mhz.HEX
http://www.tunetech.se/hex/18F452_USART_19200_20Mhz.HEX
/Tripp
kör du PIC18F452 så skulle du kunna använda VDI funktionen i MPlab för att göra rätt inställningar i dina register.
Tools->Visual Initializer
där får du upp ditt chip och kan dra ut rutor på vad du vill använda. i ditt fall USART. (funkar för andra perferienheter oxå)
I din ruta kan du sedan ställa in baudrate flowcontrol osv (om du ställt in oscillarotn rätt) och därefter trycka
Visual initializer-> code generation
Då genereras alla inställningar automatiskt. Ganska lätt att dubbelkolla med sin egen kod. Om nått inte stämmer kan man ju kolla upp. Antingen har du eller det automatiska programmet gjort fel.
Den genererade koden är ganska rörig, men det går att tyda
Det kanske kan hjälpa till att göra rätt inställning.
Tools->Visual Initializer
där får du upp ditt chip och kan dra ut rutor på vad du vill använda. i ditt fall USART. (funkar för andra perferienheter oxå)
I din ruta kan du sedan ställa in baudrate flowcontrol osv (om du ställt in oscillarotn rätt) och därefter trycka
Visual initializer-> code generation
Då genereras alla inställningar automatiskt. Ganska lätt att dubbelkolla med sin egen kod. Om nått inte stämmer kan man ju kolla upp. Antingen har du eller det automatiska programmet gjort fel.
Den genererade koden är ganska rörig, men det går att tyda

Det kanske kan hjälpa till att göra rätt inställning.
OK. Så om jag har förstått rätt så är det den senaste koden du har modifierat ?
Om man tittar lite i den så ser du att "write" rutinen börjar med en "movwf EECON1".
Om du sedan kollar direkt före "rcall write" så laddas W med ett lämpligt värde för EECON1, "movlw b'10000100'".
Du måste göra på ett liknande sätt (fast med rätt bitar, i denna kod *skrivs* till *EEPROM*, om jag ser rätt, du vill *läsa* från *Flash*,
så det är minst tre bitar som ska vara tvärtom mot denna kod...).
D.v.s att innan du läser med TBL instruktionerna så måste EECON1 sättas korrekt (har jag sagt det förrut ??).
Det är VÄLDIGT förvånande att du inte med ett ord har nämnt EECON1 än !!
Me, om det bara är *USART* du vill testa, varför strula till med med TBL
instruktionerna alls ???
> En instruktion, tar den en klockcykel?
4 clockcykler = 1 instruktionscykel.
1 instruktion = 1 eller 2 instruktionscykel.
Se databladet (tabellen med samanfattningen av instruktionerna) för detaljer.
Så vid 20 Mhz så har du 5 instruktionscykel per mikrosekund. D.v.s 5 enklare instruktioner (de som inte ändrar PC, programräknaren).
Om man tittar lite i den så ser du att "write" rutinen börjar med en "movwf EECON1".
Om du sedan kollar direkt före "rcall write" så laddas W med ett lämpligt värde för EECON1, "movlw b'10000100'".
Du måste göra på ett liknande sätt (fast med rätt bitar, i denna kod *skrivs* till *EEPROM*, om jag ser rätt, du vill *läsa* från *Flash*,
så det är minst tre bitar som ska vara tvärtom mot denna kod...).
D.v.s att innan du läser med TBL instruktionerna så måste EECON1 sättas korrekt (har jag sagt det förrut ??).
Det är VÄLDIGT förvånande att du inte med ett ord har nämnt EECON1 än !!
Me, om det bara är *USART* du vill testa, varför strula till med med TBL
instruktionerna alls ???
> En instruktion, tar den en klockcykel?
4 clockcykler = 1 instruktionscykel.
1 instruktion = 1 eller 2 instruktionscykel.
Se databladet (tabellen med samanfattningen av instruktionerna) för detaljer.
Så vid 20 Mhz så har du 5 instruktionscykel per mikrosekund. D.v.s 5 enklare instruktioner (de som inte ändrar PC, programräknaren).
- Illuwatar
- Inlägg: 2256
- Blev medlem: 10 november 2003, 14:44:27
- Skype: illuwatar70
- Ort: Haninge
- Kontakt:
Det verkar vara ett jordproblem - jag tog Tripps testfiler och laddade på mitt kort. Samma problem som med mina tills jag drog fram oscilloskopet.
När jag ansluter skopets jordklämma till kortets jord börjar allt bara att fungera. Jag får texten "Minimig" snyggt utskrivet i terminalen. Tar bort klämman - det slutar att fungera.
Kortet körs från en "väggvårta" av switchad typ, så ingen chassijord finns tillgänglig.
Så, problemet har inget med flashminnen att göra, utan det är något relaterat till strömförsörjningen.
Edit: En permanent lösning på problemet är infört - en trådbit på ca 1 cm. Så lång är skillnaden mellan framgång och totalt misslyckande...
Allt detta pga spegelvända symboler från Protel (och en miss i pinheadern).
Så jag körde på TinyBoot, laddade på Tripps testprogram via bootloadern och allt bara fungerade - precis som jag ville. Dags att ge sig på Dennis kod och få ihop resten av bygget.
När jag ansluter skopets jordklämma till kortets jord börjar allt bara att fungera. Jag får texten "Minimig" snyggt utskrivet i terminalen. Tar bort klämman - det slutar att fungera.
Kortet körs från en "väggvårta" av switchad typ, så ingen chassijord finns tillgänglig.
Så, problemet har inget med flashminnen att göra, utan det är något relaterat till strömförsörjningen.
Edit: En permanent lösning på problemet är infört - en trådbit på ca 1 cm. Så lång är skillnaden mellan framgång och totalt misslyckande...
Allt detta pga spegelvända symboler från Protel (och en miss i pinheadern).
Så jag körde på TinyBoot, laddade på Tripps testprogram via bootloadern och allt bara fungerade - precis som jag ville. Dags att ge sig på Dennis kod och få ihop resten av bygget.