18F46k22 CCP1 en/of 2 en Seriele communicatie

Beste Allemaal,

Ik heb een print met een 18F46k22 waarbij CCP1 en CCP2 in gebruik zijn. Ik programeer met Proton Picbasic. Nu probeer ik op een hardware manier (HSEROUT) en op een Software manier (SEROUT op verschillende poorten) communicatie op te zetten. Dit werkt indien ik het register CCP1CON of CCP2CON op nul zet maar dit moet natuurlijk aan staan om CCP1 en 2 te gebruiken. De communicatie werkt wel als ik CCP3 of 4 definieer maar die vrijheid heb ik niet (meer) omdat de print al gemaakt is en die poorten voor andere dingen al verbonden zijn.

Heeft hier iemand ervaring mee en een oplossing voor het feit dat als je ccp1 of 2 gebruik een seriele communicatie niet mogelijk is? Ik kan hier in het datasheet niets van vinden dat dit het geval zou zijn.

PS, ik heb deze vraag ook op proton picbasic geplaatst en indien ik daar een antwoord krijg zal ik dat hier ook updaten. Voor mij was dit een hele grote, zeer onaangename verassing en ik blijf hopen dat ik toch ergens iets fout doe...

Iemand een idee?

Arco

Special Member

CCP heeft toch niets met serieele communicatie te maken?

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Nee, dacht ik ook niet. Daarom ben ik verbaasd en verrast. Maar het wegstrepen en testen ben ik er uiteindelijk achter gekomen dat het zo is dat hij zonder de CCP1 of CCP2 te activeren wel werkt en met 1 van die twee actief, niet werkt.... Was even ene onverwachtte zoektocht en daarom zit ik hier nu met een pcb die niet werkt als ik dit niet opgelost krijg.... Had ik dit geweten voordat ik de pcb liet maken dan was het gemakkelijker geweest maar wie verzint dit....:)

Arco

Special Member

Op welke pinnen doe je dat? (HSEROUT kun je natuurlijk niet zomaar op een willekeurige pin gebruiken)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Inderdaad, de Hserout natuurlijk pin C.6. De Serout geprobeerd op ook C.6 en nog op een poort b (ik dacht 6). In ieder geval een andere poort om te testen of het toch niets had te maken met iets tussen de ccp poorten en pin C.6. Ook op die b poort werkte SEROUT goed zonder en niet met de CCP definitie..
Ter info, de B.6 is bij deze pic ook niet de transmit poort van de 2de uart ofzo. Dit is D.6 en D.7... B.6 was gemakkelijk testen omdat het in de programeerheader zit want het is de Programeer poort en die gebruik ik ook nergens anders voor dus zit niet aan iets anders op de pcb behalve de (bereikbare) programeerheader.

Arco

Special Member

Ik heb nog nooit problemen gehad (assembly/mikrobasic)
Kan zijn dat Picbasic/(H)SEROUT een timer gebruikt, en dat dat toevallig dezelfde is als die de CCP module gebruikt.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Op 27 december 2017 13:12:09 schreef amateurtje:
Ik heb een print met een 18F46k22 waarbij CCP1 en CCP2 in gebruik zijn. Ik programeer met Proton Picbasic. Nu probeer ik op een hardware manier (HSEROUT) en op een Software manier (SEROUT op verschillende poorten) communicatie op te zetten. Dit werkt indien ik het register CCP1CON of CCP2CON op nul zet maar dit moet natuurlijk aan staan om CCP1 en 2 te gebruiken.

Zeer vreemd, zelf gebruik ik deze toepassing ook wel eens. Dan stuur ik via de com-poort data naar de controller om het PWM signaal te bedienen, gaat zonder probleem.

Heeft hier iemand ervaring mee en een oplossing voor het feit dat als je ccp1 of 2 gebruik een seriele communicatie niet mogelijk is? Ik kan hier in het datasheet niets van vinden dat dit het geval zou zijn.

