MAX233CPP niet meer dan 4800 baud

Hallo,

Ik heb een (vreemd) probleem. Ik heb een MAX233 aan een PIC16F877A, uitgang van de MAX233 aan pc waar een terminal programma op draait. op 1200, 2400 en 4800 baud werkt het prima , maar ga ik hoger dan zie ik uitsluitend bagger. Zelf niet af en toe iets goeds.

Ik heb met een logic analyser naar het signaal dat uit de PIC komt gekeken, dat is ook bij hogere baud rate in orde. Volgens mij komt er uit de MAX233 12V, daar kan mijn logic analyser niet tegen (is een el cheapo Salaea anlayser)

Ik heb de MAX 233 aangesloten zoals je dat op talloze afbeeldingen ziet.
Heb helaas maar één MAX233 liggen ,kan dus niet even een andere testen.

Iemand suggesties?

Alvast bedankt voor het meedenken.

Groeten,
Erik

Jochem

Golden Member

Heb je geen scoop?

Hoe is je PIC16F877A geklokt? Wel met een kristal? Hoe zijn je prescaler en andere baudrate settings?

Heb geduld: alle dingen zijn moeilijk voordat ze gemakkelijk worden.

Hallo Jochem,

PIC wordt met 20MHz crystal geklokt. Wat er uit de PIC komt is volgens mij ook het probleem niet. Ik zal nog een poging doen om iets zinnigs op mijn scope zichtbaar te krijgen, was in eerste instantie niet gelukt.

Heb je echt draadbrugjes gebruikt ipv van condesators?

GMT+1

Zet wel het TXSTA:BRGH bit op 1. (als die op '0' staat, wordt de afwijking bij hogere baudrates al gauw onacceptabel hoog)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Je zou het eens zonder pic kunnen proberen. Pin 2 & 3 op je Max233 doorverbinden.
Wat je intikt op je terminal prog krijg je dan terug geechoed. Zo kun je snel zien of het probleem in de Max233 etc zit.

@Progger, dit is een MAX233 in de datsheet staat inderdaad draadbruggetjes.
http://www.farnell.com/datasheets/45823.pdf?_ga=1.177904165....1480508606 Pagina 21.

[Bericht gewijzigd door 2N3055 op 3 januari 2017 16:26:10 (31%)]

@ARCO : Het lijkt erop dat de berekening in de UART.h die ik gevonden had niet klopt. Ik ga die aanpassen en een nieuwe poging wagen. Kwam er ook achter dat de pickit2 programmer los moet, die geeft ook een hoop zooi op de lijn.

Update 9600 werkt nu ook prima, sneller (nog) niet

Hier heb je 2 kleine programma's die zeker werken, een op 9600b en de andere op 19200b.

Een teller die elke halve seconde 5 ophoogt.

LDmicro user.

De waardes staan gewoon in de datasheet:
Als je exacte baudrates wilt, moet je een kristal met een makkelijk te delen frequentie nemen.

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

@ARCO: Je kunt ze ook berekenen, dan hoef je geen tabel te gebruiken.

@MGP : Kan de hex files helaas niet gebuiken in PICKIT2 programmer software , krijg de melding Device error - hex file not loaded. Lijkt er op dat dit niet voor een 16F877A is ?

Je kunt ze inderdaad berekenen, maar meestal niet echt zinvol. Kost veel meer geheugen dan gewoon een paar bytewaardes opslaan... ;)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Met "berekenen" bedoelt Dantos dat HIJ het uitrekent en dat in z'n firmware programmeert. Of des noods de berekening met constantes in z'n code propt en op de compiler vertrouwt om daar een vaste waarde van in het register te zetten.

Dat gezegd zijnde, vaak zijn die deeltallen in dat register iets van "1 minder dan...", en voor de beste resultaten moet je goed afronden en niet altijd naar beneden afronden. Kortom, er zijn zo al twee dingen die je bij die berekening fout kan doen waar ik zomaar aan denk. Als je iets te veel er naast zit kan het zomaar zijn dan de PC je niet meer lief vindt....

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 3 januari 2017 17:27:15 schreef Dantos:
.. Lijkt er op dat dit niet voor een 16F877A is ?

Sorry, is voor een 16F877 en ik kan dit niet veranderen, Bumblebee/Wisp628 hebben daar geen problemen mee, ik heb nog nooit problemen gehad.

LDmicro user.

Bumblebee/Wisp628 hebben daar geen problemen mee, ik heb nog nooit problemen gehad.

Ik moet nog ergens een WISP628 hebben liggen, ga er naar op zoek. Alvast bedankt voor de moeite!

Jochem

Golden Member

Op 3 januari 2017 17:27:15 schreef Dantos:
@MGP : Kan de hex files helaas niet gebuiken in PICKIT2 programmer software , krijg de melding Device error - hex file not loaded. Lijkt er op dat dit niet voor een 16F877A is ?