Heb je het wel eens via RSIN en RSOUT geprobeerd?

Was even ene onverwachtte zoektocht en daarom zit ik hier nu met een pcb die niet werkt als ik dit niet opgelost krijg....

Je doet je nickname op deze manier wel eer aan. :)
Altijd zoiets van te voren uitzoeken en testen.

Als je haar maar goed zit, GROETEN LAMBIEK.

Je doet je nickname op deze manier wel eer aan.
Altijd zoiets van te voren uitzoeken en testen.

Jaja, ik weet het maar je kunt niet altijd 100% testen, vooral niet als alle onderdelen al lang werken. niemand van jullie had ook bedacht dat deze dingen niet samen kunnen. Ik weet niet hoe complex jullie breadboards zijn maar dan ben je weken aan het testen als je alles wilt testen. Zoveel tijd heb ik er ook niet voor dus neem je af en toe een risico en nu lijkt het erop dat ik een risico heb genomen waar ik echt niet omheen kom. Maar ja, ik blijf ook maar een werktuigbouwer he.....:)

Maar ik heb RSOUT geprobeerd. Er lijkt wel wat leven in te zitten maar mega onstabiel. Heel even gaat de goede data over maar al snel niet meer.... Ik heb een pullup weerstand erbij gezet (was als reserve op print voorzien) maar dit wil niet helpen..

Ik kan nog steeds niet goed het verschil vinden tussen RSOUT en SEROUT. De laatste die dit vroeg op het forum werd verwezen naar de manual maar daar kan ik het ook niet in vinden... De ontvanger werkt wel met (H)Serin.... Dus ik weet niet of RSOUT kan zenden naar een HSERIN commando.. In de ontvanger zou kan ik eigenlijk niet wijzigen omdat die op veel meer dingen gebruikt wordt die dus wel goed werken (apparaten die dus CCP4 en 5 gebruiken ipv 1 & 2)

Zeer vreemd, zelf gebruik ik deze toepassing ook wel eens. Dan stuur ik via de com-poort data naar de controller om het PWM signaal te bedienen, gaat zonder probleem.

Ik neem aan dat je dit schrijft omdat je dan ook pwm op ccp1 of 2 gebruikt (en niet hoger?). Ook bij een 18f46k22 of de 26k22 of gelijkwaardige pic?

[Bericht gewijzigd door amateurtje op donderdag 28 december 2017 09:35:44 (11%)

Arco

Special Member

je kunt de uart toch ook direct aansturen? (zonder de library functies)
Zo ingewikkeld is dat nou ook weer niet...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Hoi Arco,

Behalve met de software en hardware commando's heb ik geen idee hoe ik serieel moet versturen. Bij ontvangen kun je het hardware register uitlezen maar daar houd mijn kennis wel op... En dat ga ik ook niet vinden in de picbasic manual denk ik. Dus als je weet hoe dat moet dan hoor ik het graag...

Arco

Special Member

Staat in de datasheet. Als het alleen Tx is, is het helemaal simpel.
Baudrate instellen, de uart aanzetten, en wachten tot de transmit buffer (TXREGx) leeg is.
Dan een karakter erin proppen en wachten tot buffer weer leeg is.

Het valt toch op dat tegenwoordig veel mensen met microcontrollers werken, zonder een idee te hebben van wat er nu eigenlijk gebeurt... ;)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Op 28 december 2017 09:17:50 schreef amateurtje:
Jaja, ik weet het maar je kunt niet altijd 100% testen,....

Was een geintje hé. :)

Ik weet niet hoe complex jullie breadboards zijn maar dan ben je weken aan het testen als je alles wilt testen. Zoveel tijd heb ik er ook niet voor dus neem je af en toe een risico en nu lijkt het erop dat ik een risico heb genomen waar ik echt niet omheen kom.

Ja, en toch zou ik persoonlijk zulke dingen testen. Zeker het seriële gebeuren.