Een .hex-file bevat geen device informatie. Heb je in de programming software zelf wel het juiste device geselecteerd?

Op 3 januari 2017 16:57:38 schreef Dantos:
Update 9600 werkt nu ook prima, sneller (nog) niet

Het kan nog steeds helpen om antwoord te geven op mijn eerdere vraag:

Op 3 januari 2017 15:49:26 schreef Jochem:
Hoe zijn je prescaler en andere baudrate settings?

[Bericht gewijzigd door Jochem op 3 januari 2017 19:21:51 (32%)]

Heb geduld: alle dingen zijn moeilijk voordat ze gemakkelijk worden.

@ARCO : bedoel je OPTION_REGbits.PSA ? Die heb ik niet gezet, is dus 0?
Ook OPTION_REGbits.T0CS heb ik niets aan gedaan.

De rest :

SYNC = 0;
SREN = 0;
SPEN = 1;
TXIE = 0;
RCIE = 0;
TRISC7 = 1;
TRISC6 = 1;
CREN = 1;
TXEN = 1;

Als ik PICKIT 2 opstart herkend hij de PIC. Als ik daarna hex file load krijg ik de error al bij het openen. Als ik in MPLAB het hex file importeer en daarna probeer te gebruiken krijg ik ook een melding dat de devices niet overeenkomen.

Heb de laatste jaren allen met Arduino's gefrobeld, dus als ik stomme antwoorden geef of domme vragen stel, excuus. Bij Arduino hoef je je niet zo druk te maken over registers ed, dat heeft meestal al iemand voor je uitgezocht.

[Bericht gewijzigd door Dantos op 3 januari 2017 19:56:33 (19%)]

Op 3 januari 2017 19:41:25 schreef Dantos:
Bij Arduino hoef je je niet zo druk te maken over registers ed, dat heeft meestal al iemand voor je uitgezocht.

Kijk en dat uitzoeken is nou net het leuke werk bij de PIC-processoren...

[Bericht gewijzigd door Roches op 3 januari 2017 21:09:44 (17%)]

Domoticz en ESP8266, goede combo!!!

De Pickit controleert de adressen in de hexfile, en het aantal configuratiebytes wat geschreven wordt.
Als dat niet klopt weigert 'ie om te programmeren, omdat de boel niet klopt...

Ik bedoelde zoals gezegd het TXSTA:BRGH bit (in het TXSTA register dus)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
EricP

mét CE

Kijk en dat uitzoeken is nou net het leuke werk bij de PIC-processoren...

Het is maar wat je leuk vindt... Niet dat ik nou zo'n fan van dat Arduino taaltje ben, maar zelfs voor assembly zijn er wel macro's te vinden die het geneuzel voor je oplossen. In C helemaal...

En wat dan weer grappig is met macro's: Je kunt het spul lekker uit laten rekenen. De PC doet dat en in de code zie je alleen een paar constanten. Best handig...

Ik bedoelde zoals gezegd het TXSTA:BRGH bit

De baud rate staat op 19200
BRGH bit staat op 1, SPBRG op 64

Als ik de analyser data bekijk, ziet dat er aan de PIC kant goed uit.
Ga morgen een poging doen om de signalen van beide kanten van de MAX233 aan mijn scope te knopen.

EricP

mét CE

Laat dat pic-ding eens continu 0x55 uitspugen. Als die code een beetje efficiënt is, dan heb je op de output een blokgolf als ik het wel heb. Kun je gewoon met de scope kijken waar het spul de mist in gaat.

Laat dat pic-ding eens continu 0x55 uitspugen.

Dat is gelukt
Het lijkt er op dat de opgaande flank niet stijl genoeg is. (channel 1 is in, channel 2 is out). Bij lagere snelheid niet zo'n probleem, maar bij 19200 werkt het niet meer.

Ik gebruik die nooit, altijd de MAX232 of MAX3232. (condensators zijn tegenwoordig zo klein dat het geen probleem is)
Heb je wel een 10uF ontkoppeling aan de +5V en beide GND's aangesloten?

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Heb je wel een 10uF ontkoppeling aan de +5V en beide GND's aangesloten?

Heb een 1 uF ontkoppeling aangesloten. Staat zo in het datasheet. Zinvol om met een 10 uF te testen?

EricP

mét CE

Dat ding moet veel hogere snelheden kunnen halen. Ergens iets raars in je setup.

De doorverbindingen juist? Andere channel niet kort gesloten? +10V en -10V zijn er ook gewoon?? Geen rare capaciteit aan de uitgang? Zoals Arco al zegt... beide GNDs aangesloten?

Dat zijn zomaar wat dingen die in me op komen. Ding moet harder kunnen dan 19k2 bps.