Maar ja, ik blijf ook maar een werktuigbouwer he.....:)

Dat zegt niets.

Maar ik heb RSOUT geprobeerd. Er lijkt wel wat leven in te zitten maar mega onstabiel.

Hou je daar wel een kleine pauze tussen, anders werkt het inderdaad niet lekker.

Ik kan nog steeds niet goed het verschil vinden tussen RSOUT en SEROUT. De laatste die dit vroeg op het forum werd verwezen naar de manual maar daar kan ik het ook niet in vinden...

Je kunt toch de verschillen zien? Heb je de Proton help file al eens bekeken?

Ik neem aan dat je dit schrijft omdat je dan ook pwm op ccp1 of 2 gebruikt (en niet hoger?).

Ja, dan gebruik ik inderdaad CCP1 of CCP2.

Ook bij een 18f46k22 of de 26k22 of gelijkwaardige pic?

Nee, wel bij een ander type pic. Maar dat moet niet uitmaken als het goed is.

Als je haar maar goed zit, GROETEN LAMBIEK.

Hoi Lambiek, dat een andere pic niet uit zou moeten maken lijkt me ook niet maar alle logica ontgaat mij toch op dit moment.... de seriele communicatie is uitentreuren getest en werkend geweest.... en de ccp1 en 2 ook... Enkel niet samen... Maar ja.... Anyway, kunnen we lang en kort over discussieren maar feit is dat ik dit dus niet samen gestest heb. Ik heb een aantal bewezen concepten samengevoegd en twee daarvan blijken dus niet samen te werken....Of ik doe er iets fout mee... Dat wil ik niet uitsluiten..

Ik kan eens kijken of rsout met wat meer tussenpauze werkt. Dit doe ik nu inderdaad in iedere doorgang van het script....hopelijk morgen meer...

Arco

Special Member

Zoals gezegd, gebruikt serout niet dezelfde timer als de pwm functie?
(kun je in de assembly file nakijken)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Bedankt Lambiek!!

Waarom het bij ccp1 en ccp2 misgaat en bij een andere ccp definitie niet, weet ik niet maar het werkt nu.(ter overvloede, de andere ccp definiëring heb ik ook in deze opstelling geprobeerd enkel zaten er geen inkomende signalen aan...) In eerste instantie met Hrsout maar nu ook met HSerout... De pauzes hielpen.. Het verzenden gaat ook nog eens 1 x als de loop sluit. Bij mijn andere apparaatje gaat de loop ook een stukje langzamer vanwege een hoop print commandos (plus ik maak dus daar gebruik van ccp4 en 5). in deze opstelling zitten ook nog eens een stuk minder print commandos. Door een tellertje mee te laten lopen om te pauzeren heb ik weer contact. scheelt weer grasduinen in de assembly file. Ook natuurlijk dank aan Arco voor het meedenken.

Lambiek

Special Member

Op 29 december 2017 11:21:32 schreef amateurtje:
Waarom het bij ccp1 en ccp2 misgaat en bij een andere ccp definitie niet, weet ik niet maar het werkt nu.(ter overvloede,....

Dat is mooi, scheelt je een nieuwe print ontwerpen.

Op 29 december 2017 02:05:22 schreef Arco:
Zoals gezegd, gebruikt serout niet dezelfde timer als de pwm functie?

Als je CCP1 of CCP2 gebruikt maak je toch geen gebruik van bijv. timer 0, 1, of 2? Of mis ik nu ook iets?

Als je haar maar goed zit, GROETEN LAMBIEK.
Arco

Special Member

CCP (ook PWM) gebruikt altijd een van de timers. Alleen de nieuwere pics hebben een speciale eigen dedicated timer voor elk pwm kanaal...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Oké, zo ver ben ik er nooit ingedoken. Weer wat geleerd.

Als je haar maar goed zit, GROETEN LAMBIEK.